盛夏光年五月天微盘:Oracle RAC日常管理

来源:百度文库 编辑:中财网 时间:2024/05/10 20:05:05

Oracle RAC日常管理   

1.1 CRS 的管理

CRSCTL命令控制着本地节点的CRS 服务(Oracle clusterware processes)

停止CRS:

$ crsctl stop crs

 

或者

$ /etc/init.crs stop

 

或者

$ crs_stop –all

 

启动CRS:

$ crsctl start crs

 

或者

$ /etc/init.crs start

 

禁止Clusterware 在系统重启后自动启动的方法:

$ /etc/init.crs disable

 

启动Clusterware 在系统重启后自动启动的方法:

$ /etc/init.crs enable

 

查看CRS服务状态

$ crsctl check crs

 

6.2 OCR的资源管理

OCR的资源,当RAC cluster启动并成功运行以后,你可以使用crs_stat工具看到如下内容:

$ORA_CRS_HOME/bin/crs_stat

NAME=ora.db01.LISTENER_db01.lsnr

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db01


 

 

ORACLE 10G RAC 参考手册 63

NAME=ora.db01.gsd

TYPE=application

TARGET=ONLINE

STATE=OFFLINE

NAME=ora.db01.ons

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db01

NAME=ora.db01.vip

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db01

NAME=ora.db02.LISTENER_db02.lsnr

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

NAME=ora.db02.gsd

TYPE=application

TARGET=ONLINE

STATE=OFFLINE

NAME=ora.db02.ons

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

NAME=ora.db02.vip

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

NAME=ora.racdb.db

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

NAME=ora.racdb.racdb.cs

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02


 

 

ORACLE 10G RAC 参考手册 64

NAME=ora.racdb.racdb.racdb1.srv

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db01

NAME=ora.racdb.racdb.racdb2.srv

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

NAME=ora.racdb.racdb1.inst

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db01

NAME=ora.racdb.racdb2.inst

TYPE=application

TARGET=ONLINE

STATE=ONLINE on db02

 

通常情况下,所有的资源的状态都应该是online。另外,OCR每4个小时会备份一次。有一些情况你可以通过恢复的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两个节点。


 

 

ORACLE 10G RAC 参考手册 65

3.2 SRVCTL命令介绍

SRVCTL命令可以控制RAC数据库中的instance,listener以及services。

通常SRVCTL在ORACLE用户下执行。下面我们来介绍srvctl命令。

1、通过SRVCTL命令来start/stop/check所有的实例:

$ srvctl start|stop|status database -d

 

2、start/stop指定的实例:

$ srvctl start|stop|status instance -d -i

 

3、列出当前RAC下所有的

$ srvctl config database -d

 

4、start/stop/check 所有的nodeapps,比如:VIP, GSD, listener, ONS:

$ srvctl start|stop|status nodeapps -n

 

5、如果你使用ASM,srvctl也可以start/stop ASM实例:

$ srvctl start|stop asm -n [-i ] [-o]

 

6、可以获取所有的环境信息:

$ srvctl getenv database -d [-i ]

 

7、设置全局环境和变量:

$ srvctl setenv database -d -t LANG=en

 

8、从OCR中删除已有的数据库:

$ srvctl remove database -d

 

9、向OCR中添加一个数据库:

$ srvctl add database -d -o

[-m ] [-p] [-A /netmask] [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s ]

 

10、向OCR中添加一个数据库的实例:

$ srvctl add instance -d -i -n

$ srvctl add instance -d -i -n

 

11、向OCR中添加一个ASM实例:

$ srvctl add asm -n -i -o

 

12、添加一个service

$ srvctl add service -d -s -r


 

 

ORACLE 10G RAC 参考手册 66

[-a ] [-P ] [-u]

 

13、修改在其他节点上的service

$ srvctl modify service -d -s -I -t

 

14、relocate 某个节点的service到其他节点

