CRS-0223 及crs 出現offline , unknown 狀態處理

dawn009發表於2014-02-20

轉載於:http://blog.chinaunix.net/uid-24612962-id-3786356.html
發生一下crs的服務出現offline 或 unknown 狀態的時候。我們可能看到的狀態如下: 


ecsrac01$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    ONLINE    ONLINE    ecsrac01   
ora....b2.inst application    ONLINE    UNKNOWN   ecsrac02   
ora....01.lsnr application    ONLINE    UNKNOWN   ecsrac01   
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01   
ora....c01.ons application    ONLINE    ONLINE    ecsrac01   
ora....c01.vip application    ONLINE    ONLINE    ecsrac01   
ora....02.lsnr application    ONLINE    UNKNOWN   ecsrac02   
ora....c02.gsd application    ONLINE    UNKNOWN   ecsrac02   
ora....c02.ons application    ONLINE    UNKNOWN   ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac02   

ecsrac02$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    OFFLINE   OFFLINE              
ora....b1.inst application    OFFLINE   OFFLINE              
ora....b2.inst application    OFFLINE   OFFLINE              
ora....01.lsnr application    OFFLINE   OFFLINE              
ora....c01.gsd application    OFFLINE   OFFLINE              
ora....c01.ons application    OFFLINE   OFFLINE              
ora....c01.vip application    OFFLINE   OFFLINE              
ora....02.lsnr application    OFFLINE   OFFLINE              
ora....c02.gsd application    OFFLINE   OFFLINE              
ora....c02.ons application    OFFLINE   OFFLINE              
ora....c02.vip application    OFFLINE   OFFLINE              

ecsrac02$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    OFFLINE   OFFLINE              
ora....b2.inst application    ONLINE    ONLINE    ecsrac02   
ora....01.lsnr application    OFFLINE   OFFLINE              
ora....c01.gsd application    OFFLINE   OFFLINE              
ora....c01.ons application    OFFLINE   OFFLINE              
ora....c01.vip application    OFFLINE   OFFLINE              
ora....02.lsnr application    ONLINE    ONLINE    ecsrac02   
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02   
ora....c02.ons application    ONLINE    ONLINE    ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac02   

解決方法:

例子1:

ecsrac01$crs_stat -t

Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    ONLINE    ONLINE    ecsrac01   
ora....b2.inst application    ONLINE    ONLINE    ecsrac02   
ora....01.lsnr application    OFFLINE   UNKNOWN   ecsrac01   
ora....c01.gsd application    OFFLINE   UNKNOWN   ecsrac01   
ora....c01.ons application    OFFLINE   UNKNOWN   ecsrac01   
ora....c01.vip application    OFFLINE   UNKNOWN   ecsrac01   
ora....02.lsnr application    ONLINE    ONLINE    ecsrac02   
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02   
ora....c02.ons application    ONLINE    ONLINE    ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac02   

ecsrac01$srvctl stop nodeapps -n  ecsrac01 
ecsrac01$srvctl start  nodeapps -n  ecsrac01 

ecsrac01$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    ONLINE    ONLINE    ecsrac01   
ora....b2.inst application    ONLINE    ONLINE    ecsrac02   
ora....01.lsnr application    ONLINE    ONLINE    ecsrac01   
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01   
ora....c01.ons application    ONLINE    ONLINE    ecsrac01   
ora....c01.vip application    ONLINE    ONLINE    ecsrac01   
ora....02.lsnr application    ONLINE    ONLINE    ecsrac02   
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02   
ora....c02.ons application    ONLINE    ONLINE    ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac02   
ecsrac01$

 例子2: 單獨啟動crs服務

ecsrac01$crs_stop  -f ora.ecsrac01.ons
ecsrac01$crs_stop  -f ora.ecsrac01.gsd
ecsrac01$crs_stop  -f ora.ecsrac01.vip
ecsrac01$crs_stop  -f ora.ecsrac01.LISTENER_ECSRAC01.lsnr
ecsrac01$crs_stop  -f ora.ecsdb.ecsdb1.inst

