rac 啓動和關閉

Oracle 10g時代,我們很羨慕那些懂得Oracle9i的DBA,而不知不覺中度過了Oracle11g並迎接了12c時代,但是還是有不少DBA習慣於Oracle 10g的管理思維,尤其是在管理或安裝Oracle 11g RAC時,偶爾感到不知錯所。 
 
在Oracle 11gR2 下的RAC,架構發生了變化,多了grid用戶、警告日誌位置也發生變化等。CRS的信息也是放在ASM 實例裏的,所以要關asm,必須關閉crs,在Oracle  
 
11g環境 RAC + ASM之間層次架構如下圖所示: 

Oracle 11g RAC啓動和關閉
 
 
而Oracle10g的RAC環境中,CRS的信息放在裸設備上,因此關閉asm後才關閉CRS纔是正確的。 
 
除以上資源之外,我們還需要了解OHASD 資源,英文解釋如下: 
 
      Oracle High Availability Services Daemon (OHASD) :This process anchors the lower part of the Oracle Clusterware stack, which consists of processes that facilitate cluster operations. 
 
      在11gR2裏面啓動CRS的時候,會提示ohasd已經啓動。 那麼這個OHASD到底包含哪些資源。 可以通過如下命令來查看: 
 
[grid@oracle1 ~]$ crsctl status resource -t 
 
-------------------------------------------------------------------------------- 
 
NAME          TARGET  STATE        SERVER                  STATE_DETAILS        
 
-------------------------------------------------------------------------------- 
 
Local Resources 
 
-------------------------------------------------------------------------------- 
 
ora.DATADG.dg 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.FRADG.dg 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.LISTENER.lsnr 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.OCRVT.dg 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.asm 
 
              ONLINE  ONLINE      oracle1                  Started              
 
              ONLINE  ONLINE      oracle2                  Started              
 
ora.gsd 
 
              OFFLINE OFFLINE      oracle1                                      
 
              OFFLINE OFFLINE      oracle2                                      
 
ora.net1.network 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.ons 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
ora.registry.acfs 
 
              ONLINE  ONLINE      oracle1                                      
 
              ONLINE  ONLINE      oracle2                                      
 
-------------------------------------------------------------------------------- 
 
Cluster Resources 
 
-------------------------------------------------------------------------------- 
 
ora.LISTENER_SCAN1.lsnr 
 
      1        ONLINE  ONLINE      oracle1                                      
 
ora.cvu 
 
      1        ONLINE  ONLINE      oracle2                                      
 
ora.oc4j 
 
      1        ONLINE  ONLINE      oracle2                                      
 
ora.oracle1.vip 
 
      1        ONLINE  ONLINE      oracle1                                      
 
ora.oracle2.vip 
 
      1        ONLINE  ONLINE      oracle2                                      
 
ora.scan1.vip 
 
      1        ONLINE  ONLINE      oracle1                                      
 
ora.sjjczr.db 
 
      1        ONLINE  ONLINE      oracle1                  Open                
 
      2        ONLINE  ONLINE      oracle2                  Open                
 
[grid@oracle1 ~]$ 
 
  
 
在Oracle 10g中CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service。 
 
 在11.2中,對CRSD資源進行了重新分類: Local Resources 和 Cluster Resources。 OHASD 指的就是Cluster Resource. 
 
  
 
  
 
1. Oracle 11g RAC關閉和啓動相關命令

 
  
 
1.1 使用crsctl stop has/crsctl stop crs 
 
用root用戶,在Oracle11gR2中停止和啓動集羣的命令如下: 
 
#crsctl stop has [-f] 
 
#crsctl start has 
 
    對於crsctl stop has 只有一個可選的參數就是-f,該命令只能停執行該命令服務器上的HAS.而不能停所有節點上的。所以要把RAC 全部停掉,需要在所有節點執行該命令。 
 
  
 
下面的2個命令:使用crs 和 使用has 效果是完全一樣的: 
 
#crsctl stop crs [-f] 
 
#crsctl start crs 
 
  
 
記得第一次在生產環境中安裝Oracle 11gR2  RAC + ASM 時,當安裝完後通過crs_stat  -t 命令查看狀態總覺得不太對(在節點二上是的online狀態的資源數量比節點一明顯少得多),想重啓CRS和ASM,用了#crsctl stop crs命令(未帶 [ -f ] 參數),總是不太順利。最終重啓了服務器。後來想想,實際上也可以使用crsctl stop has [-f],沒比要重啓服務器。 
 
  
 
啓動HAS: 
 
[root@rac1bin]# ./crsctl start has 
 
CRS-4123:Oracle High Availability Services has been started. 
 
