ORACLE RAC 日常管理[10g,11g]

一、Oracle RAC簡介


Oracle RAC 支持 Oracle 數據庫在集羣上運行真正的應用程序。此處的真正應用是指 RAC 能夠支持所有類型的主流商業應用程序。這包括流行的封裝產品,如 SAP、PeopleSoft 和 Oracle E*Business Suite 等,以及自主研發的應用程序,其中包括 OLTP 和 DSS,以及 Oracle 有效支持混合 OLTP/DSS 環境的獨有能力。Oracle 是唯一提供具備這一功能的開放系統數據庫的廠商。

  Oracle RAC 運行於集羣之上,爲 Oracle 數據庫提供了最高級別的可用性、可伸縮性和低成本計算能力。如果集羣內的一個節點發生故障,Oracle 將可以繼續在其餘的節點上運行。如果需要更高的處理能力,新的節點可輕鬆添加至集羣。爲了保持低成本,即使最高端的系統也可以從採用標準化商用組件的小型低成本集羣開始逐步構建而成。

  Oracle 的主要創新是一項稱爲高速緩存合併的技術,它最初是針對 Oracle9i 真正應用集羣開發的。高速緩存合併使得集羣中的節點可以通過高速集羣互聯高效地同步其內存高速緩存,從而最大限度地低降低磁盤 I/O。高速緩存最重要的優勢在於它能夠使集羣中所有節點的磁盤共享對所有數據的訪問。數據無需在節點間進行分區。Oracle 是唯一提供具備這一能力的開放系統數據庫的廠商。其它聲稱可以運行在集羣上的數據庫軟件需要對數據庫數據進行分區。這對於擁有複雜的數據結構的真正應用程序而言,顯得不切實際。而且也不可能對集羣系統進行統一變更。如果您添加或刪除節點或存儲資源,數據則需要完全重新分區。


二、ORACLE RAC工作原理

  在一個應用環境當中,所有的服務器使用和管理同一個數據庫,目的是爲了分散每一臺服務器的工作量,硬件上至少需要兩臺以上的服務器,而且還需要一個共享存儲設備。同時還需要兩類軟件,一個是集羣軟件,另外一個就是Oracle數據庫中的RAC組件。同時所有服務器上的OS都應該是同一類OS,根據負載均衡的配置策略,當一個客戶端發送請求到某一臺服務的listener後,這臺服務器根據我們的負載均衡策略,會把請求發送給本機的RAC組件處理也可能會發送給另外一臺服務器的RAC組件處理,處理完請求後,RAC會通過集羣軟件來訪問我們的共享存儲設備。
  邏輯結構上看,每一個參加集羣的節點有一個獨立的instance,這些instance訪問同一個數據庫。節點之間通過集羣軟件的通訊層(communication layer)來進行通訊。同時爲了減少IO的消耗,存在了一個全局緩存服務,因此每一個數據庫的instance,都保留了一份相同的數據庫cache。



架構圖:



三、Oracle rac日常管理:


  1. rac狀態檢查:


    application service狀態應該都爲online:


    HDOADB1:> crs_stat -t

    Name           Type           Target    State     Host        

    ------------------------------------------------------------

    ora....s1.inst application    ONLINE    ONLINE    hdoadb1    

    ora....s2.inst application    ONLINE    ONLINE    hdoadb2    

    ora.ams.db     application    ONLINE    ONLINE    hdoadb2    

    ora....B1.lsnr application    ONLINE    ONLINE    hdoadb1    

    ora....db1.gsd application    ONLINE    ONLINE    hdoadb1    

    ora....db1.ons application    ONLINE    ONLINE    hdoadb1    

    ora....db1.vip application    ONLINE    ONLINE    hdoadb1    

    ora....B2.lsnr application    ONLINE    ONLINE    hdoadb2    

    ora....db2.gsd application    ONLINE    ONLINE    hdoadb2    

    ora....db2.ons application    ONLINE    ONLINE    hdoadb2    

    ora....db2.vip application    ONLINE    ONLINE    hdoadb2    

    ora.orcl.db    application    ONLINE    ONLINE    hdoadb1    

    ora....l1.inst application    ONLINE    ONLINE    hdoadb1    

    ora....l2.inst application    ONLINE    ONLINE    hdoadb2



  1. 查看兩臺機器rac db狀態


    $ srvctl status database –d orcl

    $ srvctl status database –d ams

    查看一臺機器的實例的狀態

    $ srvctl status instance -d orcl -i orcl1



特定節點上節點應用程序的狀態

IXDBA.NET社區論壇