ecsrac01$crs_start  ora.ecsrac01.ons
ecsrac01$crs_start  ora.ecsrac01.gsd
ecsrac01$crs_start  ora.ecsrac01.vip
ecsrac01$crs_start  ora.ecsrac01.LISTENER_ECSRAC01.lsnr
ecsrac01$crs_start  ora.ecsdb.ecsdb1.inst

節點2 因為網路斷開一會,導致了vip漂移到節點1 。 監聽服務呈現offline 狀態 。
ecsrac02$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    ONLINE    ONLINE    ecsrac01   
ora....b2.inst application    ONLINE    ONLINE    ecsrac02   
ora....01.lsnr application    ONLINE    ONLINE    ecsrac01   
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01   
ora....c01.ons application    ONLINE    ONLINE    ecsrac01   
ora....c01.vip application    ONLINE    ONLINE    ecsrac01   
ora....02.lsnr application    OFFLINE   OFFLINE              
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02   
ora....c02.ons application    ONLINE    ONLINE    ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac01    

 檢視服務名稱:

ecsrac02$crs_stat
NAME=ora.ecsdb.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsdb.ecsdb1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsdb.ecsdb2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac02

NAME=ora.ecsrac01.LISTENER_ECSRAC01.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsrac01.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsrac01.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsrac01.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

NAME=ora.ecsrac02.LISTENER_ECSRAC02.lsnr
TYPE=application
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.ecsrac02.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac02

NAME=ora.ecsrac02.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac02

NAME=ora.ecsrac02.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on ecsrac01

 試圖開啟單獨監聽服務 (因為vip的漂移,一般不會成功) :

ecsrac02$crs_start   ora.ecsrac02.LISTENER_ECSRAC02.lsnr
ecsrac01 : CRS-1019: Resource ora.ecsrac02.LISTENER_ECSRAC02.lsnr (application) cannot run on ecsrac01
ecsrac02 : CRS-1018: Resource ora.ecsrac02.vip (application) is already running on ecsrac01
 CRS-0223: Resource 'ora.ecsrac02.LISTENER_ECSRAC02.lsnr' has placement error.

 我們可以看到報錯中有一個  ecsrac02 : CRS-1018: Resource ora.ecsrac02.vip (application) is already running on ecsrac01  錯誤,  表示節點2的VIP已經漂移到了節點1  ( 這裡節點1機器名稱為 ecsrac01 ) 。因為VIP的漂移導致節點2的監聽不能在節點1上執行 (節點2本身的監聽是正常的,但是隻顯示一個例項,可以透過lsnrctl   stat  檢視 ) 。 所以需要監聽正常, 首先需要節點2的VIP 重新執行到節點2上。 從  ora....c02.vip application    ONLINE    ONLINE    ecsrac01 上可以看到節點2   VIP 是執行在 ecsrac01 節點1機器上 。

我們在處理監聽之前,先處理VIP .  檢視節點2   VIP 對應的服務名稱 (透過 crs_stat   -v  檢視 )

ecsrac02$crs_stop   ora.ecsrac02.vip   
Attempting to stop `ora.ecsrac02.vip` on member `ecsrac01`
Stop of `ora.ecsrac02.vip` on member `ecsrac01` succeeded.

 ecsrac02$crs_start    ora.ecsrac02.vip
Attempting to start `ora.ecsrac02.vip` on member `ecsrac02`   --- 重新執行到節點2上,前提是網路恢復正常 。 
Start of `ora.ecsrac02.vip` on member `ecsrac02` succeeded.

ecsrac02$crs_start    ora.ecsrac02.LISTENER_ECSRAC02.lsnr
Attempting to start `ora.ecsrac02.LISTENER_ECSRAC02.lsnr` on member `ecsrac02`
Start of `ora.ecsrac02.LISTENER_ECSRAC02.lsnr` on member `ecsrac02` succeeded.
ecsrac02$

檢視狀態: 

ecsrac02$crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01   
ora....b1.inst application    ONLINE    ONLINE    ecsrac01   
ora....b2.inst application    ONLINE    ONLINE    ecsrac02   
ora....01.lsnr application    ONLINE    ONLINE    ecsrac01   
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01   
ora....c01.ons application    ONLINE    ONLINE    ecsrac01   
ora....c01.vip application    ONLINE    ONLINE    ecsrac01   
ora....02.lsnr application    ONLINE    ONLINE    ecsrac02   
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02   
ora....c02.ons application    ONLINE    ONLINE    ecsrac02   
ora....c02.vip application    ONLINE    ONLINE    ecsrac02 

 ecsrac02$crs_stat -t 
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01    
ora....b1.inst application    ONLINE    ONLINE    ecsrac01    
ora....b2.inst application    ONLINE    UNKNOWN   ecsrac02    
ora....01.lsnr application    ONLINE    UNKNOWN   ecsrac01    
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01    
ora....c01.ons application    ONLINE    ONLINE    ecsrac01    
ora....c01.vip application    ONLINE    ONLINE    ecsrac01    
ora....02.lsnr application    ONLINE    UNKNOWN   ecsrac02    
ora....c02.gsd application    ONLINE    UNKNOWN   ecsrac02    
ora....c02.ons application    ONLINE    UNKNOWN   ecsrac02    
ora....c02.vip application    ONLINE    ONLINE    ecsrac02    

[root@ecsrac02 ~]# /etc/init.d/init.crs  stop  
Shutting down Oracle Cluster Ready Services (CRS):
/etc/init.d/init.crsd: line 81: /tmp/oratz.3839: No such file or directory
Stopping resources.
Successfully stopped CRS resources 
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Shutdown has begun. The daemons should exit soon.

[root@ecsrac02 ~]# /etc/init.d/init.crs  start 
Startup will be queued to init within 90 seconds.

ecsrac02$crs_stat -t 
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.ecsdb.db   application    ONLINE    ONLINE    ecsrac01    
ora....b1.inst application    ONLINE    ONLINE    ecsrac01    
ora....b2.inst application    ONLINE    ONLINE    ecsrac02    
ora....01.lsnr application    ONLINE    ONLINE    ecsrac01    
ora....c01.gsd application    ONLINE    ONLINE    ecsrac01    
ora....c01.ons application    ONLINE    ONLINE    ecsrac01    
ora....c01.vip application    ONLINE    ONLINE    ecsrac01    
ora....02.lsnr application    ONLINE    ONLINE    ecsrac02    
ora....c02.gsd application    ONLINE    ONLINE    ecsrac02    
ora....c02.ons application    ONLINE    ONLINE    ecsrac02    
ora....c02.vip application    ONLINE    ONLINE    ecsrac02    
ecsrac02$

 在rac環境中如果使用crs_stop -all去停rac服務時,很有可能會出現crs中的一些服務的狀態是UNKNOWN,這時我們可以採用兩種方法去重新啟動crs服務
1:轉換到root使用者下用/etc/init.d/init.crs stop先禁用crs,然後再用/etc/init.d/init.crs start去啟用crs,啟用crs後會自動啟動crs的一系列服務,注意此種方法需要在兩臺節點上都執行;

2:是用crs_stop -f  引數把crs中狀態是UNKNOWN的服務關掉,然後再用crs_start -f (加一個-f的引數)啟動所有的服務就可以。參考:

要分別在兩個節點上執行;

在啟動的過程中最好檢測著crs、ASM和資料庫的日誌:

crs日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/product/10.2.0/crs_1/log/rac1/alertrac1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/product/10.2.0/crs_1/log/rac2/alertrac2.log

ASM日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/+ASM/bdump/alert_+ASM1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/+ASM/bdump/alert_+ASM2.log
資料庫日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/ora9i/bdump/alert_ora9i1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/ora9i/bdump/alert_ora9i2.log 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1084294/,如需轉載,請註明出處,否則將追究法律責任。

相關文章