[root@rac1bin]# 
 
  
 
從上面看只是啓動了HAS。實際上後面會把Oracle Restart 管理的資源都會啓動。這個可以使用crs_stat命令來進程驗證。 
 
[grid@oracle1 ~]$ crs_stat -t -v 
 
Name          Type          R/RA  F/FT  Target    State    Host        
 
---------------------------------------------------------------------- 
 
ora.DATADG.dg  ora....up.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora.FRADG.dg  ora....up.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora....ER.lsnr ora....er.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora....N1.lsnr ora....er.type 0/5    0/0    ONLINE    ONLINE    oracle1      
 
ora.OCRVT.dg  ora....up.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora.asm        ora.asm.type  0/5    0/    ONLINE    ONLINE    oracle1      
 
ora.cvu        ora.cvu.type  0/5    0/0    ONLINE    ONLINE    oracle2      
 
ora.gsd        ora.gsd.type  0/5    0/    OFFLINE  OFFLINE                
 
ora....network ora....rk.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora.oc4j      ora.oc4j.type  0/1    0/2    ONLINE    ONLINE    oracle2      
 
ora.ons        ora.ons.type  0/3    0/    ONLINE    ONLINE    oracle1      
 
ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    oracle1      
 
ora....E1.lsnr application    0/5    0/0    ONLINE    ONLINE    oracle1      
 
ora....le1.gsd application    0/5    0/0    OFFLINE  OFFLINE                
 
ora....le1.ons application    0/3    0/0    ONLINE    ONLINE    oracle1      
 
ora....le1.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    oracle1      
 
ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    oracle2      
 
ora....E2.lsnr application    0/5    0/0    ONLINE    ONLINE    oracle2      
 
ora....le2.gsd application    0/5    0/0    OFFLINE  OFFLINE                
 
ora....le2.ons application    0/3    0/0    ONLINE    ONLINE    oracle2      
 
ora....le2.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    oracle2      
 
ora....ry.acfs ora....fs.type 0/5    0/    ONLINE    ONLINE    oracle1      
 
ora.scan1.vip  ora....ip.type 0/0    0/0    ONLINE    ONLINE    oracle1      
 
ora.sjjczr.db  ora....se.type 0/2    0/1    ONLINE    ONLINE    oracle1      
 
  
 
  
 
1.2 使用crsctl stop cluster [-all]… 
 
該命令的語法如下: 
 
crsctl stop cluster [[-all]|[-n<server>[...]]] [-f] 
 
crsctl start cluster [[-all]|[-n<server>[...]]] 
 
  
 
該參數支持的選項更多,可以同時操控所有的節點。如果不指定參數,那麼只對當前節點有效。 
 
  
 
如: 
 
[root@rac1 ~]# ./crsctl start cluster -n rac1 rac2 
 
--停止當前節點集羣: 
 
[root@rac1 bin]# ./crsctl stop cluster 
 
  
 
2.停止和啓動Resource 
 
    當直接停止集羣時,相關的Resource 也會被停止。 但實際情況下,我們操作更多的是對某些資源的啓動或關閉等操作。具體就是使用SRVCTL 命令。該命令不常用總被忘記,因此可以用幫助選項 –h 來查看命令幫助: 
 
[grid@rac1 ~]$  Srvclt –h 
 
這個命令顯示的結果太長,不好查看,可以進一步的查看幫助: 
 
 [grid@rac1 ~]$ srvctl start -h 
 
  
 
  
 
RAC 運行狀態通用的命令如下: 
 
[root@vcdwdb1 ~]# srvctl -h 
 
-bash: srvctl: command not found 
 
[root@vcdwdb1 ~]# su - grid 
 
[grid@vcdwdb1 ~]$ srvctl -h 
 
用法: srvctl [-V]    --顯示內容很多,如下對內容進行了挑選後粘貼 
 
用法: srvctl start nodeapps [-n <node_name>] [-g] [-v] 
 
用法: srvctl stop nodeapps [-n <node_name>] [-g] [-f] [-r] [-v] 
 
用法: srvctl status nodeapps 
 
用法: srvctl start vip { -n <node_name> | -i <vip_name> } [-v] 
 
用法: srvctl stop vip { -n <node_name>  | -i <vip_name> } [-f] [-r] [-v] 
 
用法: srvctl relocate vip -i <vip_name> [-n <node_name>] [-f] [-v] 
 
用法: srvctl status vip { -n <node_name> | -i <vip_name> } [-v] 
 
用法: srvctl start asm [-n <node_name>] [-o <start_options>] 
 
用法: srvctl stop asm [-n <node_name>] [-o <stop_options>] [-f] 
 
