在做这个实验之前已经做了2个相关的实验,RAC的安装,RAC添加节点。
Redhat 5.4 Oracle 10g RAC添加节点
http://blog.youkuaiyun.com/xujinyang/article/details/6837247
Redhat 5.4 + ASM + RAW+ Oracle 10g RAC安装文档
http://blog.youkuaiyun.com/xujinyang/article/details/6837265
现在的RAC环境是二个节点:RAC1,RAC2,RAC3。这个实验就是删除节点RAC3。
服务器主机名 | rac1 | rac2 | rac3 |
公共IP地址(eth0) | 10.85.10.1 | 10.85.10.2 | 10.85.10.5 |
虚拟IP地址(eth0) | 10.85.10.3 | 10.85.10.4 | 10.85.10.6 |
私有IP地址(eth1) | 192.168.1.200 | 192.168.1.201 | 192.168.1.202 |
ORACLE RAC SID | rac1 | rac2 | Rac3 |
集群实例名称 | Rac | ||
OCR(oracle集群注册表) | /dev/raw/raw1/dev/sdb1200M /dev/raw/raw2/dev/sdb2200M | ||
表决磁盘(voting disk) | /dev/raw/raw3/dev/sdc1200M /dev/raw/raw4/dev/sdc2200M /dev/raw/raw5/dev/sdc3200M | ||
ASM | /dev/sdd110GVOL1for Oracle Data /dev/sdd15GVOL2for flash_recovery_area | ||
数据库备份 | /dev/sde110G(mkfs -t ext3 /dev/sde1) |
官网连接:
Adding and Deleting Oracle RAC from Nodes on Linux and UNIX Systems
http://download.oracle.com/docs/cd/E11882_01/rac.112/e16795/adddelunix.htm#RACAD0067
删除节点步骤如下:
1.删除数据库实例
2.删除ASM实例
3.删除节点
在删除节点之前,要保证设置$ORA_CRS_HOME和$ORACLE_HOME环境变量是正确的。
一.DBCA删除DATABASE实例
1.1.1先停掉rac上的rac3实例的服务,然后用dbca删除实例。
[oracle@rac1 bin]$ crs_stop ora.rac.rac3.inst
1.1.2用Xmanager工具连上rac1,指定DISPLAY变量: export DISPLAY=10.85.10.80:0.0.
用Oracle用户运行DBCA命令,在dbca的界面中选择:
Oracle Real Application Clusters database -->Instance Management
--> Delete an instance -->输入sys用户和密码-->选择要删除的实例rac3 -- > servers: rac3 not use,TAF policy: none --> Finish删除节点
1.1.3执行完毕后查看服务情况:
[oracle@rac1 bin]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora.rac.dbapplicationONLINEONLINErac1
ora....oltp.cs applicationONLINEONLINErac2
ora....ac1.srv applicationONLINEONLINErac2
ora....ac2.srv applicationONLINEONLINErac1
ora....c1.inst applicationONLINEONLINErac2
ora....c2.inst applicationONLINEONLINErac1
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
ora....SM3.asm applicationONLINEONLINErac3
ora....C3.lsnr applicationONLINEONLINErac3
ora.rac3.gsdapplicationONLINEONLINErac3
ora.rac3.onsapplicationONLINEONLINErac3
ora.rac3.vipapplicationONLINEONLINErac3
这里面少了2个服务:ora.rac.oltp.rac3.srv和ora.rac.rac3.inst
关于命令具体参考我的Blog:
Oracle RAC常用维护工具和命令
http://blog.youkuaiyun.com/xujinyang/article/details/6829620
二.删除ASM实例
这里需要删除该节点中的asm实例,以及注册到crs中的相关信息,操作如下:
2.1停止并删除ASM实例,在任意节点操作都可以
[oracle@rac1 bin]$ pwd
/u01/app/oracle/product/crs/bin
[oracle@rac1 bin]$ srvctl stop asm -n rac3
[oracle@rac1 bin]$ srvctl remove asm -n rac3
上述两个命令行正确执行后,目标节点的asm实例就已经被删除了。
也可以加-f参数,如:srvctl remove asm -n rac3 -f
清除OCR中的信息,可以使用crs_unregister命令。
2.2验证
[oracle@rac1 bin]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora.rac.dbapplicationONLINEONLINErac1
ora....oltp.cs applicationONLINEONLINErac2
ora....ac1.srv applicationONLINEONLINErac2
ora....ac2.srv applicationONLINEONLINErac1
ora....c1.inst applicationONLINEONLINErac2
ora....c2.inst applicationONLINEONLINErac1
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
ora....C3.lsnr applicationONLINEONLINErac3
ora.rac3.gsdapplicationONLINEONLINErac3
ora.rac3.onsapplicationONLINEONLINErac3
ora.rac3.vipapplicationONLINEONLINErac3
这里少了rac3 asm实例的服务
2.3删除相关目录
用目录删除asm实例后,但是asm相关目录没有删除,我们需要手动的删除相关目录,如果没有删除干净,下一次dbca创建实例的时候会报错。
彻底删除ASM的步骤:
1,关闭掉使用asm实例的oracle实例(请在所有的rac节点执行)
2,删除掉asm diskgroup并关闭asm实例
3,删除/etc/oratab文件对应的+ASM记录
4,删除$ORACLE_BASE/admin/+ASM[1-2]下面的a|b|c|u dump目录
5,删除$ORACLE_HOME/dbs下面与asm有关的文件
ASM的相关信息参考blog:
Oracle ASM详解
http://blog.youkuaiyun.com/xujinyang/article/details/6837288
三.删除节点
3.1删除目标节点监听服务
先通过netca删除目标节点中的监听服务,用xmanager随便连一个节点,如rac1,指定DISPLAY=10.85.10.80:0.0;然后运行netca命令,会出现一个可是话界面,都是下一步操作,删除rac3这个节点上的监听即可。
删除之后,从crs_stat看以少了一个服务:
[oracle@rac1 bin]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora.rac.dbapplicationONLINEONLINErac1
ora....oltp.cs applicationONLINEONLINErac2
ora....ac1.srv applicationONLINEONLINErac2
ora....ac2.srv applicationONLINEONLINErac1
ora....c1.inst applicationONLINEONLINErac2
ora....c2.inst applicationONLINEONLINErac1
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
ora.rac3.gsdapplicationOFFLINEOFFLINE
ora.rac3.onsapplicationOFFLINEOFFLINE
ora.rac3.vipapplicationOFFLINEOFFLINE
3.2删除目标结点数据库软件
3.2.1在保留的任意一个结点上执行如下命令,更新Oracle Inventory
$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES=rac1,rac2"
如:
[oracle@rac1 ~]$ cd /u01/app/oracle/product/10.2.0/db_1/oui/bin/
[oracle@rac1 bin]$ runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES=rac1,rac2"
Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
'UpdateNodeList' was successful.
3.2.2在要被删除的节点(rac3)上执行下列命令,同样是更新Oracle Inventory:
$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES=rac3" -local
如:
[oracle@rac3 dbs]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES=rac3" -local
Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
'UpdateNodeList' was successful.
3.2.3删除rac3节点上的数据库软件
用Xmanager工具连接到rac3节点,执行如下命令:
$ORACLE_HOME/oui/bin/runInstaller -deinstall
注意指定DISPLAY变量。
在弹出的窗口勾上ORACLE_HOME,然后删除。
注意:
这里也可以在非图形界面执行删除操作,只要在执行runInstall命令时,附加-silent参数即可。该服务器如果不准备再安装ORACLE数据库的话,可以同时删除/etc/oratab文件。
使用非图形界面命令:
runInstaller -deinstall -silent "REMOVE_HOMES={ OraDb10g_home1 }"
3.3停止目标节点NodeApps
停止目标节点中的应用,可以在任意节点上操作,执行命令如下:
[oracle@rac1 bin]$ srvctl stop nodeapps -n rac3
3.4删除NodeApps
NodeApps包括GSD、ONS、VIP等应用,删除这些应用可以通过srvctl命令,在rac3节点上操作,注意要以root身份执行:
[root@rac3 ~]# cd /u01/app/oracle/product/crs/bin/
[root@rac3 bin]# ./srvctl remove nodeapps -n rac3
Please confirm that you intend to remove the node-level applications on node rac3 (y/[n]) y
[root@rac3 bin]#
执行完上述命令后,执行crs_stat查看当前应用的状态:
[oracle@rac2 bin]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora.rac.dbapplicationONLINEONLINErac3
ora....oltp.cs applicationONLINEONLINErac2
ora....ac1.srv applicationONLINEONLINErac2
ora....ac2.srv applicationONLINEONLINErac1
ora....c1.inst applicationONLINEONLINErac2
ora....c2.inst applicationONLINEONLINErac1
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
在结果中已经看不到rac3节点的信息了。
3.5删除ONS配置
在保留节点执行:
[oracle@rac2 bin]$ oifcfg delif -node rac3
在删除节点,查询目标节点的ONS端口号:
[oracle@rac3 bin]$ more $ORA_CRS_HOME/opmn/conf/ons.config
localport=6113
remoteport=6200
loglevel=3
useocr=on
在任意保留节点中执行racgons命令,删除ONS配置:
[oracle@rac2 bin]$ $ORA_CRS_HOME/bin/racgons remove_config rac3:6200
racgons: Existing key value on rac3 = 6200.
racgons: rac3:6200 removed from OCR.
3.6在删除节点rac3禁用Oracle集群应用:
要用root用户执行如下脚本:
$ORA_CRS_HOME/install/rootdelete.sh
[root@rac3 ~]# cd /u01/app/oracle/product/crs
[root@rac3 crs]# cd install
[root@rac3 install]# sh rootdelete.sh
CRS-0210: Could not find resource 'ora.rac3.LISTENER_RAC3.lsnr'.
CRS-0210: Could not find resource 'ora.rac3.ons'.
CRS-0210: Could not find resource 'ora.rac3.vip'.
CRS-0210: Could not find resource 'ora.rac3.gsd'.
Shutting down Oracle Cluster Ready Services (CRS):
Stopping resources.
Successfully stopped CRS resources
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Shutdown has begun. The daemons should exit soon.
Checking to see if Oracle CRS stack is down...
Oracle CRS stack is not running.
Oracle CRS stack is down now.
Removing script for Oracle Cluster Ready services
Updating ocr file for downgrade
Cleaning up SCR settings in '/etc/oracle/scls_scr'
3.7从集群中删除节点并更新OCR
从集群中删除节点并更新OCR(保留节点运行)
$ORA_CRS_HOME/install/rootdeletenode.sh node1,node1-number,node2,node2-number,...
关于删除节点的ode-number可通过olsnodes -n获得:
[oracle@rac2 bin]$ ./olsnodes -n -i
rac21rac2-vip
rac12rac1-vip
rac33<none>
我们这里要删除的是rac3,number为3.在保留节点,进入ORA_CRS_HOME,用root用户执行:
# ./rootdeletenode.sh rac3, 3
如:
[root@rac1 install]# pwd
/u01/app/oracle/product/crs/install
[root@rac1 install]# ./rootdeletenode.sh rac3 3
CRS nodeapps are deleted successfully
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Node deletion operation successful.
'rac3' deleted successfully
3.8删除目标节点clusterware软件
先在任意保留的节点中操作:
[oracle@rac2 bin]$ $ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORA_CRS_HOME "CLUSTER_NODES=rac1,rac2" CRS=TRUE
Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
'UpdateNodeList' was successful.
在删除节点,rac3执行更新Oracle Inventory的操作:
[oracle@rac3 install]$ $ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORA_CRS_HOME "CLUSTER_NODES=rac3" CRS=TRUE -local
Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
'UpdateNodeList' was successful.
在删除节点rac3上,用Xmanager工具执行runInstaller -deinstall命令:
[oracle@rac3 ~]$ $ORA_CRS_HOME/oui/bin/runInstaller -deinstall
Starting Oracle Universal Installer...
弹出窗口如下,选中crs路径,然后点击remove即可。
操作完成后,点击close关闭窗口。集群件软件就被成功从目标节点删除了。
但是还有一些目录可以清除,包括:
删除$ORACLE_BASE/oraInventory目录
删除/etc/inittab文件
删除/var/tmp/.oracle目录
删除ORA相关的启动关闭脚本,比如/etc/init.d/init*,以及/etc/rc?.d/*init.crs等文件
删除/etc/oracle目录
清除crontab中关于ORACLE的相关任务;
清除oracle用户下profile中关于ORA的相关环境变量设置;
------------------------------------------------------------------------------