天天看點

Oracle RAC日常管理指令

一、檢視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愛好者加入!