srvctl relocate service -d -s -I

-t

 

3.3 SRVCTL相关的选项

SRVCTL START/STOP/STATUS options:

-d database name

-i instance name

-n node name (for nodeapps)

 

SRVCTL ADD options:

-A vip range, node, and database, address specification. The format of address string is:

[]// [/] [,]

[]// [/]

-a for services, list of available instances, this list cannot include preferred instances

-m domain name with the format “us.domain.com”

-n node name that will support one or more instances

-o $ORACLE_HOME to locate Oracle binaries

-P for services, TAF preconnect policy - NONE, PRECONNECT

-r for services, list of preferred instances, this list cannot include available instances.

-s spfile name

-u updates the preferred or available list for the service to support the specified

instance. Only one instance may be specified with the -u switch. Instances that already

support the service should not be included.

 

SRVCTL MODIFY options:

-i -t : the instance name (-i) is replaced by the

instance name (-t) -i

-r : the named instance is modified to be a preferred instance -A address-list for VIP application,

at node level -s : add or remove ASM dependency

 

SRVCTL RELOCATE options:

-i -t : the instance name (-i) is replaced by the instance name (-t)


 

 

ORACLE 10G RAC 参考手册 67

3.4 CRS及相关服务的常用命令的演示

1、查看状态的命令

# su – oracle -- 先切换到oracle用户

$ crs_stat -t -- 查看crs及所有的service的状态

Name Type Target State Host

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

ora.oradb.db application ONLINE ONLINE db01

ora....radb.cs application ONLINE ONLINE db01

ora....db1.srv application ONLINE ONLINE db01

ora....db2.srv application ONLINE ONLINE db02

ora....b1.inst application ONLINE ONLINE db01

ora....b2.inst application ONLINE ONLINE db02

ora....C1.lsnr application ONLINE ONLINE db01

ora.db01.gsd application ONLINE ONLINE db01

ora.db01.ons application ONLINE ONLINE db01

ora.db01.vip application ONLINE ONLINE db01

ora....C2.lsnr application ONLINE ONLINE db02

ora.db02.gsd application ONLINE ONLINE db02

ora.db02.ons application ONLINE ONLINE db02

ora.db02.vip application ONLINE ONLINE db02

$ crsctl check crs -- 用crsctl命令,检查crs相关服务的状态

CSS appears healthy

CRS appears healthy

EVM appears healthy

$ srvctl status nodeapps -n db01 (db02) -- 使用srvctl查看所有节点上的服务是否正常

VIP is running on node:db01

GSD is running on node:db01

Listener is running on node:db01

ONS daemon is running on node:db01

$ srvctl status database -d db -- 使用srvctl查看数据库状态

Instance db01 is running on node db01

Instance db02 is running on node db02

 

2、启动和关闭相关服务的命令

# su – oracle

$ crs_start –all --启动所有的crs服务

$ crs_stop –all --停止所有的crs服务

$ crsctl start crs --启动crs服务

$ crsctl stop crs --停止crs服务


 

 

ORACLE 10G RAC 参考手册 68

$ 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 --停止数据库

 

3.5 ORACLE RAC增加一个节点

这部分详细步骤请参考Metalink Note 270512.1

为RAC添加节点,主要分为一下几个大的步骤:

A. 按照第二章《安装oracle RAC前的准备》配置新节点的OS和硬件环境。

B. 增加一个节点到cluster中。

C. 增加RAC软件到新的节点。

D. 为新的节点重新配置listeners。

E. 使用DBCA增加实例。

下面是详细的步骤

A. 按照第二章《安装oracle RAC前的准备》配置新节点的OS和硬件环境。

B. 增加一个节点到cluster中。

1、在oracle用户下,设置DISPLAY环境变量,运行在$ORA_CRS_HOME/oui/bin 目录下的addNode.sh

$ DISPLAY=ipaddress:0.0; export DISPLAY

