基于LINUX的Oracle 10G RAC管理维护学习手记之五–RAC下其他维护实施相关/案例
基于LINUX的Oracle 10G RAC管理维护学习手记之前言目录
基于LINUX的Oracle 10G RAC管理维护学习手记之一―――RAC相关以及基础知识
基于LINUX的Oracle 10G RAC管理维护学习手记之二―――RAC规划安装
基于LINUX的Oracle 10G RAC管理维护学习手记之三(上)―――RAC日常管理维护
基于LINUX的Oracle 10G RAC管理维护学习手记之三(下)―――RAC日常管理维护
基于LINUX的Oracle 10G RAC管理维护学习手记之四―――RAC故障/负载平衡配置
基于LINUX的Oracle 10G RAC管理维护学习手记之五―――RAC下其他维护实施相关/案例
基于LINUX的Oracle 10G RAC管理维护学习手记之六―――RAC性能监控调整
基于LINUX的Oracle 10G RAC管理维护学习手记之七―――其他Troubleshooting
本环节侧重一些RAC工程维护相关的实际案例,暂举例以下案例
1.集群中主机名的更改
2.集群中IP地址的更改
3.集群中节点的添加/删除
4.升级:9i rac升级10g rac
5.rac + dg 搭建
6.其他
<一> 集群中主机名的更改
以下为一个实际案例,下表为更改前后的主机名称对比
hostname:node1/node2 —-> td1/td2
private_name:node1_priv/node2_priv —-> td1_priv/td2_priv
vip_name:node1_vip/node2_vip —-> td1_vip/td2_vip
1.生成listener的cap文件
node1->crs_stat –p ora.node1.LISTENER_NODE1.lsnr>/home/oracle/ora.node1.LISTENER_NODE1.lsnr.cap
node1->crs_stat –p ora.node2.LISTENER_NODE2.lsnr>/home/oracle/ora.node2.LISTENER_NODE2.lsnr.cap
2.停掉所有的资源,备份ocr、votingdisk并重新格式化
备份OCR
[root@node1 backup]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 104176
Used space (kbytes) : 4424
Available space (kbytes) : 99752
ID : 2042344313
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded
[root@node1 init.d]# ocrconfig -export /backup/ocr_1.bak
备份votedisk
[root@node1 ~]# crsctl query css votedisk
0. 0 /dev/raw/raw110
located 1 votedisk(s).
[root@node1 ~]# dd if=/dev/raw/raw110 of=/backup/votedisk.bak
重新格式化
[root@td01 ~]# dd if=/dev/zero of=/dev/raw/raw1 bs=1024k count=1
[root@td01 ~]# dd if=/dev/zero of=/dev/raw/raw110 bs=1024k count=1
3.OS上修改hostname并编辑相关文件,重启主机(步骤略)
4.重新配置集群互信。(步骤略)
5.编辑$ORA_CRS_HOME/ install/rootconfig文件,修改以下为你实际的情况。
ORA_CRS_HOME=/opt/oracle/product/10.2.0/crs_1
CRS_ORACLE_OWNER=oracle
CRS_DBA_GROUP=oinstall
CRS_VNDR_CLUSTER=false
CRS_OCR_LOCATIONS=/dev/raw/raw1
CRS_CLUSTER_NAME=crs
CRS_HOST_NAME_LIST=td1,1,td2,2
CRS_NODE_NAME_LIST=td1,1,td2,2
CRS_PRIVATE_NAME_LIST=td1-priv,1,td2-priv,2
CRS_LANGUAGE_ID=’AMERICAN_AMERICA.WE8ISO8859P1′
CRS_VOTING_DISKS=/dev/raw/raw110
CRS_NODELIST=td1,td2
CRS_NODEVIPS=’td1/td1-vip/255.255.255.0/eth0,td2/td2-vip/255.255.255.0/eth0′
在每个节点依次执行:
[root@td2 install]# /opt/oracle/product/10.2.0/crs_1/install/rootconfig
Checking to see if Oracle CRS stack is already configured
Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory ‘/opt/oracle/product/10.2.0′ is not owned by root
WARNING: directory ‘/opt/oracle/product’ is not owned by root
WARNING: directory ‘/opt/oracle’ is not owned by root
WARNING: directory ‘/opt’ is not owned by root
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node:
node 1: td1 td1-priv td1
node 2: td2 td2-priv td2
clscfg: Arguments check out successfully.NO KEYS WERE WRITTEN. Supply -force parameter to override.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
Startup will be queued to init within 30 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
td1
td2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeappsCreating VIP application resource on (2) nodes…
Creating GSD application resource on (2) nodes…
Creating ONS application resource on (2) nodes…
Starting VIP application resource on (2) nodes…
Starting GSD application resource on (2) nodes…
Starting ONS application resource on (2) nodes…
如果是10.2.0.1 版本,在最后一个节点上执行的时候会因为vip的bug抛出异常,在该节点上调用VIPCA图形化界面。
这样gsd、ons和vip已经全部注册到OCR中。
[root@td1 install]# crs_stat -t
Name Type Target State Host
————————————————————
ora.td1.gsd application ONLINE ONLINE td1
ora.td1.ons application ONLINE ONLINE td1
ora.td1.vip application ONLINE ONLINE td1
ora.td2.gsd application ONLINE ONLINE td2
ora.td2.ons application ONLINE ONLINE td2
ora.td2.vip application ONLINE ONLINE td2
6.使用oifcfg配置共有/私连网络
td1-> oifcfg setif -global eth0/10.194.129.0:public
td1-> oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
7.注册其他资源到集群
(1)注册监听到集群
修改监听配置文件lisntener.ora并编辑生成的cap文件(改名),更改其中用到的hostname.
td1-> crs_register ora.td1.LISTENER_TD1.lsnr -dir /home/oracle
td1-> crs_register ora.td2.LISTENER_TD2.lsnr -dir /home/oracle
或者使用netca图形化界面来配置监听.
(2)注册ASM实例到集群(如果使用ASM)
td1->srvctl add asm -n td1 -i ASM1 -o $ORACLE_HOME
td1->srvctl add asm -n td2 -i ASM2 -o $ORACLE_HOME
(3)注册instance/database到集群
td1->srvctl add database -d demo -o $ORACLE_HOME
td1->srvctl add instance -d demo -i demo1 -n td1
td1->srvctl add instance -d demo -i demo2 -n td2
验证:
td1-> crs_stat -t
Name Type Target State Host
————————————————————
ora.demo.db application ONLINE ONLINE td1
ora….o1.inst application ONLINE ONLINE td1
ora….o2.inst application ONLINE ONLINE td2
ora….SM1.asm application ONLINE ONLINE td1
ora….D1.lsnr application ONLINE ONLINE td1
ora.td1.gsd application ONLINE ONLINE td1
ora.td1.ons application ONLINE ONLINE td1
ora.td1.vip application ONLINE ONLINE td1
ora….SM2.asm application ONLINE ONLINE td2
ora….D2.lsnr application ONLINE ONLINE td2
ora.td2.gsd application ONLINE ONLINE td2
ora.td2.ons application ONLINE ONLINE td2
ora.td2.vip application ONLINE ONLINE td2
登陆数据库检查db使用的内连接链路
SQL> select * from v$cluster_interconnects;
NAME IP_ADDRESS IS_PUBLIC SOURCE
————— —————- ——— ——————————-
eth1 10.10.10.145 NO Oracle Cluster Repository
如果使用了OCFS作为共享文件格式,注意在启动数据库前检查相应OCFS的配置并确认ocfs是否能正常挂载使用。
2.集群中IP地址的更改
IP地址的更改比hostname的更改相对容易一些。对于同网段的public/private IP更改,无需进行特别操作。如果是不同网段,需要使用oifcfg处理。因为VIP是作为资源注册到OCR,所以任何VIP的改动都需调用相关命令进行处理。
以上处理都需要在集群资源停掉的基础上操作。
以下是修改前后的public/pricate/vip
Public IP 10.194.129.145/146 –> 10.194.128.145/146
Privite IP 10.10.10.145/146 –> 10.10.1.145/146
Virtual IP 10.194.129.147/148 –> 10.194.128.147/148
1.停掉各资源
数据库正常关库,其余资源使用crs_stop 停止。
2.重新修改网卡ip/gateway/host文件等,重启网络等相关服务
3.利用oifcfg更改public/private ip
查看当前使用
td1-> oifcfg getif
eth1 10.10.10.0 global cluster_interconnect
eth0 10.194.129.0 global public
删除当前
td1-> oifcfg delif -global eth0
td1-> oifcfg delif -global eth1
重新添加
td1-> oifcfg setif -global eth0/10.194.128.0:public
td1-> oifcfg setif -global eth1/10.10.1.0:cluster_interconnect
4.更新注册到OCR中的vip配置(root用户)
[root@td1 ~]# crs_register -update ora.td1.vip -o oi=eth0,ov=10.194.128.147,on=255.255.255.0
[root@td1 ~]# crs_register -update ora.td2.vip -o oi=eth0,ov=10.194.128.148,on=255.255.255.0
或者使用(root用户)
[root@td1 ~]# srvctl modify nodeapps -n td1 -A 10.194.128.147/255.255.255.0/eth0
[root@td1 ~]# srvctl modify nodeapps -n td2 -A 10.194.128.148/255.255.255.0/eth0
5.如果你使用了ocfs,修改ocfs配置文件(/etc/ocfs/cluster.conf),验证修改后是否可用
6.修改监听listener配置文件
7.启动集群各节点资源并验证
td1-> crs_start –all
登陆数据库,检验内连接是否生效。
SQL> select * from v$cluster_interconnects;
NAME IP_ADDRESS IS_PUBLIC SOURCE
————— —————- ——— —————————-
eth1 10.10.1.145 NO Oracle Cluster Repository
<三>.集群中节点的删除/添加
同9i的节点删除/添加相比,10g对节点的添加和删除相对来说略显麻烦,但操作起来更加规范。
因为集群件的存在,需调用一系列接口命令将资源从OCR中添加/删除,本文不再对该案例做详细描述,具体参见oracle官方联机文档RAC部分–Adding and Deleting Nodes and Instances on UNIX-Based Systems.
<四>.升级与迁移
RAC的迁移与升级并不比单实例复杂多少。对于一个rac新手来说,在思想上也无需觉得这是个很庞杂的事情,当然前提是你有足够的单实例方面的基础知识并对此深刻理解。
比如,利用rman备份,我们可以方便的将一个运行在单节点的实例迁移到rac环境下。需要做的重点,仅仅是迁移数据库(你可以想象成是单实例对单实例),然后编辑参数文件,添加其他节点启动db所必要的redo和undo,并注册数据库资源到集群中以便管理。
如果你的迁移或升级有停机时间的限制,那大部分情况下重点的问题并不在于被操作对象是RAC架构,而在于如何制定你的MAA策略。比如你需要运用一些表空间传输或者高级复制/流等方面的特性来压缩停机时间,这也许因为是RAC架构而增加了整个施工的难度,但很多时候问题的重点并不在于此。
接下来提供一个9I RAC同机静默升级到 10G RAC的案例,详细可参见我的一篇blog http://www.easyora.net/blog/9i_rac_upgrade_10g_rac.html
<五>.高可用架构:RAC+DG
应该说,rac+dg企业级的架构在高可用和灾备方面来说还是有相当大的市场。
在搭建与管理方面,rac(主)+DG(备)的过程与单实例的主备也无太大异同。需要注意以下方面(但不限于以下方面):
1.log gap的检测问题
注意正确配置fal_server与fal_clicent参数,尤其是对于rac主库归档到各自节点上的情况下,standby端gap server需要将每个主库节点都涵盖进去。
2.switchover/failover注意事项
做任何切换的时候,需要将rac端只保留一个alive的实例,其余实例关闭后,切换步骤跟单节点dg基本一致。
3.standby logfile问题
如果采用LGWR传输日志,需要备库端添加standby logfile日志。需要注意添加的standby logfile的thread要与主库一致。如果你的主库节点有3个实例,那需要添加3大组与rac主库相同thread号的备用日志,每个thread至少2组日志即可。

很好,多谢兄台
中文的rac文档不多啊,加你msn了。