$ srvctl status nodeapps -n linux1
VIP is running on node: linux1
GSD is running on node: linux1
Listener is running on node: linux1
ONS daemon is running on node: linux1



  1. 關閉整個rac db:


    $ srvctl stop database –d orcl

    $ srvctl stop database –d ams

    $ srvctl stop nodeapps –n hdoadb1

    $ srvctl stop nodeapps –n hdoadb2


    用crs_stat命令來檢查application service狀態應該都爲offline


HDOADB1: > crs_stat -t

Name           Type           Target    State     Host        

------------------------------------------------------------

ora....s1.inst application    OFFLINE    OFFLINE    hdoadb1    

ora....s2.inst application    OFFLINE    OFFLINE    hdoadb2    

ora.ams.db     application    OFFLINE    OFFLINE    hdoadb2    

ora....B1.lsnr application    OFFLINE    OFFLINE    hdoadb1    

ora....db1.gsd application    OFFLINE    OFFLINE    hdoadb1    

ora....db1.ons application    OFFLINE    OFFLINE    hdoadb1    

ora....db1.vip application    OFFLINE    OFFLINE    hdoadb1    

ora....B2.lsnr application    OFFLINE    OFFLINE    hdoadb2    

ora....db2.gsd application    OFFLINE    OFFLINE    hdoadb2    

ora....db2.ons application    OFFLINE    OFFLINE    hdoadb2    

ora....db2.vip application    OFFLINE    OFFLINE    hdoadb2    

ora.orcl.db    application    OFFLINE    OFFLINE    hdoadb1    

ora....l1.inst application    OFFLINE    OFFLINE    hdoadb1    

ora....l2.inst application    OFFLINE    OFFLINE    hdoadb2









  1. 開啓整個rac db:


    正常情況下當機器啓動時oracle rac會自動啓動的。


    手動啓動過程如下:

    $ srvctl start nodeapps –n hdoadb1

    $ srvctl start nodeapps –n hdoadb2

    $srvctl start database –d orcl

    $ srvctl start database –d ams



  1. 只停一個節點的instance(node1)


    $ srvctl stop instance –d orcl –I orcl1

    $ srvctl stop instance –d ams –I ams1


  1. Oracle Clusterware的關閉與啓動:


    #cd $ORACLE_CRS_HOME/bin

    # crsctl start crs------>啓動CRS,會自動把其它的resource也啓動

    # crsctl stop crs------->關閉CRS,會自動把其它的resource也關閉



四、Oracle RAC常用的日誌文件:


  1. db的alertlog文件:

    $ORACLE_BASE/admin/orcl/bdump/

    $ORACLE_BASE/admin/ams/bdump/


  2. oracle crs日誌文件:

    $ORACLE_CRS_HOME/crs/log

    $ORACLE_CRS_HOME/css/log

    $ORACLE_CRS_HOME/evm/log

    $ORACLE_CRS_HOME/srvm/log



CRS的管理

CRSCTL命令控制着本地節點的CRS服務(Oracle clusterware processes)

停止CRS:
$ crsctl stop crs
或者
$ /etc/init.d/init.crs stop
或者
$ crs_stop –all

啓動CRS:
$ crsctl start crs
或者
$ /etc/init.d/init.crs start

禁止Clusterware在系統重啓後自動啓動的方法:
$ /etc/init.d/init.crs disable

啓動Clusterware在系統重啓後自動啓動的方法:
$ /etc/init.d/init.crs enable

查看CRS服務狀態
$ crsctl check crs

#############################################################

OCR的資源管理

OCR的資源,當RAC cluster啓動併成功運行以後,你可以使用crs_stat工具看到如下內容:
$ORA_CRS_HOME/bin/crs_stat

通常情況下,所有的資源的狀態都應該是online。另外,OCR4個小時會備份一次。有一些情況你可以通過恢復的OCR的配置文件來恢復出現問題的OCR
比如使用出現如下情況:
$ crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

$ crsctl check boot
Failure 4 at procr_open_key with status 4.
PROC-4: The cluster registry key to be operated on does not exist.

$ crsctl check crs
Failure 1 contacting CSS daemon
Cannot communicate with CRS
Cannot communicate with EVM
引起這個錯誤的一種可能原因是OCR配置丟了。這個我們可以利用這些備份來還原以前的配置。

# /etc/init.crs disable
# /etc/init.crs stop

先保證所有的crs進程全部停止。
# su – oracle
$ cd $ORA_CRS_HOME/bin
$./ocrconfig -restore /opt/app/oracle/crs/cdata/crs/week.ocr

然後切換到root用戶下,重新enable CRS
# /etc/init.crs enable

最後reboot兩個節點

##############################################################



SRVCTL
命令介紹
SRVCTL
命令可以控制RAC數據庫中的instancelistener以及services
通常SRVCTLORACLE用戶下執行。下面我們來介紹srvctl命令。