$ cd $ORA_CRS_HOME/oui/bin

$ ./addNode.sh

 

3. 当OUI出现欢迎界面点击next.

4. 在 "Specify Cluster Nodes to Add to Installation" 节面, 增加一个公用IP对应的主机名和私有IP对应的主机名(与/etc/hosts中的记录一样)点击next.

5. 出现"Cluster Node Addition Summary"界面, 点击 next.

6. 出现"Cluster Node Addition Progress" 出现. 将会提示以root用户运行


 

 

ORACLE 10G RAC 参考手册 69

rootaddnode.sh。但是首先需要确认在rootaddnode.sh中的CLSCFG信息是正确的。应该是包含新的公有和私有IP对应的主机名。

比如:

$CLSCFG -add -nn ,2 -pn ,2 -hn ,2

 

确认好以后,运行rootaddnode.sh script

$ su root

$ cd $ORA_CRS_HOME

$ sh -x rootaddnode.sh

 

执行完以后,点击OK 继续。

7. 之后,另一个对话框会出现。需要所有的节点上执行$ORA_CRS_HOME/root.sh。

$ su root

$ cd $ORA_CRS_HOME

$ sh -x root.sh

 

完成以后, 点击OK继续。

8. 在所有的新节点上运行完root.sh后, 在任意一个节点上运行

$ORA_CRS_HOME/bin/racgons add_config :4948 :4948

 

9. 安装结束。

C. 增加Oracle Database software (with RAC option) 到新的节点

1. 在原来的db节点上,进入到$ORACLE_HOME/oui/bin目录,运行addNode。

$ DISPLAY=ipaddress:0.0; export DISPLAY

$ cd $ORACLE_HOME/oui/bin

$ ./addNode.sh

 

2. OUI欢迎界面又出现了,点击next。

3. 在 "Specify Cluster Nodes to Add to Installation" 界面,指定你想加入的节点,点击next。

4. "Cluster Node Addition Summary" 界面出现, 点击next。

5. 然后进入到 "Cluster Node Addition Progress"界面.提示你以root的身份运行 root.sh。


 

 

ORACLE 10G RAC 参考手册 70

$ su root

$ cd $ORACLE_HOME

$ ./root.sh

 

执行完成以后, 点击OK继续。

6. 安装完成,exit安装界面

7. 然后以root身份进入到$ORACLE_HOME/bin目录,运行vipca

$ su root

$ DISPLAY=ipaddress:0.0; export DISPLAY

$ cd $ORACLE_HOME/bin

$ ./vipca -nodelist ,

 

8. VIPCA欢迎界面出现,点击 next。

9. 增加新的节点的vip信息点击next。

10. 看到 "Summary" 界面以后, 点击finish.

11. 然后我们将看到创建和启动新的CRS资源,然后点击退出。

12. 确认interconnect是否正确,使用:

$ oifcfg getif

 

如果不正确,使用oifcfg命令修改:

$ oifcfg setif /:

 

例子:

$ oifcfg setif -global eth1/10.10.10.0:cluster_interconnect

 

或者

$ oifcfg setif -node eth1/10.10.10.0:cluster_interconnect

 

D. 为新节点重新配置listeners

1、使用netca来配置。过程与一般的创建RAC的listener一致。

2、 使用 crs_stat命令确认listener CRS资源是否被创建了。

3、 新增加的listener应该是offline的。使用srvctl命令启动这个节点上的nodeapps。

$ srvctl start nodeapps -n


 

 

ORACLE 10G RAC 参考手册 71

4、 再次使用crs_stat 确定VIP's, GSD's, ONS's, and listeners等CRS资源是online的。

E. 通过DBCA增加一个新的实例. (对于standby 请看F)

1. 使用DBCA在原来的节点上创建一个新的实例。

$ DISPLAY=ipaddress:0.0; export DISPLAY

$ dbca

 

2. 在欢迎界面选择"Oracle Real Application Clusters",点击next。

