一、檢視RAC環境
RAC架構,2節點資訊
節點1
SQL> show parameter instance
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------------
active_instance_count integer
cluster_database_instances integer 2
instance_groups string
instance_name string RACDB1
instance_number Integer 1
instance_type string RDBMS
open_links_per_instance integer 4
parallel_instance_group string
parallel_server_instances integer 2
節點2
SQL> show parameter instance、
------------------------------------ ----------- ------------------------------
instance_name string RACDB2
instance_number integer 2
資料庫版本
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
作業系統資訊
[oracle@rac1 ~]$ uname -a
Linux rac1 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux
[oracle@rac2 ~]$ uname -a
Linux rac2 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux
[oracle@leonarding1 admin]$ uname -a
Linux leonarding1.oracle.com 2.6.32-200.13.1.el5uek #1 SMP Wed Jul 27 21:02:33 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
RAC所有資源資訊
[oracle@rac2 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....B1.inst application ONLINE ONLINE rac1
ora....B2.inst application ONLINE ONLINE rac2
ora....DB1.srv application ONLINE ONLINE rac2
ora.....TAF.cs application ONLINE ONLINE rac2
ora.RACDB.db 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
二啟動和關閉crs主程序
(1)簡單說說RAC日常管理都有哪些内容
1.節點管理:node日常管理
2.網絡管理:例如網卡配置 VIP虛拟ip外部網絡
内部網絡
3.叢集管理:CRS叢集資源管理 OCR oracle叢集系統資料庫 srv服務管理
votedisk表決磁盤
4.應用管理:資料庫、執行個體、監聽器、虛拟ip、注冊到RAC中的各種資源
(2)RAC叢集守護程序
[oracle@rac1 init.d]$ pwd
/etc/init.d
[oracle@rac1 init.d]$ ll | grep init*
init.crsd:# init.crsd - Control script for the CRS daemon.
init.crsd:# only be invoked from init.crs or from inittab.
init.crsd:# No manual invocation of init.crsd is supported.
init.crsd:# or on an automatic startup, this file will exist. init.crsd run will
init.cssd:# directory. It should only be invoked from init.crs.
init.evmd:# be invoked from init.crs.
[oracle@rac1 init.d]$ ls init*
init.crs init.crsd init.cssd init.evmd
這些就是RAC叢集守護程序,存放在Linux開機啟動的腳本目錄下,可以随作業系統的啟動而啟動。
./init.crs start啟動叢集程序
./init.crs stop停止叢集程序
./init.crs enable随作業系統的啟動而啟動
./init.crs disable不随作業系統的啟動而啟動
注:init.crs腳本是init.crsd init.cssd init.evmd腳本的引導腳本
crs主要程序
(1)crsd
負責管理HA 高可靠性操作
管理crs資源,如linstener,vip,ons,gsn等
由root使用者管理、啟動
(2)ocssd
管理各節點的關系,用于節點間通信
由oracle使用者運作管理
(3)oprocd
叢集程序管理 —Process monitor for the cluster.叢集監控程序
僅在沒有使用vendor的叢集軟體狀态下運作
(4)evmd
事件檢測程序,由oracle使用者運作管理
(5)主要log位置
$ORA_CRS_HOME/log/節點主機名(rac1 rac2)/racg
節點日志
$ORA_CRS_HOME/log/節點主機名(rac1 rac2)/crsd叢集軟體日志
$ORA_CRS_HOME/crs/init
$ORA_CRS_HOME/css/log 節點間通信的日志
$ORA_CRS_HOME/css/init
$ORA_CRS_HOME/evm/log 事件監控日志
$ORA_CRS_HOME/evm/init
$ORA_CRS_HOME/srvm/log
示範
[oracle@rac1 init.d]$ su – root必須使用root使用者執行RAC叢集腳本
Password:
[root@rac1 ~]# cd /etc/init.d
[root@rac1 init.d]# ./init.crs disable
Automatic startup disabled for system boot.
[root@rac1 init.d]# ./init.crs enable
Automatic startup enabled for system boot.
[root@rac1 init.d]# ./init.crs stop停止CRS主程序
Shutting down Oracle Cluster Ready Services (CRS):
Stopping resources.
Successfully stopped CRS resources包含crsd
Stopping CSSD.
Shutting down CSS daemon.包含cssd
Shutdown request successfully issued.
Shutdown has begun. The daemons should exit soon.
[root@rac1 init.d]# ./init.crs start啟動CRS主程序
Startup will be queued to init within 90 seconds.啟動将會在90秒内完成
[root@rac1 init.d]# crs_stat -t
等待一會并不一定是90秒,CRS叢集資源全部啟動了
(3)RAC叢集指令集目錄
$ORACLE_HOME/crs_1/bin
所有叢集指令都放在這個目錄下
(4)節點層指令
[oracle@rac1 init.d]$ olsnodes -n
rac1 1
rac2 2
[oracle@rac1 init.d]$ olsnodes -n -p
rac1 1 rac1-priv
rac2 2 rac2-priv
[oracle@rac1 init.d]$ olsnodes -n -p -i
rac1 1 rac1-priv rac1-vip
rac2 2 rac2-priv rac2-vip
這個指令用來顯示叢集節點的資訊
參數解釋:n列印節點号
P
列印私有網絡名
i
列印虛拟ip
(2)網絡層指令
[oracle@rac1 init.d]$ oifcfgOracle網卡配置工具
Name:
oifcfg - Oracle Interface Configuration Tool.
Usage: oifcfg iflist [-p [-n]]
oifcfg setif {-node <nodename> | -global} {<if_name>/<subnet>:<if_type>}...
oifcfg getif [-node <nodename> | -global] [ -if <if_name>[/<subnet>] [-type <if_type>] ]
oifcfg delif [-node <nodename> | -global] [<if_name>[/<subnet>]]
oifcfg [-help]
<nodename> - name of the host, as known to a communications network
<if_name> - name by which the interface is configured in the system
<subnet> - subnet address of the interface
<if_type> - type of the interface { cluster_interconnect | public | storage }
[oracle@rac1 init.d]$ oifcfg iflist檢視網卡對應的網段,oracle網卡配置工具
eth0 192.168.1.0
eth1 192.168.2.0
eth2 192.168.61.0
$ oifcfg getif沒有配置之前是什麼内容也沒有
$
oifcfg setif -global eth0/192.168.1.0:publicoracle網卡配置工具指定公有網卡
oifcfg setif -global eth1/192.168.2.0:cluster_interconnectoracle網卡配置工具指定私有網
[oracle@rac1 init.d]$ oifcfg getif擷取配置結果
eth0 192.168.1.0 global publiceth0是全局公共網卡
eth1 192.168.2.0 global cluster_interconnecteth1是全局私有網卡
三檢視OCR磁盤的資訊,并列印出OCR磁盤的内容
OCR:稱為Oracle叢集系統資料庫,一般RAC叢集中至少有2個OCR磁盤互為鏡像,OCR裡面注冊了叢集中的所有資源資訊(資料庫執行個體
監聽器 VIP OCR磁盤表決磁盤
服務節點應用
網卡等)
我們可以使用ocrcheck指令檢查OCR磁盤狀态
RACDB1@rac1 /home/oracle$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 104344總空間
Used space (kbytes) : 4324使用空間
Available space (kbytes) : 100020剩餘空間
ID : 1752469369
Device/File Name : /dev/raw/raw1磁盤路徑
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded
RACDB2@rac2 /home/oracle$ ocrcheck
Total space (kbytes) : 104344
Used space (kbytes) : 4324
Available space (kbytes) : 100020
Device/File Name : /dev/raw/raw1
使用ocrdump指令檢視OCR内容,但這個指令不能用于OCR的備份恢複隻可以用于閱讀
RACDB1@rac1 /home/oracle$ ocrdump -stdout | more
[SYSTEM.evm.acceptor]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}
[SYSTEM.evm.acceptor.rac1]
ORATEXT : (ADDRESS=(PROTOCOL=ipc)(KEY=Arac1_crs_evm))
[SYSTEM.evm.acceptor.rac2]
ORATEXT : (ADDRESS=(PROTOCOL=ipc)(KEY=Arac2_crs_evm))
使用ocrconfig指令配置維護OCR磁盤,例如導出備份OCRDUMP檔案再導入來恢複OCR
[oracle@rac1 init.d]$ su - root
[root@rac1 ~]# cd /home/oracle
[root@rac1 oracle]# ll
total 4
drwxr-xr-x 3 oracle oinstall 4096 Jul 5 2013 Desktop
[root@rac1 oracle]# ocrconfig -export ocr_bk.dmp導出OCR磁盤内容,一旦有問題可以導入恢複
total 104
-rw-r--r-- 1 root root 97517 Jul 4 17:57 ocr_bk.dmp
[root@rac1 oracle]# strings ocr_bk.dmp可以使用這個指令來檢視dump檔案内容
[root@rac1 oracle]# ocrconfig -import ocr_bk.dmp導入dump檔案恢複OCR
[root@rac1 oracle]# ocrconfig –replace ocrmirror /dev/raw/raw2建立新的OCR磁盤鏡像
四、檢視voting disk磁盤資訊
Voting Disk這個檔案主要用于記錄節點成員狀态,在出現腦裂時,決定那個Partion獲得控制權,其他的Partion必須從叢集中剔除。Voting
disk使用的是一種“多數可用算法”,如果有多個Voting disk,,則必須一半以上的Votedisk同時存活,Clusterware才能正常使用。比如配置了4個Votedisk,壞一個Votedisk,叢集可以正常工作,如果壞了2個,則不能滿足半數以上,叢集會立即宕掉,所有節點立即重新開機,是以如果添加Votedisk,盡量不要隻添加一個,而應該添加2個,總共的數量保證為奇數。
(1)表決磁盤檢查,必須為單數
RACDB2@rac2 /home/oracle$ crsctl query css votedisk
0. 0 /dev/raw/raw2
located 1 votedisk(s).定位1個表決磁盤
(2)備份votedisk盤
因為我們的表決磁盤使用的是裸裝置,是以使用裸裝置的dd指令來備份表決磁盤,使用root使用者
[root@rac1 oracle]# dd if=/dev/raw/raw2 of=/home/oracle/voting_disk.bak
208864+0 records in表決磁盤中的記錄數
208864+0 records out
106938368 bytes (107 MB) copied, 104.614 seconds, 1.0 MB/s
total 104644
-rw-r--r-- 1 root root 106938368 Jul 4 18:37voting_disk.bak
[root@rac1 oracle]# du -sm voting_disk.bak備份檔案103MB
103 voting_disk.bak
(3)恢複votedisk盤
[root@rac1 oracle]# dd if=/home/oracle/voting_disk.bak of=/dev/raw/raw2
使用上述指令即可恢複表決磁盤,由于我們的表決磁盤是正常狀态,是以不做恢複示範
(4)通過strings指令檢視votedisk内容
[root@rac1 oracle]# strings voting_disk.bak |sort -u
fSLC
ssLckcoT
SslcLlik
sSlcrEp0
}|{z
五、用srvctl分别啟動ASM,資料庫執行個體和資料庫
srvctl是應用層指令,稱作“服務管理工具”可以操作database;instance;listener;nodes;ASM;service;application
,其中application又包括“GSD ONS VIP”,這些資源都可以通過srvctl工具統一管理。
(1)關閉節點1的RAC執行個體
RACDB1@rac1 /home/oracle$ srvctl stop instance -d racdb -i racdb1 -o immediate
RACDB1@rac1 /home/oracle$ crs_stat -t
ora....B1.inst application OFFLINE OFFLINE
節點2還是可以正常登陸資料庫
RACDB2@rac2 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 4 19:39:02 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL>
(2)關閉節點2的RAC執行個體,當srvctl監測到RAC叢集的所有執行個體都關閉後會自動關閉資料庫
RACDB2@rac2 /home/oracle$ srvctl stop instance -d racdb -i racdb2 -o immediate
RACDB2@rac2 /home/oracle$ crs_stat -t
ora....B2.inst application OFFLINE OFFLINE
ora....DB1.srv application OFFLINE OFFLINE
ora.....TAF.cs application OFFLINE OFFLINE
ora.RACDB.db application OFFLINE OFFLINE
但ASM執行個體還在啟動狀态,監聽lsnr也在啟動狀态,application程序也在啟動狀态
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 4 19:45:15 2013
Connected to an idle instance.
此時已經不能連接配接到資料庫了
(3)當我們忘了指令文法的時候,直接srvctl就可以檢視幫助資訊了
RACDB1@rac1 /home/oracle$ srvctl stop asm
PRKO-2001 : Invalid command line syntax
RACDB1@rac1 /home/oracle$ srvctl
Usage: srvctl <command> <object> [<options>]
command: enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config
objects: database|instance|service|nodeapps|asm|listener
For detailed help on each command and object and its options use:
srvctl <command> <object> -h
可以使用-h選項打開幫助資訊
RACDB1@rac1 /home/oracle$ srvctl start asm -h
Usage: srvctl start asm -n <node_name> [-i <asm_inst_name>] [-o <start_options>] [-c <connect_str> | -q]
-n <node> Node name
-i <asm_inst_name> ASM instance name
-o <start_options> Options to startup command (e.g. open, mount, or nomount)
-c <connstr> Connect string (default: / as sysdba)
-q Query connect string from standard input
-h Print usage
先關閉節點2的ASM執行個體
RACDB2@rac2 /home/oracle$ srvctl stop asm -n rac2
ora....SM1.asm application ONLINE ONLINE rac1節點1的ASM執行個體還在啟動
ora....SM2.asm application OFFLINE OFFLINE節點2的ASM執行個體已經關閉
再關閉節點1的ASM執行個體
RACDB1@rac1 /home/oracle$ srvctl stop asm -n rac1
ora....SM1.asm application OFFLINE OFFLINE
ora....SM2.asm application OFFLINE OFFLINE
我們在把ASM資料庫
執行個體啟動起來,操作的順序是相反的
(4)先啟動ASM
在節點1和節點2分别啟動ASM
RACDB1@rac1 /home/oracle$ srvctl start asm -n rac1
RACDB2@rac2 /home/oracle$ srvctl start asm -n rac2
(5)再啟動資料庫和執行個體
RACDB1@rac1 /home/oracle$ srvctl start database -d racdb
ora....DB1.srv application OFFLINE OFFLINE注意這裡service沒有啟動
(6)再啟動服務service
RACDB1@rac1 /home/oracle$ srvctl start service -d racdb
ora....DB1.srv application ONLINE ONLINE rac1
ora.....TAF.cs application ONLINE ONLINE rac1
六、分别檢視RAC的參數檔案,REDO日志,UNDO表空間,TEMP表空間的資訊,說明一下在RAC環境下每個執行個體是否擁有專屬自己的上述對象
RAC環境下資料庫參數檔案的位置
(1)放在各自執行個體的本地
(2)放在共享存儲上,建議使用這種
我們既可以讓兩個執行個體使用共享存儲上的參數檔案
SQL> show parameter spfile;
------------------------------------ ----------- ---------------------------------------------
spfile string+DATA/racdb/spfileracdb.ora
共享ASM磁盤上的參數檔案
也可以讓兩個執行個體使用各自本地的參數檔案
[oracle@rac1 dbs]$ ll
total 52
-rw-rw---- 1 oracle oinstall 1506 Jul 8 12:37 ab_+ASM1.dat
-rw-rw---- 1 oracle oinstall 1544 Jan 1 2012 hc_+ASM1.dat
-rw-rw---- 1 oracle oinstall 1544 Jan 1 2012 hc_RACDB1.dat
lrwxrwxrwx 1 oracle oinstall 41 Jan 1 2012 init+ASM1.ora -> /u01/app/oracle/admin/+ASM/pfile/init.ora
-rw-r----- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-r----- 1 oracle oinstall 37 Jan 1 2012 initRACDB1.ora各自本地的參數檔案
如果想使用共享存儲上的參數檔案,需要在本地參數檔案中指定其路徑(添加一條spfile重定向),如果不想使用,則無需添加,隻在本地參數檔案中定義各自執行個體參數即可。
[oracle@rac1 dbs]$ cat initRACDB1.ora
SPFILE='+DATA/RACDB/spfileRACDB.ora'
SQL> select instance_name,host_name,status from gv$instance order by 1;
INSTANCE_NAME HOST_N STATUS
---------------- ------ ----------------------------------
RACDB1 rac1 OPEN
RACDB2 rac2 OPEN
gv$instance:global動态性能視圖,這是在RAC模式下特有的動态性能視圖,可以顯示所有執行個體的屬性資訊。
每個執行個體都有各自的undo表空間
RAC模式下防止2個執行個體争用undo復原段的考慮,每個執行個體的事務都放在各自的undo表空間上。如果一個執行個體shutdown,另外的執行個體可以通路這個執行個體的undo復原段。
SQL> select inst_id,name,value from gv$parameter where name='undo_tablespace' order by 1;
INST_ID NAME VALUE
---------- -------------------- ----------------------------------
1 undo_tablespace UNDOTBS1
2 undo_tablespace UNDOTBS2
兩個節點的RAC每個節點都有自己的undo表空間
每個執行個體都有各自的redo日志
RAC模式下每個執行個體自己管理自己的redo日志,防止争用。如果有一個執行個體shutdown,另外的執行個體可以通路這個執行個體的redo日志用來執行個體恢複。
SQL> select thread#,group#,sequence#,members,status from v$log;
THREAD# GROUP# SEQUENCE# MEMBERS STATUS
---------- ---------- ---------- ---------- ---------------------------------------------
1 1 8 2 INACTIVE
1 2 9 2 CURRENT
2 3 5 2 INACTIVE
2 4 6 2 CURRENT
Thread#=1是一個節點的redo日志
Thread#=2是另一個節點的redo日志
是以每個節點有自己的redo日志
所有執行個體可以共享TEMP臨時表空間
因為temp表空間隻是負責排序和hash操作的,不存在空間争用的問題,并且隻儲存資料中間狀态,一旦完成操作可以立即釋放資源,是以可以是共享狀态。
SQL> select tablespace_name from dba_temp_files;
TABLESPACE_NAME
------------------------------
TEMP
RAC模式下隻有一個TEMP表空間
RAC CRS OCR磁盤表決磁盤 ASM
=======================================================
Oracle專家QQ群(500人):60618621
歡迎oracle愛好者加入!