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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【故障】“ORACLE使用者被鎖定”故障處理和分析Oracle
- 【WebLogic故障處理】一次嚴重的WebLogic記憶體洩漏問題處理過程Web記憶體
- 處理表鎖定的情況
- 求救,jbuilder7+weblogic6.1為何weblogic不能啟動UIWeb
- CRSD自動重啟和產生CORE DUMP的故障處理
- WIN10主題設定後背景顏色不能鎖定怎麼處理Win10
- 【故障處理】佇列等待之TX - allocate ITL entry引起的死鎖處理佇列
- idea外掛報錯導致不能啟動的處理技巧Idea
- 設定Oralce啟動和停止的批處理檔案
- Weblogic BEA-141281 unable to get file lock, will retry 故障處理Web
- oracle 11gR2 asm例項 不能啟動處理方法OracleASM
- [ORACLE轉載-故障處理]11g的ohasd無法隨機啟動Oracle隨機
- 【故障處理】一次RAC故障處理過程
- 【故障處理】DBCA建庫詭異問題處理--rac環境不能建立rac庫
- MongoDB故障處理MongoDB
- 微服務的故障處理微服務
- 故障分析 | Greenplum Segment 故障處理
- MySQL – 事務的啟動 / 設定 / 鎖 / 解鎖——入門MySql
- WEBLOGIC啟動JVM引數設定經驗WebJVM
- ctfmon.exe是什麼程式?ctfmon.exe程式不能自動啟動的處理方法
- GPON網路故障如何處理?GPON網路故障處理流程
- 【故障處理】ORA-600:[13013],[5001]故障處理
- 【故障處理】ORA- 2730*,status 12故障分析與處理
- linux故障處理Linux
- ora-故障處理
- 【問題處理】因ASM磁碟組空間不足導致資料庫例項無法啟動的故障處理ASM資料庫
- weblogic中例外處理的問題Web
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題Oracle資料庫
- Oracle TX鎖的處理Oracle
- Oracle啟動問題處理Oracle
- 【故障處理】ORA-12162 錯誤的處理
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題 (轉)Oracle資料庫
- 如何處理不能正常開啟 workflow mailer service 問題AI
- 線上故障處理手冊
- MySQL show processlist故障處理MySql
- teams登入故障處理
- Oracle更新Opatch故障處理Oracle
- 如何快速處理線上故障