3. 选择 "Instance Management",点击next.

4. 选择"Add an Instance", 点击next.

5. 选择你想加入新的实例的数据库,并且指定sysdba权限的用户。点击next。

6. 选择正确的实例名和节点,点击next。

7. 在存储界面直接点击next。

8. 到了 summary界面, 点击OK。开始创建新的实例

9. 完成以后,选择"No" 退出 DBCA.

10. 通过查询gv$instance,确认实例是否创建成功。

F. 添加一个实例到Standby数据库

1、在你的DataGuard中,如果你的主节点是RAC,那么要保证在E中的步骤都已经执行过了。如果你的主节点是单实例。那么增加redolog组和threads (使用alter database)。

SQL>alter database add logfile thread 2

group 3 ('/dev/rzj_redo2_5_120m ') size 120M,

group 4 ('/dev/rzj_redo2_6_120m ') size 120M;

SQL>alter database enable public thread 2;

 

2、在主节点上创建一个新的standby控制文件,并copy这个控制文件到standby。

SQL>alter database create standby controlfile as "/opt/app/oracle/stby.ctl"

 

3、关闭standby数据库, 备份现在standby数据库上控制文件,然后用新的standby控制


 

 

ORACLE 10G RAC 参考手册 72

文件来替换。

4、 调整新实例的init.ora或者spfile的参数,比如:thread, instance_name,instance_number, local_listener, undo_tablespace等等。

5. 最后恢复standby数据。

3.6 升级ORACLE RAC

如果升级oralce的RAC或者oracle最好在建库之前来做。这样比较简单。

以10.2.0.3为例

在建库之前的方法:

Upgrading Oracle Clusterware Installation

1 以root身份登录,执行xhost +

2 停止 Oracle Clusterware:

crsctl stop crs

3 在其余的节点上重复 1 和 2.

4 回到第一个节点,以oracle用户登录。.

5 在一个终端输入:

export ORACLE_HOME=/crs/oracle/product/10.2.0/crs --假设你的crs的home是这个。

6 进入到patch的目录:

cd /opt/oracle/patches/Disk1/

./runInstaller

然后

7 出现 Welcome界面.

Click Next.

8 在 Specify Home Details 界面, click Next.

9 在Hardware Cluster Installation Mode 界面, click Next.

10 在the Summary 界面, click Install.

11 NOTE: 安装完成以后不要点击exit推出。

12 再打开一个终端.

13 以 root 登录.

14 进入CRS_HOME,执行如下操作。

$ORA_CRS_HOME/install/root102.sh

15 在其他节点上按顺序重复12-14

16 在第一个节点上,点击exit推出安装。.

Upgrading the RAC Installation


 

 

ORACLE 10G RAC 参考手册 73

1 在第一个节点打开一个终端.

2 以oracle登录.

3 停止所有节点Oracle Clusterware node applications.

$ORACLE_HOME/bin/srvctl stop nodeapps -n

NOTE: 如果有报错。忽略掉

4 可以在其他节点上重复3也可以在一个节点上改变nodename停止nodeapps.

5 在第一个节点上以oracle登录。打开一个终端

6 设置ORACLE_HOME:

export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1 --你的ORACLE_HOME

7 然后启动补丁程序:

cd /opt/oracle/patches/Disk1/

./runInstaller

8 Welcome 界面出现.

9 点击Next.

10 在Specify Home Details 界面, 点击Next.

11 在Specify Hardware Cluster Installation Mode 界面, 点击 Next.

12 在 the Summary 界面, 点击Install.

安装快完成时提示 run root.sh as user root.

13 打开一个终端.

14 执行:

/opt/oracle/product/10.2.0/db_1/root.sh

15 在其余的节点上按顺序重复13-14

16 执行完以后,点击 Exit推出.

17 然后在第一个节点上打开一个终端。

18 以oracle用户登录.

19 执行: