如题所示,本文将呈现关于Oracle Database 10g RAC中,危机群增加节点的技术细节。

在我的环境中:
现有RAC的节点为:
节点一:ora10g1
节点二:ora10g2

新增节点:
节点三:ora10g3

——————————————————————————————————
(OP:节点一、节点二)
首先,你需要有一个正在运行的,并且状态正常的RAC环境:

(OP:节点三)
其次,你需要按照当前RAC节点的配置部署好新节点的Linux环境,并作出相同的配置。
用户组创建:
groupadd -g 1000 oinstall
groupadd -g 2000 dba
groupadd -g 3000 asmadmin
groupadd -g 4000 asmdba
groupadd -g 5000 asmoper
groupadd -g 6000 oper

用户创建:
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1200 -g oinstall -G dba,oper,asmdba oracle

结果:

用户环境变量:
用户环境变量中,关于GRID和Oracle的安装路径,需要跟现有集群的节点的配置一致:
Grid:

Oracle:

节点三的YUM配置:
光盘挂载:

YUM源配置:

Hangcheck_timer模块:

文件:/etc/sysctl.conf

文件:/etc/security/limits.conf

文件:/etc/pam.d/login

1.时间同步:
这里我采用的是VMware模拟的环境,因此,我的各个节点虚拟机需要开启时间同步服务

2.共享存储:
共享存储的状态要与集群当前节点一致:

3.确保RAW设备正常:
在我的环境里RAC的OCR与Vote Disk是通过Linux的系统服务:rawdevices模拟出来的。
所以,在上面正确的拿到了对LUN的访问权限之后,还需要确保RAWDeveices服务的正常配置与运行。

4.需要在现有集群节点的/etc/hosts表中,添加对新增节点的IP与主机名关联;以及新增节点的/etc/hosts表中对于现有集群节点的描述:
因为集群各个节点之间都需要知道彼此的IP与主机名,所以新增的节点必须反映集群的各个节点的/etc/hosts表中。
于是,对于新增节点后的/etc/hosts表,需要保证它们都如下配置一般:

5.添加现有集群节点与新增节点之间的SSH等价性关系:
已有集群节点:

(上述,Xshell日志为节点一上的操作,节点二类似。)

新增节点:

———————————————————————————————————————
至此,节点三在加入现有RAC集群前的准备工作就完成了。

RAC 10g中的集群增加节点分为两个部分:
1. Clusterware的节点增加
2. Database的节点增加

下面,先从Clusterware开始。

—————————————————————————————————————————
添加,Clusterware节点:

(OP:现有集群节点,节点一或节点二)
这里选择节点一执行增加节点的操作。
这个过程中,需要用到:Xmanager – Passive。

节点一:
设置DISPLAY环境变量:

以CRS的安装用户登陆系统:
在我的环境中,我是通过grid安装Clusterware的。

上述的命令“addNode.sh”将拉起一个图形化界面,下面以截图的方式呈现细节:
addNode_1

addNode_2

addNode_3

在“下一步”正式安装之前,先看看节点三中Grid预设目录的当前状态:

上面的节点一发起的安装结束的时候,grid用户设置的这两个目录:
/u01/app/grid
/u01/app/10g/grid
状态会发生改变。

回到节点一,在上述截图中,选择“Install”,正式开始安装:
addNode_4
等待进度完成。
不同的主机的性能差异会影响这个过程的实际执行时间。

然后,你会看到如下解脱实施的执行脚本的界面:
addNode_5
如上图所示:
首先,在节点三上执行脚本:orainstRoot.sh

然后,在节点一执行:rootaddnode.sh

如上所示,就是执行成功的状态。

Possible Error:
在节点一执行:rootaddnode.sh的时候,你可能会遇到如下的错误:

遇到这个错误的时候,你需要修改你的GRID软件的bin目录中的:srvctl与vipca的脚本:

如上代码所示,找到“LD_ASSUME_KERNEL”的声明,并在其后添加“unset LD_ASSUME_KERNEL”的语句。
然后,重新执行:rootaddnode.sh,即可。

最后,再回到节点三,执行:root.sh

如上,代码所示:
你在节点三上执行脚本,一样可能会遇到“libpthread.so.0”的错误。

只不过,这时候的解决方法跟上述的方式有些许的不同,具体如下:
首先“LD_ASSUME_KERNEL”还是要被“unset”掉的:

查看集群的网络配置:

这里你可以看到,集群的网络的配置是不对的。

删掉它们:

重建:

然后,重新跑一下“vipca”:

VIPCA的图形化:
VIPCA_1

VIPCA_2

VIPCA_3

VIPCA_4

VIPCA_5

VIPCA_6
如上图所示,这样子,root.sh脚本的报错就解决了。
你没有必要再去执行一遍。
My Oracle Support:ID 414163.1,详细说明了这个root.sh执行过程中的BUG。:10gR2 RAC Install issues on Oracle EL5 or RHEL5 or SLES10 (VIPCA / SRVCTL / OUI Failures))

然后,回到前面节点一的“addNode.sh”的窗体,在脚本执行的那里选择“OK”,便可继续:
addNode_6
这样,RAC的增加节点中,关于Clusterware的节点增加就完成了。

你可以查看下当前的CRS资源状态:

你可以看到,节点三的资源已经被加入集群。

看看Grid安装目录的变化(和上文中,“addNode.sh”开始前的状态做比较):

————————————————————————————————————————————
下面,为Database增加节点。

在做该部分操作的时候,应该以Database软件的安装用户进行。
和CRS的增加节点一样,可以在现有节点的任意一个节点操作。

这里,我选择节点一操作。
而我的Database安装用户为oracle。

一样的,运行“addNode.sh”即可:

有时候,你可能在这一步遇到如下的错误:

这是因为你对“/u01/app/grid/oraInventory/”该目录的权限不足导致的。
你需要做出如下的修改,即可修正该错误:

“addNode.sh”的图形化:
db_addnode_1

db_addnode_2

db_addnode_3

db_addnode_4
等待进度结束。

这里,我遇到了一个意外:
db_addnode_5_error
根据告警信息,我可以在整个“addnode.sh”执行完成后,在失败的节点(这里,失败的节点是:节点二)上重新执行命令。

查看日志文件:/u01/app/grid/oraInventory/logs/addNodeActions2015-01-03_06-49-37AM.log

通过查看日志文件,你可以找到发生上述问题的原因:“Caused by: oracle.ops.mgmt.cluster.ClusterException: You do not have sufficient permissions to access the inventory ‘/u01/app/grid/oraInventory/logs’. Installation cannot continue. Make sure that you have read/write permissions to the inventory directory and restart the installer.: Permission denied :failed”

所以,在这里,跳过该错误,在后面赋予对目录:/u01/app/grid/oraInventory正确的访问权限,并且重新执行命令:
/u01/app/oracle/product/10g/dbhome_1/oui/bin/runInstaller -updateNodeList -noClusterEnabled ORACLE_HOME=/u01/app/oracle/product/10g/dbhome_1 CLUSTER_NODES=ora10g1,ora10g2,ora10g3 CRS=false “INVENTORY_LOCATION=/u01/app/grid/oraInventory” LOCAL_NODE=.
即可。

回到“addNode.sh”的oui,在Error的告警窗口选择“ok”,让安装进程继续跑:
db_addnode_6
需要跑脚本了:

“ok”,继续:
db_addnode_7

修正上述安装过程中,在节点二上的执行异常:

至此,节点二的问题已修复。

————————————————————————————————————————————————————
这样,节点三的数据库软件的扩展节点就完成了。

下面是对已经在运行的数据库实例的节点增加。
一、监听器
在为集群监听器增加节点之前,已有节点的监听器状态:

使用NETCA工具配置:

NETCA的图形化:
netca_1

netca_2

netca_3

netca_4

netca_5

netca_6

netca_7

netca_8
在这个过程中,图形化可能看不到具体的进度。
但是命令行却可以反映出正在配置哪个节点的监听器状态信息,如下:

netca_9
最后,配置完成。

节点三的监听目录中会被写入监听配置:

Oracle实例增加节点。
这一部分,需要通过DBCA工具完成。
在节点一上运行“dbca”,调出该工具:

DBCA图形化:
dbca_1

dbca_2

dbca_3

dbca_4

dbca_5

dbca_6

dbca_7

dbca_8

dbca_9
等待。

你可能会遇到这样的提示:
dbca_10
这时候,你可以查一下,自己的ASM的空间使用情况:

如果空间足够,那么就“Yes”,让OUI的进程继续:
dbca_11

你还可能在接下来的步骤里遇到这样的错误:
dbca_12_error
这里先选择“ok”,完成安装进度,稍后做出解答:
dbca_13

关于上面DBCA中,数据库实例在节点三上启动失败的问题,是由于节点三本地没有与实例相关的日志目录结构导致的。
具体如下:
首先看看节点一上的数据库的状态:

——————————————————————————————————————————————
To be Continue。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装