rac常用命令

靜以致遠√團團發表於2013-11-30
最近今天嘗試在RedHat5.4上裝RAC,成功後對維護一知半解,現總結一下rac基本的操作

在叢集的某個節點上建立日誌組:
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 5;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 6;

啟用某個執行緒上的日誌組:
ALTER DATABASE ENABLE THREAD 2;

刪除某組日誌:
alter database drop logfile group 5;
alter database drop logfile group 6;


正常情況下,節點只能更改自己的undo表空間,但是可以讀所有undo表空間,在進行恢復
的時候,節點可以更改讀取任何一個undo表空間

檢視系統中undo資料檔案:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+GROUPA/orcl/datafile/system.256.796181943
+GROUPA/orcl/datafile/undotbs1.258.796181945
+GROUPA/orcl/datafile/sysaux.257.796181943
+GROUPA/orcl/datafile/users.259.796181945
+GROUPA/orcl/datafile/example.264.796182149
+GROUPA/orcl/datafile/undotbs2.265.796182327
+GROUPA/orcl/datafile/undotbs3.270.796570955

在rac1上檢視當前節點使用的undo表空間:
SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1


在rac2上檢視當前節點使用的undo表空間:
SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS2


將rac1的undo表空間設定成新建立的undotbs3:
SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs3 SID='orcl1';
System altered.

SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS3

刪除undotbs3:
SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs1 SID='orcl1';
System altered.

SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1

SQL> drop tablespace undotbs3 including contents and datafiles;
Tablespace dropped.


? 多個例項可以同時開啟同一個資料庫
? 關閉一個例項不會影響其他正在執行的例項
? SHUTDOWN TRANSACTIONAL LOCAL 不會等待其他例項完成事務處理
? 可以透過使用下列工具啟動和停止RAC 例項:
– Server Control (SRVCTL) 實用程式
– SQL*Plus
? 關閉RAC 資料庫意味著關閉所有正在訪問該資料庫的例項

1. 透過SQL*Plus啟動和停止RAC 例項:
$ echo $ORACLE_SID
orcl1
sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup
$ echo $ORACLE_SID
orcl2
sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup

2. 透過SRVCTL啟動和停止RAC 例項:
? start/stop 語法:
srvctl start|stop instance -d -i
[-o open|mount|nomount|normal|transactional|immediate|abort>]
[-c | -q]
srvctl start|stop database -d
[-o open|mount|nomount|normal|transactional|immediate|abort>]
[-c | -q]
? 示例:
關閉所有例項:
rac2->  srvctl stop instance -d orcl -i orcl1,orcl2
[root@rac2 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....l1.inst application    OFFLINE   OFFLINE               
ora....l2.inst application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2 
       
rac2-> srvctl start instance -d orcl -i orcl1,orcl2
[root@rac2 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    ONLINE    ONLINE    rac1        
ora....l1.inst application    ONLINE    ONLINE    rac1        
ora....l2.inst application    ONLINE    ONLINE    rac2        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2   
rac1-> srvctl start database -d orcl -o open


預設情況下,當系統重啟時,oracle會自動啟動資源,如:VIP, listener, instance, ASM, database services, 和
其他的資源
檢視預設的設定:
rac1-> srvctl config database -d orcl -a
rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  AUTOMATIC
ENABLE FLAG: DB ENABLED

將其改為手動的:
rac1-> srvctl modify database -d orcl -y MANUAL;
rac1-> srvctl config database -d orcl -a
rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  MANUAL
ENABLE FLAG: DB ENABLED

將其改為自動的:
rac1-> srvctl modify database -d orcl -y AUTOMATIC;
rac1-> srvctl config database -d orcl -a

rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  AUTOMATIC
ENABLE FLAG: DB ENABLED


? 如果使用DBCA,則將建立SPFILE
? 必須在共享卷或共享裸裝置上建立SPFILE
? 所有例項都使用同一SPFILE
每個節點上有一個pfile,指向spfile
在節點1:

cd $ORACLE_HOME/dbs
vi initorcl1.ora內容如下:
SPFILE='+GROUPA/orcl/spfileorcl.ora'

在節點2:
cd $ORACLE_HOME/dbs
vi initorcl2.ora內容如下:
SPFILE='+GROUPA/orcl/spfileorcl.ora'
修改引數值:
可以從任何例項中使用ALTER SYSTEM SET 命令更改引數設定:
ALTER SYSTEM SET SCOPE=MEMORY sid='';
有以下SID項:
– *:適用於所有例項
:只適用於
優先於*
例如:
在orcl1更改所有例項的引數:
alter system set sga_max_size=500M scope=spfile sid='*';
SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M

在orcl2檢視引數:
SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M

只更改orcl1的引數:

SQL> alter system set sga_max_size=272M scope=spfile sid='orcl1';
System altered.

SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 272M
在例項2檢視引數:

SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M



srvctl命令是RAC維護中最常用的命令這個工具可以操作下面幾種資源:Database 、Instance
ASM、service、listener和Node Application、node application又包括GSD、ONS、VIP這
些資源

在RAC 中使用SRVCTL管理ASM
? SRVCTL 使您可以從Oracle Clusterware (OC) 的角度管理ASM:
   – 向OCR 新增ASM 例項。
   – 啟用 ASM 例項以自動重新啟動 OCR
   – 啟動ASM 例項。
   – 關閉ASM 例項。
   – 禁用ASM 例項以禁止自動重新啟動OCR
   – 從OCR 中刪除ASM 例項配置
   – 獲得某些狀態資訊
   – 將ASM 例項相關性設定為資料庫例項
? DBCA 允許您建立ASM 例項,並且可以幫助您透過OCR新增和啟用這些例項
在RAC 中使用ASM 和SRVCTL:示例

? 在指定節點上啟動ASM 例項:
$ srvctl start asm –n orcl1

? 在指定節點上停止ASM 例項:
$ srvctl stop asm –n orcl1 –o immediate

停止RAC:
emctl stop dbconsole 
srvctl stop instance -d orcl -i orcl1 
srvctl stop instance -d orcl -i orcl2 
srvctl stop asm -n rac1
srvctl stop asm -n rac2
srvctl stop nodeapps -n rac1 
srvctl stop nodeapps -n rac2 
或者用 $ crs_stop -all

啟動RAC:      
和上面的步驟正好相反即 
srvctl start nodeapps -n rac1 
srvctl start nodeapps -n rac2 
srvctl start asm -n rac1 
srvctl start asm -n rac2 
srvctl start instance -d orcl -i orcl1 
srvctl start instance -d orcl -i orcl2 
emctl start dbconsole 
或者用 $ crs_start -all

Oracle10g RAC 檢查命令:
Oracle10g RAC 資料庫的 nodeapps 有 VIP, GSD, Listener, ONS .
$ srvctl status nodeapps –n rac1 (檢查VIP, GSD,ONS, Listener 等(所有節點))
VIP is running on node: gnd-rac01
GSD is not running on node: gnd-rac01
Listener is not running on node: gnd-rac01
ONS daemon is not running on node: gnd-rac01 
$crsctl check crs (檢查Oracle Cluster 狀態: CSS, CRS, EVM .)
CSS appears healthy
CRS appears healthy
EVM appears healthy
$ crs_stat -t (全面檢查狀態 )

1. 對於offline 的程式,我們可以直接手動的啟動它

crs_start ora.rac.orcl.rac1.srv

2. 對於UNKNOWN 的程式,我們可以先stop 它, 再start

crs_stop ora.rac2.gsd
crs_start ora.rac2.gsd

3. 如果crs_stop不能結束,crs_start 不能啟動的程式,我們有2中方法來解決:

3.1)用crs_stop -f  引數把crs中狀態是UNKNOWN的服務關掉
        然後再用crs_start -f (加一個-f的引數)啟動所有的服務就
        可以要分別在兩個節點上執行;

crs_start -f ora.rac.orcl.rac1.srv

crs_stop -f ora.rac.orcl.rac1.srv
 
3.2)轉換到root使用者下用/etc/init.d/init.crs stop先禁用crs,然後再用/etc/init.d/init.crs start去啟用crs
       啟用crs後會自動啟動crs的一系列服務,注意此種方法需要在兩臺節點上都執行;

4. 可以用命令一次啟動和關閉相關程式

crs_stop -all
crs_start -all

unknown問題可以建立pfofile,然後進行註冊,在將其重啟:
crs_profile -create resource_name -t application
crs_register resource_nam
crs_stop resource_nam
crs_start resource_nam






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