weblogic啟動不能鎖定AdminServer.lok的故障處理
weblogic的版本是10.3,作業系統是linux,安裝weblogic建立了一個weblogic使用者,由於使用root使用者修改了一些效能引數後,使用了root使用者啟動了一次weblogic,而原來啟動weblogic的指令碼是使用了weblogic使用者,在使用weblogic使用者啟動weblogic時出現了不能鎖定AdminServer.lok檔案的錯誤,具體錯誤資訊如下所示:
[weblogic@localhost ~]$ cd /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/bin
[weblogic@localhost bin]$ ./startWebLogic.sh . . JAVA Memory arguments: -Xms1024m -Xmx2048m -XX:CompileThreshold=8000 -XX:PermSize=256m -XX:MaxPermSize=512m . WLS Start Mode=Development . CLASSPATH=/home/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sys_manifes t_classpath/weblogic_patch.jar:/usr/java64/jdk1.6.0_45/lib/tools.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic_sp.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/ server/lib/weblogic.jar:/home/weblogic/Oracle/Middleware/modules/features/weblogic.server.modules_10.3.6.0.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/webservices.jar:/home /weblogic/Oracle/Middleware/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/home/weblogic/Oracle/Middleware/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar:/home/weblogic/Oracle/Mi ddleware/wlserver_10.3/common/derby/lib/derbyclient.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/xqrl.jar:.:/usr/java64/jdk1.6.0_45/lib:/usr/java64/jdk1.6.0_45/lib/dt.jar:/u sr/java64/jdk1.6.0_45/lib/tools.jar . PATH=/home/weblogic/Oracle/Middleware/wlserver_10.3/server/bin:/home/weblogic/Oracle/Middleware/modules/org.apache.ant_1.7.1/bin:/usr/java64/jdk1.6.0_45/jre/bin:/usr/java64/jdk1.6.0_45/bin:/ usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/java64/jdk1.6.0_45/bin:/home/weblogic/bin . *************************************************** * To start WebLogic Server, use a username and * * password assigned to an admin-level user. For * * server administration, use the WebLogic Server * * console at * *************************************************** starting weblogic with Java version: java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) Starting WLS with line: /usr/java64/jdk1.6.0_45/bin/java -client -Xms1024m -Xmx2048m -XX:CompileThreshold=8000 -XX:PermSize=256m -XX:MaxPermSize=512m -Dweblogic.Name=AdminServer -Djava.security.policy=/home/webl ogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Xverify:none -da -Dplatform.home=/home/weblogic/Oracle/Middleware/wlserver_10.3 -Dwls.home=/home/weblogic/Oracle/Middleware /wlserver_10.3/server -Dweblogic.home=/home/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToCon sole= -Dweblogic.ext.dirs=/home/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sysext_mani fest_classpath weblogic.Server bea -000362 server failed. Reason: There are 1 nested errors: weblogic.management.ManagementException: Unable to obtain lock on /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/tmp/AdminServer.lok. Server may already b e running at weblogic.management.internal.ServerLocks.getServerLock(ServerLocks.java:206) at weblogic.management.internal.ServerLocks.getServerLock(ServerLocks.java:67) at weblogic.management.internal.DomainDirectoryService.start(DomainDirectoryService.java:74) at weblogic.t3.srvr.ServerServicesManager.startService(ServerServicesManager.java:461) at weblogic.t3.srvr.ServerServicesManager.startInStandbyState(ServerServicesManager.java:166) at weblogic.t3.srvr.T3Srvr.initializeStandby(T3Srvr.java:881) at weblogic.t3.srvr.T3Srvr.startup(T3Srvr.java:568) at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:469) at weblogic.Server.main(Server.java:71)
出現這種情況的原因有兩種可能但不限於,一是執行kill -9殺死weblogic程式,一種是使用的不是安裝weblogic的使用者比如root使用者來啟動weblogic。這裡出現這種情況之前,既使用了kill -9殺死weblogic程式,也使用root使用者(而不是weblogic使用者)來啟動weblogic。
對於這種情況解決方法有以下三種
1.是修改AdminServer.lok檔案的許可權,讓weblogic使用者能鎖定它.
2.刪除AdminServer.lok檔案並重新使用weblogic使用者來啟動weblogic服務.
3.殺死仍然執行的服務程式並重新weblogic服務.
這裡我採用的是第一種解決方法:
[root@localhost bin]# cd /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/tmp/
[root@localhost tmp]# ls -lrt total 12 drwxr----- 5 weblogic bea 4096 Dec 29 19:09 _WL_internal drwxr----- 3 weblogic bea 4096 Mar 17 17:53 _WL_user -rw-r----- 1 weblogic bea 264 Apr 21 17:11 WebServiceUtils.ser -rw-r----- 1 root root 0 Apr 21 17:24 AdminServer.lok
[root@localhost tmp]# chown weblogic:bea AdminServer.lok
[root@localhost tmp]# ls -lrt total 12 drwxr----- 5 weblogic bea 4096 Dec 29 19:09 _WL_internal drwxr----- 3 weblogic bea 4096 Mar 17 17:53 _WL_user -rw-r----- 1 weblogic bea 264 Apr 21 17:11 WebServiceUtils.ser -rw-r----- 1 weblogic bea 0 Apr 21 17:24 AdminServer.lok
第二種方法,刪除AdminServer.lok檔案並重新使用weblogic使用者來啟動weblogic服務的操作示例如下:
1. 在user_projects/domains/目錄中移動或刪除它被鎖定的檔案,例如:
$ find . -name "*DAT" ./servers/AdminServer/data/store/diagnostics/WLS_DIAGNOSTICS000000.DAT ./servers/AdminServer/data/store/default/_WLS_ADMINSERVER000000.DAT
這裡要注意的是Unix或Linux是大小敏感的,在執行查詢時不要將"*DAT"寫成".dat",如果寫成".dat"可能刪除將?/security/SerializedSystemIni.dat檔案刪除。
2.刪除EmbeddedLDAP.lok and AdminServer.lok 檔案
[root@localhost tmp]rm -rf /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/tmp/AdminServer.lok [root@localhost tmp]rm -rf /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/data/ldap/ldapfiles/EmbeddedLDAP.lok
3.可以執行下面的指令碼來找出程式正在監聽的埠並透過kill -TERM將其殺掉。
#!/bin/ksh line='---------------------------------------------' pids=$(/usr/bin/ps -ef | sed 1d | awk '{print $2}') if [ $# -eq 0 ]; then read ans?"Enter port you would like to know pid for: " else ans=$1 fi for f in $pids do /usr/proc/bin/pfiles $f 2>/dev/null | /usr/xpg4/bin/grep -q "port: $ans" if [ $? -eq 0 ]; then echo $line echo "Port: $ans is being used by PID:\c" /usr/bin/ps -ef -o pid -o args | egrep -v "grep|pfiles" | grep $f fi done exit 0
4.重新啟動weblogic服務
[weblogic@localhost bin]$nohup ./startWebLogic.sh &
第三種方法,殺死仍然執行的服務程式並重新weblogic服務的示例操作如下:
1. 找到Managed Server的:
ps -ef | grep ManagedServer
2.使用kill -9 殺掉Managed Server程式:
kill -9
3. 重新啟動weblogic服務:
nohup ./startWebLogic.sh &
要注意的是startWeblogic.sh指令碼通常要使用nohup來啟動,這樣當使用者退出時shell才能保持繼續執行.
如果是Windows平臺
1. AdminServer.lok 檔案的缺儲存目錄是: C:\Oracle\Middleware\user_projects\domains\\servers\AdminServer\tmp\
2. 執行startWebLogic.cmd 命令來啟動weblogic服務
注意,如果AdminServer.lok 不能刪除可以在工作管理員中殺掉Weblogic服務的所有java.exe程式,再來刪除AdminServer.lok file。
在解決不能鎖定AdminServer.lok檔案之後我們再來使用weblogic使用者啟動weblogic服務:
[weblogic@localhost bin]$ ./startWebLogic.sh ...省略... an error occurred while initializing the Embedded LDAP Server. The exception thrown is java.lang.ClassCastException: com .octetstring.vde.backend.BackendRoot cannot be cast to com.octetstring.vde.backend.standard.BackendStandard. This may indicate a problem with the data files for the Embedded LDAP Server. If the problem is with the data files and it can not be corrected, backups of previous versions of the data files exist in /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers /AdminServer/data/ldap/backup bea -000362 server failed. Reason: There are 1 nested errors: java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot cannot be cast to com.octetstring.vde.backend.standard.BackendStandard at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:303) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
出現的錯誤是沒有許可權開啟事務檔案EmbeddedLDAP.tran,這還是許可權原因:
/home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/data/ ldap/ldapfiles/EmbeddedLDAP.tran (Permission denied)
修改EmbeddedLDAP.tran 檔案的許可權:
[root@localhost weblogic]# cd /home/weblogic/Oracle/Middleware/user_projects/domains/sbkwsjb/servers/AdminServer/data/ldap/ldapfiles/ [root@localhost ldapfiles]# ls -lrt total 164 -rw-r----- 1 weblogic bea 864 Dec 30 09:01 EmbeddedLDAP.index -rw-r----- 1 weblogic bea 204 Dec 30 09:01 EmbeddedLDAP.delete -rw-r----- 1 weblogic bea 146088 Apr 21 16:16 EmbeddedLDAP.data -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.twpos -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.trpos -rw-r----- 1 root root 0 Apr 21 17:24 EmbeddedLDAP.tran -rw-r----- 1 weblogic bea 0 Apr 21 19:26 EmbeddedLDAP.lok
從上面的資訊可以看到EmbeddedLDAP.tran檔案的許可權是root使用者所有,這是因為之前使用root使用者啟動過weblogic的原因,而現在是使用weblogic使用者來啟動weblogic
[root@localhost ldapfiles]# chown weblogic EmbeddedLDAP.tran
[root@localhost ldapfiles]# ls -lrt total 164 -rw-r----- 1 weblogic bea 864 Dec 30 09:01 EmbeddedLDAP.index -rw-r----- 1 weblogic bea 204 Dec 30 09:01 EmbeddedLDAP.delete -rw-r----- 1 weblogic bea 146088 Apr 21 16:16 EmbeddedLDAP.data -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.twpos -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.trpos -rw-r----- 1 weblogic root 0 Apr 21 17:24 EmbeddedLDAP.tran -rw-r----- 1 weblogic bea 0 Apr 21 19:26 EmbeddedLDAP.lok
[root@localhost ldapfiles]# chown weblogic:bea EmbeddedLDAP.tran
[root@localhost ldapfiles]# ls -lrt total 164 -rw-r----- 1 weblogic bea 864 Dec 30 09:01 EmbeddedLDAP.index -rw-r----- 1 weblogic bea 204 Dec 30 09:01 EmbeddedLDAP.delete -rw-r----- 1 weblogic bea 146088 Apr 21 16:16 EmbeddedLDAP.data -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.twpos -rw-r----- 1 weblogic bea 8 Apr 21 17:24 EmbeddedLDAP.trpos -rw-r----- 1 weblogic bea 0 Apr 21 17:24 EmbeddedLDAP.tran -rw-r----- 1 weblogic bea 0 Apr 21 19:26 EmbeddedLDAP.lok
再次使用weblogic使用者來啟動weblogic
[weblogic@localhost bin]$ ./startWebLogic.sh . . JAVA Memory arguments: -Xms1024m -Xmx2048m -XX:CompileThreshold=8000 -XX:PermSize=256m -XX:MaxPermSize=512m . WLS Start Mode=Development . CLASSPATH=/home/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sys_manifes t_classpath/weblogic_patch.jar:/usr/java64/jdk1.6.0_45/lib/tools.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic_sp.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/ server/lib/weblogic.jar:/home/weblogic/Oracle/Middleware/modules/features/weblogic.server.modules_10.3.6.0.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/webservices.jar:/home /weblogic/Oracle/Middleware/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/home/weblogic/Oracle/Middleware/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar:/home/weblogic/Oracle/Mi ddleware/wlserver_10.3/common/derby/lib/derbyclient.jar:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/xqrl.jar:.:/usr/java64/jdk1.6.0_45/lib:/usr/java64/jdk1.6.0_45/lib/dt.jar:/u sr/java64/jdk1.6.0_45/lib/tools.jar . PATH=/home/weblogic/Oracle/Middleware/wlserver_10.3/server/bin:/home/weblogic/Oracle/Middleware/modules/org.apache.ant_1.7.1/bin:/usr/java64/jdk1.6.0_45/jre/bin:/usr/java64/jdk1.6.0_45/bin:/ usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/java64/jdk1.6.0_45/bin:/home/weblogic/bin . *************************************************** * To start WebLogic Server, use a username and * * password assigned to an admin-level user. For * * server administration, use the WebLogic Server * * console at * *************************************************** starting weblogic with Java version: java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) Starting WLS with line: /usr/java64/jdk1.6.0_45/bin/java -client -Xms1024m -Xmx2048m -XX:CompileThreshold=8000 -XX:PermSize=256m -XX:MaxPermSize=512m -Dweblogic.Name=AdminServer -Djava.security.policy=/home/webl ogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Xverify:none -da -Dplatform.home=/home/weblogic/Oracle/Middleware/wlserver_10.3 -Dwls.home=/home/weblogic/Oracle/Middleware /wlserver_10.3/server -Dweblogic.home=/home/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToCon sole= -Dweblogic.ext.dirs=/home/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sysext_mani fest_classpath weblogic.Server
至此問題已經解決。
總結:出現不能鎖定AdminServer.lok檔案的錯誤的原因是,因為使用kill -9 殺掉了weblogic服務程式,或者使用不是安裝weblogic程式的使用者來啟動過weblogic所造成的。出現這種問題後,有三種解決方法:
1.是修改AdminServer.lok檔案的許可權,讓weblogic使用者能鎖定它.
2.刪除AdminServer.lok檔案並重新使用weblogic使用者來啟動weblogic服務
3.殺死仍然執行的服務程式並重新weblogic服務.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1589981/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WIN10主題設定後背景顏色不能鎖定怎麼處理Win10
- 【故障處理】ORA-600:[13013],[5001]故障處理
- 設定Oralce啟動和停止的批處理檔案
- 微服務的故障處理微服務
- linux故障處理Linux
- 故障分析 | Greenplum Segment 故障處理
- GPON網路故障如何處理?GPON網路故障處理流程
- ctfmon.exe是什麼程式?ctfmon.exe程式不能自動啟動的處理方法
- MySQL – 事務的啟動 / 設定 / 鎖 / 解鎖——入門MySql
- Oracle TX鎖的處理Oracle
- MySQL show processlist故障處理MySql
- Oracle更新Opatch故障處理Oracle
- teams登入故障處理
- weblogic 啟動指定字符集Web
- 【Weblogic】java.lang.UnsupportedClassVersionError問題處理方案WebJavaError
- hbase 故障的處理方案。 (轉載文章)
- NO.A.0001——zabbix常見故障的處理
- mysql 事務處理及表鎖定深入簡析MySql
- 因為修改windows管理員密碼導致sql server 2005不能啟動處理Windows密碼SQLServer
- mongodb 啟動故障MongoDB
- 線上故障處理手冊
- 處理weblogic、tomcat關閉不安全的http請求WebTomcatHTTP
- ORA-38029: 物件統計資訊已鎖定處理物件
- TS - 處理故障的一些通用方法
- Oracle Linux 7.1 透過systemctl將Weblogic設定為開機自啟動OracleLinuxWeb
- 【故障處理】TNS-04610問題
- GaussDB(分散式)例項故障處理分散式
- Oracle 10g RAC故障處理Oracle 10g
- ORA-01591錯誤故障處理
- 如何處理HTTP 503故障問題?HTTP
- Oracle 11.2.0.4 Dataguard兩則故障處理Oracle
- Mysql如何處理死鎖MySql
- 如何處理不穩定的自動化測試?
- WebLogic啟動報Could not get the server file lockWebServer
- 國產Dhyana禪定x86處理器開始啟動生產
- TiDB故障處理之讓人迷惑的Region is UnavailableTiDBAI
- 【Oracle】死鎖的產生與處理Oracle
- win10outlook不能同步怎麼設定_win10系統outlook不能同步如何處理Win10
- (四)SpringBoot啟動過程的分析-預處理ApplicationContextSpring BootAPPContext