1、通過SRVCTL命令來start/stop/check所有的實例:
$ srvctl start|stop|status database -d <db_name>

2start/stop指定的實例:
$ srvctl start|stop|status instance -d <db_name> -i <instance_name>

3、列出當前RAC下所有的
$ srvctl config database -d <db_name>

4start/stop/check所有的nodeapps,比如:VIP, GSD, listener, ONS
$ srvctl start|stop|status nodeapps -n <node_name>

5、如果你使用ASMsrvctl也可以start/stop ASM實例:
$ srvctl start|stop asm -n <node_name> [-i <asm_inst_name>] [-o<oracle_home>]

6、可以獲取所有的環境信息:
$ srvctl getenv database -d <db_name> [-i <instance_name>]

7、設置全局環境和變量:
$ srvctl setenv database -d <db_name> -t LANG=en

8、從OCR中刪除已有的數據庫:
$ srvctl remove database -d <db_name>

9、向OCR中添加一個數據庫:
$ srvctl add database -d <db_name> -o <oracle_home>

[-m <domain_name>] [-p<spfile>] [-A <name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>]

10、向OCR中添加一個數據庫的實例:
$ srvctl add instance -d <db_name> -i <instance_name> -n <node1>
$ srvctl add instance -d <db_name> -i <instance_name> -n <node2>

11、向OCR中添加一個ASM實例:
$ srvctl add asm -n <node_name> -i <asm_inst_name> -o <oracle_home>

12、添加一個service
$ srvctl add service -d <db_name> -s <service_name> -r <preferred_list>[-a <available_list>] [-P <TAF_policy>] [-u]

13、修改在其他節點上的service
$ srvctl modify service -d <db_name> -s <service_name> -I <orig_instance_name> -t <target_instance_name>

14relocate某個節點的service到其他節點
srvctl relocate service -d <db_name> -s <service_name> -I


CRS及相關服務的常用命令的演示

1、查看狀態的命令
# su–oracle --
先切換到oracle用戶
$ crs_stat -t --
查看crs及所有的service的狀態
$ crsctl check crs --
crsctl命令,檢查crs相關服務的狀態
$ srvctl status nodeapps -n db01 (db02) --
使用srvctl查看所有節點上的服務是否正常
$ srvctl status database -d db --
使用srvctl查看數據庫狀態

啓動和關閉相關服務的命令
# su – oracle
$ crs_start–all --
啓動所有的crs服務
$ crs_stop–all --
停止所有的crs服務
$ crsctl start crs --
啓動crs服務
$ crsctl stop crs --
停止crs服務
$ srvctl start nodeapps -n db01(db02) --
啓動某節點上所有的應用
$ srvctl stop nodeapps -n db01(db02) --
停止某節點上所有的應用
$ srvctl start listener -n db01(db02) --
啓動某個節點的listener
$ srvctl stop listener -n db01(db02) --
停止某個節點的listener
$ srvctl start instance –d db –i db01(db02) --
啓動某個instance
$ srvctl stop instance –d db –i db01(db02) --
停止某個instance
$ srvctl start database –d db --
啓動數據庫
$ srvctl stop database –d db --
停止數據庫


--------------------------------------------------*************************-------------------------------

管理oracle 11g RAC 常用命令

1)、檢查集羣狀態:

[grid@rac02 ~]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

2)、所有 Oracle 實例(數據庫狀態):
[grid@rac02 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node rac01
Instance racdb2 is running on node rac02

3)、檢查單個實例狀態:
[grid@rac02 ~]$ srvctl status instance -d racdb -i racdb1
Instance racdb1 is running on node rac01

4)、節點應用程序狀態:
[grid@rac02 ~]$ srvctl status nodeapps
VIP rac01-vip is enabled
VIP rac01-vip is running on node: rac01
VIP rac02-vip is enabled
VIP rac02-vip is running on node: rac02
Network is enabled
Network is running on node: rac01
Network is running on node: rac02
GSD is disabled
GSD is not running on node: rac01
GSD is not running on node: rac02
ONS is enabled
ONS daemon is running on node: rac01
ONS daemon is running on node: rac02
eONS is enabled
eONS daemon is running on node: rac01
eONS daemon is running on node: rac02

5)、列出所有的配置數據庫:
[grid@rac02 ~]$ srvctl config database
racdb

6)、數據庫配置:
[grid@rac02 ~]$ srvctl config database -d racdb -a
Database unique name: racdb
Database name: racdb
Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +RACDB_DATA/racdb/spfileracdb.ora
Domain: xzxj.edu.cn
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: RACDB_DATA,FRA
Services:
Database is enabled
Database is administrator managed

7)ASM狀態以及ASM配置:

