11G R2 RAC添加删除节点
参考链接:
http://www.linuxidc.com/Linux/2012-11/74199.htm
http://blog.csdn.net/ying0216/article/details/5092007
一、删除节点
环境介绍:HPUX11.31,数据库:11.2.0.3 两节点RAC
说明:在删节点的时候,未停库,将删除节点的库也未删除。
另外还有一套虚拟机上实施的,
OS:RHEL 5.1
DB:11.2.01
所以有些错误只有虚拟机上才有的。
节点2操作:(将要删除的节点bydb2)
1、
grid@bydb2:/home/grid>srvctl
disable listener -n bydb2 -----禁止监听
2、
grid@bydb2:/home/grid>srvctl
stop listener -n bydb2 -----停止监听
3、
grid@bydb2:/home/grid>crsctl
status res -t ----查看是否成功
ora.LISTENER.lsnr
ONLINE ONLINE bydb1
OFFLINE OFFLINE bydb2
...................
4、
grid@bydb2:/cd
$ORACLE_HOME/oui/bin
5、
grid@bydb2:/oracle/app/crs_home/oui/bin>./runInstaller
-updateNodeList -noClusterEnabled -local ORACLE_HOME=/oracle/app/crs_home "CLUSTER_NODE=bydb1" -----测试通过
第二种方法:./runInstaller -updateNodelist ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={bydb1}" CRS=TRUE
第三种办法:$ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/crs/app/oracle/product/crs_1 "CLUSTER_NODES=bydb1" "INVENTORY_LOCATION=/oracle/app/oracle/oraInventory" LOCAL_NODE=bydb1 CRS=TRUE
增加INVENTORY_LOCATION 和LOCAL_NODE选项
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 6647 MB Passed
The inventory pointer is located at /var/opt/oracle/oraInst.loc
The inventory is located at /oracle/app/oraInventory
'UpdateNodeList' was successful.
6、
grid@bydb2:/oracle/app/crs_home/oui/bin>olsnodes
-s -t
bydb1 Active Unpinned
bydb2 Active Unpinned
停止并删除VIP
7、
grid@bydb2:/oracle/app/crs_home/oui/bin>crs_stat
-t
Name Type Target State Host
------------------------------------------------------------
ora.ARCHIVE.dg ora....up.type ONLINE ONLINE bydb2
ora.CRS.dg ora....up.type ONLINE ONLINE bydb1
ora.DATA01.dg ora....up.type OFFLINE OFFLINE
ora.DATA02.dg ora....up.type ONLINE ONLINE bydb2
ora....ER.lsnr ora....er.type ONLINE ONLINE bydb1
ora....N1.lsnr ora....er.type ONLINE ONLINE bydb1
ora.QUORUM.dg ora....up.type ONLINE ONLINE bydb2
ora.asm ora.asm.type ONLINE ONLINE bydb1
ora.bydb.db ora....se.type ONLINE ONLINE bydb2
ora....SM1.asm application ONLINE ONLINE bydb1
ora....B1.lsnr application ONLINE ONLINE bydb1
ora.bydb1.gsd application ONLINE OFFLINE
ora.bydb1.ons application ONLINE ONLINE bydb1
ora.bydb1.vip ora....t1.type ONLINE ONLINE bydb1
ora....SM2.asm application ONLINE ONLINE bydb2
ora....B2.lsnr application OFFLINE OFFLINE
ora.bydb2.gsd application ONLINE OFFLINE
ora.bydb2.ons application ONLINE ONLINE bydb2
ora.bydb2.vip ora....t1.type ONLINE ONLINE bydb2
ora.cvu ora.cvu.type ONLINE ONLINE bydb1
ora.gsd ora.gsd.type ONLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE bydb1
ora.oc4j ora.oc4j.type OFFLINE OFFLINE
ora.ons ora.ons.type ONLINE ONLINE bydb1
ora.scan1.vip ora....ip.type ONLINE ONLINE bydb1
8、
grid@bydb2:/oracle/app/crs_home/oui/bin>srvctl
stop vip -i bydb2_vip ----多余的,需要在ROOT下执行
9、/oracle/app/crs_home/bin# ./srvctl remove vip -i bydb2_vip -----root 用户下
Please confirm that you intend to remove the VIPs bydb2_vip (y/[n]) y
# ./crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'bydb2'
CRS-2673: Attempting to stop 'ora.crsd' on 'bydb2'
......
CRS-4133: Oracle High Availability Services has been stopped.
10、删除节点 ---这步好像不需要操作 --删不掉。
首先停止CRS,不然会报如下错误:
[root@bydb2 bin]#./ crsctl delete node -n bydb2 --------、/oracle/app/crs_home/bin
CRS-4658: The clusterware stack on node racnode1 is not completely down.
CRS-4000: Command Delete failed, or completed with errors.
[root@bydb2 bin]# ./crsctl stop crs
11、# cd /oracle/app/crs_home/crs/install
# ./rootcrs.pl -deconfig -force
Using configuration parameter file: ./crsconfig_params
PRCR-1119 : Failed to look up CRS resources of ora.cluster_vip_net1.type type
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.gsd is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.ons is registered
Cannot communicate with crsd
CRS-4544: Unable to connect to OHAS
CRS-4000: Command Stop failed, or completed with errors.
Successfully deconfigured Oracle clusterware stack on this node
节点1操作:bydb1
12、 grid@bydb1:/oracle/app/crs_home/oui/bin>./runInstaller -updateNodeList ORACLE_HOME=/oracle/app/crs_home CLUSTER_NODES={bydb1} CRS=TRUE
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 7016 MB Passed
The inventory pointer is located at /var/opt/oracle/oraInst.loc
The inventory is located at /oracle/app/oraInventory
'UpdateNodeList' was successful.
13、crsctl status res -t
查看系统的状态是否正常了
14、最后在节点一,DBCA删除数据库。
二、添加节点:
首先在主节点执行检查:(grid 安装文件目录)
./runcluvfy.sh stage -pre crsinst -n bydb2 -verbose
--11.2.0.2的安装有BUG,共享磁盘检测总是不成功,所以在确认只有磁盘检测错误,并且在新节点上确定能够访问共磁盘的情况下忽略CHECKS
如果因为一些无关紧要的问题检查不成功,那么一定要加上这一句:(可以查看一下addNode.sh,就明白了)
export IGNORE_PREADDNODE_CHECKS=Y
1、 如果是完全空白的机器,执行以下命令会从别的节点拷贝全部的GI和DB的软件,然后完成注册OCR等操作。(
grid@bydb1:/oracle/app/crs_home/oui/bin
这个目录)
1)扩展Grid节点
./addNode.sh "CLUSTER_NEW_NODES={bydb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={bydb2_vip}"
2)扩展Oracle数据库软件(ORACLE用户,DB_HOME:oracle/app/oracle/product/11.2.0/db_1/oui/bin下执行下面的命令)
addNode.sh -silent "CLUSTER_NEW_NODES={bydb01}"
建议用上面的方法.
./addNode.sh -silent "CLUSTER_NEW_NODES={bydb2} CLUSTER_NEW_PRIVATE_NODE_NAMES={bydb2-priv} CLUSTER_NEW_VIRTUAL_HOSTNAMES={bydb2-vip}"
问题(11.2.0.1liunx32位平台存在这个问题,11.2.0.3HPUX平台下没有)
oracle@rac1[/oracle/app/oracle/product/11.2.0/db_1/oui/bin]./addNode.sh -silent "CLUSTER_NEW_NODES={bydb2}"
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 4790 MB Passed
Oracle Universal Installer, Version 11.2.0.1.0 Production
Copyright (C) 1999, 2009, Oracle. All rights reserved.
SEVERE:Number of new nodes being added are not equal to number of new virtual nodes. Silent install cannot continue.
据称这个是BUG 需要使用
./addNode.sh -silent "CLUSTER_NEW_NODES={bydb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={bydb2-vip}"
如果还是不行,那么就需要修改
db_home下的lsnode命令有问题,如下处理
$ cd $DB_HOME/bin
$ mv lsnodes lsnodes.old
$ ln -s $GRID_HOME/bin/olsnodes $DB_HOME/bin/lsnodes
$ ln -s $GRID_HOME/bin/olsnodes.bin $DB_HOME/bin/lsnodes.bin
$ cd $DB_HOME/oui/bin
$ mv lsnodes lsnodes.old
$ ln -s $GRID_HOME/bin/olsnodes $DB_HOME/oui/bin/lsnodes
$ ln -s $GRID_HOME/bin/olsnodes.bin $DB_HOME/oui/bin/lsnodes.bin
2、 如果这个节点上已经有GI和DB的软件,就不需要再copy一遍了,可以通过下面的命令直接添加节点,这样是很快的,也就是更改一下OCR,同时启动一下实例就OK了
./addNode.sh -noCopy "CLUSTER_NEW_NODES={bydb2} CLUSTER_NEW_VIRTUAL_HOSTNAMES={bydb2-vip}"
在需要添加的节点上运行root.sh脚本,完成最后的添加
3、最后DBCA添加instance,NETCA建监听。
也可以静默安装
例子:Oracle_home/bin/dbca -silent -addInstance -nodeList bydb2 -gdbName rac -instanceName bydb2 -sysDBAUserName sys -sysDBAPassword oracle
1) cd /u01/app/11.2.0/grid/oui/bin
2) runInstaller -updateNodeList Oracle_HOME=/u01/app/11.2.0/grid CLUSTER_NODES={racnode1,racnode2} CRS=TRUE
3) [root@racnode1 grid]# cd /u01/app/11.2.0/grid/crs/install/
4) [root@racnode1 install]# ./rootcrs.pl -deconfig -force
5) Successfully deconfigured Oracle clusterware stack on this node
到此,删除添加都完成了,步骤不多也比较简单。
参考链接: http://gaoshan.blog.51cto.com/742525/331561
补充:
如果使用DBCA工具进行数据库的创建、集群服务创建,或使用netca进行集群监听器的配置等操作,相应的配置结果会被自动写入OCR中注册记载。但如果手工创建了数据库(create database)、手工编辑了监听器文件,则OCR中不作记载。这是需要管理员使用srvctl add 命令进行群集服务信息箱OCR的手工注册。反之,如果进行了数据库的直接删除等类似操作,而未经过DBCA工具等,则需要使用反向命令srvctl remove进行信息的手工删除。
例如,下面通过add database命令手工添加一套群集数据库sdzy,在集群节点node_a的node_b上分别添加实例
sdzy1和sdzy2:
$srvctl add database -d sdzy -o /db/oracle/product/10.2.0/db_1
$srvctl add instance -d sdzy -i sdzy1 -n node_a
$srvctl add instance -d sdzy -i sdzy2 -n node_b
在上面的过程中,关于数据库sdzy的定义被添加到了集群注册表中(这并不意味着这个数据库一定存在)。其中-d 参数后面的是数据库名,-o参数声明了这套数据库的ORACLE_HOME,-i参数声明的是在各节点上的数据库实例名,而-n参数则描述了节点名。
检查数据库在OCR的注册结果,对数据库sdzy进行查询如下:
$srvctl config database -d sdzy
node_a sdzy1 /db/oracle/product/10.2.0/db_1
node_b sdzy2 /db/oracle/product/10.2.0/db_1
$crs_stat -t 查看状态
添加完成后,管理员可以从任意一个节点进行手工的sdzy数据库的创建操作,并从各节点按照群集方式启动和关闭数据库,或者以集群方式使用数据库,只要再创建其它相关信息即可,如网络监听服务等。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27038344/viewspace-751685/,如需转载,请注明出处,否则将追究法律责任。