用法: srvctl config asm [-a] 
 
用法: srvctl status asm [-n <node_name>] [-a] [-v] 
 
用法: srvctl config listener [-l <lsnr_name>] [-a] 
 
用法: srvctl start listener [-l <lsnr_name>] [-n <node_name>] 
 
用法: srvctl stop listener [-l <lsnr_name>] [-n <node_name>] [-f] 
 
用法: srvctl status listener [-l <lsnr_name>] [-n <node_name>] [-v] 
 
用法: srvctl start scan [-i <ordinal_number>] [-n <node_name>] 
 
用法: srvctl stop scan [-i <ordinal_number>] [-f] 
 
用法: srvctl relocate scan -i <ordinal_number> [-n <node_name>] 
 
用法: srvctl status scan [-i <ordinal_number>] [-v] 
 
用法: srvctl config cvu 
 
用法: srvctl start cvu [-n <node_name>] 
 
用法: srvctl stop cvu [-f] 
 
用法: srvctl relocate cvu [-n <node_name>] 
 
用法: srvctl status cvu [-n <node_name>] 
 
  
 
  
 
也可以進一步查看配置信息,如下: 
 
[grid@vcdwdb1 ~]$ srvctl start -h 
 
SRVCTL start 命令啓動啓用 Oracle Clusterware 的未運行的對象。 
 
用法: srvctl start database -d <db_unique_name> [-o <start_options>] [-n <node>] 
 
用法: srvctl start instance -d <db_unique_name> {-n <node_name> [-i <inst_name>] | -i <inst_name_list>} [-o <start_options>] 
 
用法: srvctl start service -d <db_unique_name> [-s "<service_name_list>" [-n <node_name> | -i <inst_name>] ] [-o <start_options>] 
 
用法: srvctl start nodeapps [-n <node_name>] [-g] [-v] 
 
用法: srvctl start vip { -n <node_name> | -i <vip_name> } [-v] 
 
用法: srvctl start asm [-n <node_name>] [-o <start_options>] 
 
用法: srvctl start listener [-l <lsnr_name>] [-n <node_name>] 
 
用法: srvctl start scan [-i <ordinal_number>] [-n <node_name>] 
 
用法: srvctl start scan_listener [-n <node_name>] [-i <ordinal_number>] 
 
用法: srvctl start oc4j [-v] 
 
用法: srvctl start home -o <oracle_home> -s <state_file> -n <node_name> 
 
用法: srvctl start filesystem -d <volume_device> [-n <node_name>] 
 
用法: srvctl start diskgroup -g <dg_name> [-n "<node_list>"] 
 
用法: srvctl start gns [-l <log_level>] [-n <node_name>] [-v] 
 
用法: srvctl start cvu [-n <node_name>] 
 
有關各個命令和對象的詳細幫助, 請使用: 
 
  srvctl <command> <object> -h 
 
[grid@vcdwdb1 ~]$ srvctl start listener -h 
 
  
 
啓動監聽程序。 
 
  
 
用法: srvctl start listener [-l <lsnr_name>] [-n <node_name>] 
 
    -l <lsnr_name>          監聽程序名 
 
    -n <node_name>          節點名 
 
    -h                      輸出用法 
 
[grid@vcdwdb1 ~]$ 
 
  
 
  
 
[grid@vcdwdb1 ~]$ srvctl status -h 
 
SRVCTL status 命令顯示對象的當前狀態。 
 
用法: srvctl status database -d <db_unique_name> [-f] [-v] 
 
用法: srvctl status instance -d <db_unique_name> {-n <node_name> | -i <inst_name_list>} [-f] [-v] 
 
用法: srvctl status service -d <db_unique_name> [-s "<service_name_list>"] [-f] [-v] 
 
用法: srvctl status nodeapps 
 
用法: srvctl status vip { -n <node_name> | -i <vip_name> } [-v] 
 
用法: srvctl status listener [-l <lsnr_name>] [-n <node_name>] [-v] 
 
用法: srvctl status asm [-n <node_name>] [-a] [-v] 
 
用法: srvctl status scan [-i <ordinal_number>] [-v] 
 
用法: srvctl status scan_listener [-i <ordinal_number>] [-v] 
 
用法: srvctl status srvpool [-g <pool_name>] [-a] 
 
用法: srvctl status server -n "<server_list>" [-a] 
 
用法: srvctl status oc4j [-n <node_name>] [-v] 
 
用法: srvctl status home -o <oracle_home> -s <state_file> -n <node_name> 
 
用法: srvctl status filesystem -d <volume_device> [-v] 
 
用法: srvctl status diskgroup -g <dg_name> [-n "<node_list>"] [-a] [-v] 
 