[grid@rac02 ~]$ srvctl status asm
ASM is running on rac01,rac02
[grid@rac02 ~]$ srvctl config asm -a
ASM home: /u01/app/11.2.0/grid
ASM listener: LISTENER
ASM is enabled.

8)TNS監聽器狀態以及配置:
[grid@rac02 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): rac01,rac02
[grid@rac02 ~]$ srvctl config listener -a
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/u01/app/11.2.0/grid on node(s) rac02,rac01
End points: TCP:1521

9)SCAN狀態以及配置:
[grid@rac02 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac02
[grid@rac02 ~]$ srvctl config scan
SCAN name: rac-scan.xzxj.edu.cn, Network: 1/192.168.1.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /rac-scan.xzxj.edu.cn/192.168.1.55

10)VIP各個節點的狀態以及配置:
[grid@rac02 ~]$ srvctl status vip -n rac01
VIP rac01-vip is enabled
VIP rac01-vip is running on node: rac01
[grid@rac02 ~]$ srvctl status vip -n rac02
VIP rac02-vip is enabled
VIP rac02-vip is running on node: rac02
[grid@rac02 ~]$ srvctl config vip -n rac01
VIP exists.:rac01
VIP exists.: /rac01-vip/192.168.1.53/255.255.255.0/eth0
[grid@rac02 ~]$ srvctl config vip -n rac02
VIP exists.:rac02
VIP exists.: /rac02-vip/192.168.1.54/255.255.255.0/eth0


11)
、節點應用程序配置VIPGSDONS、監聽器)

[grid@rac02 ~]$ srvctl config nodeapps -a -g -s -l
-l option has been deprecated and will be ignored.
VIP exists.:rac01
VIP exists.: /rac01-vip/192.168.1.53/255.255.255.0/eth0
VIP exists.:rac02
VIP exists.: /rac02-vip/192.168.1.54/255.255.255.0/eth0
GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/u01/app/11.2.0/grid on node(s) rac02,rac01
End points: TCP:1521

12)、驗證所有集羣節點間的時鐘同步:
[grid@rac02 ~]$ cluvfy comp clocksync -verbose
Verifying Clock Synchronization across the cluster nodes
Checking if Clusterware is installed on all nodes...
Check of Clusterware install passed
Checking if CTSS Resource is running on all nodes...
Check: CTSS Resource running on all nodes
Node Name Status
------------------------------------ ------------------------
rac02 passed
Result: CTSS resource check passed
Querying CTSS for time offset on all nodes...
Result: Query of CTSS for time offset passed
Check CTSS state started...
Check: CTSS state
Node Name State
------------------------------------ ------------------------
rac02 Active
CTSS is in Active state. Proceeding with check of clock time offsets on all nodes...
Reference Time Offset Limit: 1000.0 msecs
Check: Reference Time Offset
Node Name Time Offset Status
------------ ------------------------ ------------------------
rac02 0.0 passed
Time offset is within the specified limits on the following set of nodes:
"[rac02]"
Result: Check of clock time offsets passed
Oracle Cluster Time Synchronization Services check passed
Verification of Clock Synchronization across the cluster nodes was successful.

13)、集羣中所有正在運行的實例 — (SQL):

SELECT inst_id , instance_number inst_no , instance_name inst_name , parallel , status ,

database_status db_status , active_state state , host_name host FROM gv$instance ORDER BY inst_id;

14)、所有數據庫文件及它們所在的 ASM 磁盤組 — (SQL):

15)ASM 磁盤卷:

16)、啓動和停止集羣:

  以下操作需用root用戶執行。
(1)、在本地服務器上停止Oracle Clusterware 系統:
[root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster


 注:在運行"crsctl stop cluster"命令之後,如果 Oracle Clusterware 管理的
資源中有任何一個還在運行,則整個命令失敗。使用 -f 選項無條件地停止所有資源並
停止 Oracle Clusterware 系統。

  另請注意,可通過指定 -all 選項在集羣中所有服務器上停止 Oracle Clusterware
系統。如下所示,在rac01rac02上停止oracle clusterware系統:
[root@rac02 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster –all

  在本地服務器上啓動oralce clusterware系統:
[root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster

  注:可通過指定 -all 選項在集羣中所有服務器上啓動 Oracle Clusterware 系統。
[root@rac02 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster –all
  還可以通過列出服務器(各服務器之間以空格分隔)在集羣中一個或多個指定的
服務器上啓動 Oracle Clusterware 系統:
[root@rac01 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -n rac01 rac02

  使用 SRVCTL 啓動/停止所有實例:
[oracle@rac01 ~]#srvctl stop database -d racdb
[oracle@rac01 ~]#srvctl start database -d racdb


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