用法: srvctl status cvu [-n <node_name>] 
 
用法: srvctl status gns [-n <node_name>] [-v] 
 
有關各個命令和對象的詳細幫助, 請使用: 
 
  srvctl <command> <object> -h 
 
  
 
 [grid@vcdwdb1 ~]$ srvctl config -h 
 
SRVCTL config 命令顯示存儲在 OCR 中的對象配置。 
 
用法: srvctl config database [-d <db_unique_name> [-a] ] [-v] 
 
用法: srvctl config service -d <db_unique_name> [-s <service_name>] [-v] 
 
用法: srvctl config nodeapps [-a] [-g] [-s] 
 
用法: srvctl config vip { -n <node_name> | -i <vip_name> } 
 
用法: srvctl config network [-k <network_number>] 
 
用法: srvctl config asm [-a] 
 
用法: srvctl config listener [-l <lsnr_name>] [-a] 
 
用法: srvctl config scan [-i <ordinal_number>] 
 
用法: srvctl config scan_listener [-i <ordinal_number>] 
 
用法: srvctl config srvpool [-g <pool_name>] 
 
用法: srvctl config oc4j 
 
用法: srvctl config filesystem -d <volume_device> 
 
用法: srvctl config gns [-a] [-d] [-k] [-m] [-n <node_name>] [-p] [-s] [-V] [-q <name>] [-l] [-v] 
 
用法: srvctl config cvu 
 
有關各個命令和對象的詳細幫助, 請使用: 
 
  srvctl <command> <object> -h 
 
例如: 
 
[grid@vcdwdb1 ~]$ srvctl config asm 
 
ASM 主目錄: /u01/app/11.2.0/grid_home 
 
ASM 監聽程序: LISTENER 
 
[grid@vcdwdb1 ~]$ srvctl config asm -a 
 
ASM 主目錄: /u01/app/11.2.0/grid_home 
 
ASM 監聽程序: LISTENER 
 
ASM 已啓用。 
 
[grid@vcdwdb1 ~]$ 
 
[grid@vcdwdb1 ~]$ srvctl config listener -a 
 
名稱: LISTENER 
 
網絡: 1, 所有者: grid 
 
主目錄: <CRS home> 
 
  節點 vcdwdb2,vcdwdb1 上的 /u01/app/11.2.0/grid_home 
 
端點: TCP:1521 
 
  
 
總結: 
 
在Oracle 11g環境中,Oracle的關閉和啓動順序如下: 
 
  
 
關閉順序: 
 
1、關閉數據庫,oracl用戶執行srvctl命令: 
 
 [oracle@rac1 ~]$ srvctl stop database -d ORCL ---停止所有節點上的實例 
 
或者每個節點登錄數據庫後執行SQL>shutdown immediate 
 
2,停止HAS(High Availability Services),必須以root用戶 
 
[root@rac1 oracle]# cd /u01/grid/11.2.0/grid/bin 
 
[root@rac1 bin]# ./crsctl stop has –f 
 
  
 
3,停止集羣服務,必須以root用戶: 
 
[root@rac1 oracle]# cd /u01/grid/11.2.0/grid/bin 
 
 [root@rac1 bin]# ./crsctl stop cluster -all  ----停止所有節點服務 
 
或[root@rac1 bin]# ./crsctl stop cluster        ----停止本節點集羣服務,每個節點分別執行  
 
也可以如下控制所停節點: 
 
[root@rac1 bin]#  ./crsctl stop cluster -n rac1 rac2 
 
如果在一個節點停止其他所有節點的,而不一一執行命令,則也可以採用: 
 
[root@rac1 bin]# ./crsctl stop cluster –all 
 
  
 
啓動順序: 
 
11g R2的RAC默認開機會自啓動,當然如果需要手工啓動。手工啓動按照cluster, HAS, database的順序啓動即可,具體命令如下: 
 
1、啓動集羣(cluster) 
 
[root@rac1 ~]# ./crsctl start cluster -all  --所有節點同時啓動 
 
或者只啓動指定節點的 
 
[root@rac1 ~]# ./crsctl start cluster -n rac1 rac2  --兩個節點同時啓動 
 
  
 
2、啓動HAS(High Availability Services),必須以root用戶 
 
[root@rac1 bin]# ./crsctl start has  
 
以上has啓動命令需要在每個節點分別執行 
 
  
 
3、啓動數據庫,oracl用戶執行srvctl命令(假設數據庫名爲ORCL): 
 
 [oracle@rac1 ~]$ srvctl start database -d ORCL ---停止所有節點上的實例 
 
或者每個節點登錄數據庫後執行SQL>startup  
 
  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章