资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954
全部博文(163)
分类: Oracle
2015-01-04 10:49:12
Oracle10gR2 RAC 环境增加及删除节点
一、初始化第 3 台节点 ............................................................................................................. 2
1.1 配置hosts 文件 ............................................................................................................ 2
1.2 配置SSH 密钥认证 .................................................................................................... 3
1.3 配置ASM 共享盘 ....................................................................................................... 4
二、添加 clusterware 到新节点 ................................................................................................ 5
2.1 检查安装环境 .............................................................................................................. 5
2.2 安装clusterware到新节点 ......................................................................................... 7
三、复制 oracle 软件到新节点 ............................................................................................... 14
四、配置监听服务到新节点 ................................................................................................... 18
五、添加实例到新节点 ........................................................................................................... 25
六、移除节点 ........................................................................................................................... 31
6.1 删除DATABASE 实例 ............................................................................................. 31
6.2 删除ASM 实例 ......................................................................................................... 36
6.3 删除节点 .................................................................................................................... 36
RAC 是项非常优秀的特性,其前身 OPS 从 oracle6 即开始提供,自 9i 版本更名为 RAC
后,经过这么多年的完善已经非常的成熟和稳定。使用 RAC 特性能够有效的提升企业数据
库系统的可用性,并有效增强整个系统的负载能力。考虑到数据规模的不断增长,最初设计
良好的系统随着业务量的增大可能会逐渐不勘负担,如果是 RAC 环境的数据库,就可以考
虑通过增加节点的方式,来提升该配环境的负载能力。
本文将通过示例演示,对现有的 RAC 数据库环境增加节点的相关操作。这里我们的操
作基于一套双节点的 RAC 环境。
在本文正式开始前, 俺先假设要添加的节点已安装好操作系统; 内核参数已经进行修 改 ;
ORACLE 用户已初始化; 成功并正确的配置和共享存储; 相关 rpm 包均已安装; 与当前 RAC
环境中各节点互联互通等等吧。
提示:新节点需要进行的准备工作,可以参考三思笔记系列文章:" 手把手教你用
e VMware 在 x linux 下安装 g oracle10g RAC"中配置 linux环境相关章节内容。
一、初始化第 3 3 3 3 台节点
即使是添加节点, 那么首先就需要对新节点进行适当的配置, 以使其能够满足成为 RAC
环境中一员的需要。
1 1.1 配置 s hosts 文件
执行命令如下:
[root@jssdbn2 ~]# vi /etc/hosts
修改 hosts 文件中的内容,修改完成后,hosts 文件中至少包含下列的内容:
192.168.10.11 jssdbn1
192.168.10.12 jssdbn2
192.168.10.13 jssdbn3
192.168.10.21 jssdbn1-vip
192.168.10.22 jssdbn2-vip
192.168.10.23 jssdbn3-vip
10.10.10.101 jssdbn1-priv
10.10.10.102 jssdbn2-priv
10.10.10.103 jssdbn3-priv
注意,这里不仅新增加的节点中 hosts 文件需要修改,同一个 RAC 环境中所有节点的
hosts 文件都必须重新修改。
2 1.2 配置 SSH 密钥认证
RAC 环境中各节点间不仅时刻保持通讯,而且还有可能互访文件,因此必须要保证各
节点间访问不需输入 DBA 手动密码即可自动完成,这里我们通过配置SSH 来实现这一点。
首先是在新增加的节点时操作,即 jssdbn3 节点(注意执行命令的用户):
[root@jssdbn3 ~]# u su - - - - oracle
[oracle@jssdbn3 ~]$ r mkdir ~/.ssh
[oracle@jssdbn3 ~]$ d chmod 0 700 ~/.ssh
[oracle@jssdbn3 ~]$ n ssh-keygen t -t rsa
Generating public/private rsa key pair.
Enter filein which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been savedin /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprintis:
37:89:ec:6a:49:2d:18:5d:9d:c2:7c:66:84:b0:2e:94 oracle@jssdbn3
[oracle@jssdbn3 ~]$ n ssh-keygen t -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been savedin /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprintis:
43:f1:b1:9f:e6:ec:b5:b0:74:72:24:22:22:5c:24:ca oracle@jssdbn3
然后转至 jssdbn1 节点执行,也是以 oracle 身份进行操作(执行过程中,当访问远端节点
时可能需要输入目标节点的密码):
[oracle@jssdbn1 ~]$ h ssh 3 jssdbn3 t cat ~/.ssh/id_rsa.pub > >> ~/.ssh/authorized_keys
The authenticity of host 'jssdbn3 (192.168.10.13)' can't be established.
RSA key fingerprint is 95:23:18:7a:5b:a9:5f:48:d7:1e:1a:f9:01:ec:f0:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'jssdbn3,192.168.10.13' (RSA) to thelist of known hosts.
oracle@jssdbn3's password:
[oracle@jssdbn1 ~]$ h ssh 3 jssdbn3 t cat ~/.ssh/id_dsa.pub > >> ~/.ssh/authorized_keys
oracle@jssdbn3's password:
最后传输 jssdbn1 节点中配置好的认证密钥信息到节点 2 和节点 3,执行命令如下:
[oracle@jssdbn1 ~]$ p scp s ~/.ssh/authorized_keys jssdbn2:~/.ssh/authorized_keys
authorized_keys
100% 3000 2.9KB/s 00:00
[oracle@jssdbn1 ~]$ p scp s ~/.ssh/authorized_keys jssdbn3:~/.ssh/authorized_keys
oracle@jssdbn3's password:
authorized_keys
100% 3000 2.9KB/s 00:00
配置完成后,在三个节点分别执行下列命令:
sshjssdbn1date
sshjssdbn2date
sshjssdbn3date
sshjssdbn1-priv date
sshjssdbn2-priv date
sshjssdbn3-priv date
某些节点第一次执行上述某些命令时可能会提示输入目标节点的密码, 没有关系, 输入
就是。不过执行过一次之后,应该就不会再需要输入密码了,如果多次尝试调用命令,仍然
提示输入密码,则有可能前面的步骤配置有误,尝试重新对 ssh 密钥进行配置。
最终执行的结果,应该类似这样,能够直接看到返回信息:
[oracle@jssdbn3~]$sshjssdbn1date
MonNov 9 12:54:47CST2009
[oracle@jssdbn3~]$sshjssdbn2date
MonNov 9 12:54:48CST2009
[oracle@jssdbn3~]$sshjssdbn3date
MonNov 9 12:54:49CST2009
[oracle@jssdbn3~]$sshjssdbn1-priv date
MonNov 9 12:54:56CST2009
[oracle@jssdbn3~]$sshjssdbn2-priv date
MonNov 9 12:54:59CST2009
[oracle@jssdbn3~]$sshjssdbn3-priv date
MonNov 9 12:54:58CST2009
3 1.3 配置 ASM 共享盘
在新增的节点上配置 ORACLEASM 驱动,首先执行 oracleasm configure 命令,注意要
以 root 身份进行。
[root@jssdbn3 ~]# /etc/init.d/oracleasm configure
Configuringthe OracleASMlibrary driver.
This will configure the on-boot properties of the OracleASMlibrary
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting
answer willkeep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group toown thedriver interface []: dba
Start OracleASMlibrary driver on boot (y/n) [n]: y y y y
Scan for OracleASMdisks on boot (y/n) [y]: y y y y
Writing OracleASMlibrary driver configuration: done
Initializing the OracleASMLibdriver: [ OK ]
Scanning the system for OracleASMLibdisks: [ OK ]
提示:如果本步执行出错(可能出错机率最高的是在 Scanning system forASM),不妨将
转换一下命令行的执行方式,改成:
[root@jssdbn3 ~]# sh /etc/init.d/oracleasm configure
有可能解决你的问题!
如果 configure 执行正常,下面检查一下磁盘组:
[root@jssdbn3 Server]# /etc/init.d/oracleasm scandisks
Scanning the system for OracleASMLibdisks: [ OK ]
如无问题,再接着 listdisks,应该能够看到当前 RAC 环境中创建的 ASM 盘:
[root@jssdbn3 Server]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
确保上述 oracleasm listdisks 显示的结果与实际情况相同。新节点的配置基本告以段落 ,
下面准备开始安装 crs 喽。
二、添加 clusterware 到新节点
1 2.1 检查安装环境
首先是检查安装环境, 仍然是使用runcluvfy.sh脚本来进行验证, 该脚本可以在现有RAC
配置中的任意节点上执行,这里在节点 1执行,如下:
[oracle@jssdbn1 ~]$ h /data/software/clusterware/cluvfy/runcluvfy.sh e stage - -
e pre t crsinst n -n 3 jssdbn3 -verbose
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Nodereachability from node "jssdbn1"
Destination Node Reachable?
------------------------------------ ------------------------
jssdbn3 yes
Result:Node reachability checkpassed fromnode "jssdbn1".
Checking user equivalence...
Check: Userequivalenceforuser "oracle"
Node Name Comment
------------------------------------ ------------------------
jssdbn3 passed
Result:User equivalence check passed for user "oracle".
Checking administrativeprivileges...
Check: Existence ofuser "oracle"
Node Name User Exists Comment
------------ ------------------------ ------------------------
jssdbn3 yes passed
Result:User existence check passedfor"oracle".
Check: Existence ofgroup "oinstall"
Node Name Status GroupID
------------ ------------------------ ------------------------
jssdbn3 exists 500
Result:Group existencecheck passed for "oinstall".
Check: Membership of user "oracle" in group"oinstall" [as Primary]
Node Name User Exists Group Exists User in Group Primary
Comment
---------------- ------------ ------------ ------------ ------------
------------
jssdbn3 yes yes yes yes
passed
Result:Membership check for user "oracle" in group "oinstall" [as Primary]
passed.
Administrative privileges checkpassed.
Checking node connectivity...
Interface information for node "jssdbn3"
InterfaceName IP Address Subnet
------------------------------ ------------------------------ ---------
-------
eth0 192.168.10.13
192.168.10.0
eth1 10.10.10.103
10.10.10.0
Check: Nodeconnectivity ofsubnet "192.168.10.0"
Result: Node connectivity check passed for subnet "192.168.10.0" with
node(s)jssdbn3.
Check: Nodeconnectivity ofsubnet "10.10.10.0"
Result:Node connectivity check passed for subnet "10.10.10.0" with node(s)
jssdbn3.
Suitable interfacesfortheprivateinterconnect onsubnet "192.168.10.0":
jssdbn3eth0:192.168.10.13
Suitable interfacesfortheprivateinterconnect onsubnet "10.10.10.0":
jssdbn3eth1:10.10.10.103
ERROR:
Could not find a suitable set of interfacesforVIPs.
Result:Node connectivity checkfailed.
Checking systemrequirements for 'crs'...
No checks registered for this product.
Pre-check for cluster services setup was unsuccessful on all the nodes.
如果返回信息中提示“Couldnot find a suitableset of interfaces forVIPs. ” ,可以忽略该错
误信息,这是一个 bug,Metalink 中有详细说明,doc.id:338924.1。
没有其它错误的话,安装可以正常进行,下面准备正式进入安装阶段。
2 2.2 安装 e clusterware 到新节点
新节点中clusterware 的安装也是从现有的 RAC 环境中开始的,在当前 RAC 环境中任
意节点的$ORA_CRS_HOME,执行 oui/bin/addNode.sh 脚本敲出视界界面,操作如下:
然后就能看到视图界面,点击下一步
看到当前已有的节点列表。 在下方输入框中输入新结点的信息, 包括public-name,private-
name 等,这部分信息应与 hosts 文件中完全匹配才行。正确输入后点击下一步,如图:
显示摘要信息如图,如无问题,点击 install 按钮:
开始复制文件,并进行一些必要的配置:
当文件复制完成后,会提示运行脚本指定的脚本:
一定要按照界面中的提示,在正确的节点中按照顺序执行脚本。详细说就是:
? 节点 3 上执行 orainstRoot.sh;
? 节点 1 上执行 rootaddnode.sh;
? 节点 3 上执行 root.sh;
上述所有脚本都是以 root 身份执行。
需要注意最后一个脚本,即 root.sh 执行时会调用 vipca,不过 vipca 脚本中部分代码对
应一个 bug:3937317,建议在执行 root.sh 前首先修改 vipca 文件
[root@jssdbn3 ~]# vi /data/ora10g/product/10.2.0/crs_1/bin/vipca
找到如下内容:
Remove this workaroundwhenthe bug3937317 is fixed
arch=`uname -m`
if[ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
exportLD_ASSUME_KERNEL
fi
#Endworkaround
在 fi 后新添加一行:
unsetLD_ASSUME_KERNEL
保存退出, 然后再在 jssdbn3 节点端执行 root.sh
Root.sh 执行完成后,默认情况下会自动调用 vipca,用来配置虚拟 IP 的网络接口服务 ,
不过如果前面 root.sh 脚本执行时因为 bug 原因,未能自动调用 vipca,那么在 root 执行完毕
后,手动执行 vipca 命令即可打开配置窗口,该项配置比较简单,基本上全面点击下一步即
可。
如果脚本执行一切顺序,返回到 crs 的安装界面,点击 ok 按钮。
正如界面中所示,End of Installation,点击 exit 退出该界面即可。
接下来需要将新节点的 ONS(Oracle Notification Services)配置信息写入 OCR(Oracle
Cluster Register),在节点 1 执行脚本如下:
[oracle@jssdbn1 ~]$ /data/ora10g/product/10.2.0/crs_1/bin/racgons add_config jssdbn3:6200
提 示 : jssdbn3 的 端 口 号 可 以 查 询 该 结 节 中
/data/ora10g/product/10.2.0/crs_1/opmn/conf/ons.config 文件中的配置,此处指定的端口号为
remoteport。
至此,新节点的 CLUSTERWARE配置完成,要检查安装的结果,可以在新节点中调用
cluvfy 命令进行验证,例如:
[oracle@jssdbn3 ~]$ /data/ora10g/product/10.2.0/crs_1/bin/cluvfy stage - -
t post t crsinst n -n 3 jssdbn3 -verbose
Performing post-checks for cluster servicessetup
Checking node reachability...
Check: Nodereachability from node "jssdbn3"
Destination Node Reachable?
------------------------------------ ------------------------
jssdbn3 yes
Result:Node reachability checkpassed fromnode "jssdbn3".
Checking user equivalence...
Check: Userequivalenceforuser "oracle"
Node Name Comment
------------------------------------ ------------------------
jssdbn3 passed
Result:User equivalence check passed for user "oracle".
Checking Cluster manager integrity...
Checking CSS daemon...
Node Name Status
------------------------------------ ------------------------
jssdbn3 running
Result:Daemon status checkpassed for "CSSdaemon".
Clustermanagerintegrity checkpassed.
Checking cluster integrity...
Node Name
------------------------------------
jssdbn1
jssdbn2
jssdbn3
Clusterintegrity checkpassed
.......................
......................
Post-check for cluster servicessetup was successful.
三、复制 e oracle 软件到新节点
接下来要复制 ORACLE 数据库软件到新节点,复制操作可以在现的 RAC 环境中的任
意节点中开始,这里我们选择在 jssdbn1 节点上操作。本步操作非常简单,步骤也少。
在 Linux 视窗界面中执行addNode.sh
[oracle@jssdbn1 ~]$ cd /data/ora10g/product/10.2.0/db_1/oui/bin/
[oracle@jssdbn1 bin]$ ./addNode.sh
运行 addNode.sh 脚本后,ORACLE 会弹出欢迎界面,不用多想,直接点击 next
提示选择要添加的节点,这里肯定是选择 jssdbn3
显示摘要信息,确认无误的话点击 install 即可
ORACLE 自动开始复制文件到新节点中
复制操作完成后,提示在新节点即 jssdbn3 执行脚本,注意要以 root 身份进行
[root@jssdbn3 ~]# /data/ora10g/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /data/ora10g/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin...
Creating /etc/oratabfile...
Entries will be added tothe /etc/oratabfileas needed by
Database ConfigurationAssistantwhen a database is created
Finished running generic partof root.sh script.
Now product-specific rootactions will be performed.
上述脚本成功执行后, 返回窗口界面点击 OK, 提示安装成功, 点击 exit 退出界面即 可 。
四、配置监听服务到新节点
客户端连接数据库服务器必须借助监听服务, 因此新节点要正常处理连接请求, 首先就
需要创建有相应的监听。
RAC 环境中监听服务的创建与管理和单实例相比没有什么区别,因此对于熟悉
ORACLE 的朋友创建监听真的是一点难度都没有,手快的朋友可能已经准备着手修改
$ORACLE_HOME/network/admin/listerner.ora 文件了。不过这里为了更直观的展示监听服务
的管理,俺决定采用 netca 界面管理方式来配置监听。
以 ORACLE 身份登陆到 linux 系统,执行$ORACLE_HOME/bin 目录中的 netca 命令即
可,如图:
配置界面显示如下,这里不用多说,肯定是选择 Cluster configuration,点击下一步:
选择要配置的节点,这里当然是选择 jssdbn3,继续点击下一步:
选择"Listener configuration"即监听配置,点击下一步:
选择"Add",即添加一项配置。对于新节点来说,也只有"Add"是可选的,不过前面选
择要配置的节点时如果选择了多个节点, 那么此处也有可能四个选项均能操作, 无论如何 吧 ,
本步我们想做的是"Add":
为监听服务命名:
选择 TCP 协议:
选择监听服务的端口号,默认情况下是 1521,这里我们也使用默认端口:
是否配置另一个监听?不用了,一个足够,选择"No",然后点击next:
恭喜你,成功了。
使用 netca 命令生成的 listener.ora 文件内容如下:
[oracle@jssdbn3 admin]$ more listener.ora
# listener.ora.jssdbn3 Network Configuration File:
/data/ora10g/product/10.2.0/db_1/network/admin/listener.ora.jssdbn3
# Generated by Oracle configurationtools.
SID_LIST_LISTENER_JSSDBN3 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /data/ora10g/product/10.2.0/db_1)
(PROGRAM= extproc)
)
)
LISTENER_JSSDBN3=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = jssdbn3-vip)(PORT = 1521)(IP =
FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST= 127.0.0.1)(PORT=1521)(IP = FIRST))
)
)
当前新节点的监听服务也已经自动启动,执行 lsnrctl status 命令查看:
[oracle@jssdbn3 admin]$ lsnrctl status
LSNRCTLfor Linux: Version 10.2.0.1.0 - Production on 10-NOV-200912:09:52
Copyright(c) 1991, 2005, Oracle. Allrights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER_JSSDBN3
Version TNSLSNR forLinux: Version 10.2.0.1.0 - Production
StartDate 10-NOV-200912:08:42
Uptime 0 days 0 hr. 1 min. 10 sec
Trace Level off
Security ON: LocalOSAuthentication
SNMP OFF
Listener Parameter File /data/ora10g/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File
/data/ora10g/product/10.2.0/db_1/network/log/listener_jssdbn3.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.23)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1handler(s) for this service...
The command completed successfully
五、添加实例到新节点
接下来终于到了最关键的时刻, 新节点中创建实例。 这里三思决定使用界面化的管理工
具"dbca"来操作,步骤如下:
首 先 是 以 oracle 身 份 登 陆 到 图 形 界 面 的 linux 系 统 , 然 后 执 行
$ORACLE_HOME/bin/dbca,然后就能看到欢迎窗口。
提示1 : 如果执行 dbca时遇到connectto":...." , No protocolspecified , 可以先尝试 su - root ,
然后执行 xhost+,然后再回到oracle 用户下执行 dbca。
提示 2:本步操作可以在当前 RAC 环境中的任意节点上执行,注意是当前 RAC 环境中
的节点,不是要添加实例的节点上执行哟,这里三思选择在 jssdbn1 上执行。
这里当然是选择第一项"Oracle RealApplication Clusters database",点击下一步:
选择"Instance Management",点击下一步:
选择"Add an instance":
在这个界面中,一是选择一个RAC 数据库(如果当前存在多个 RAC 环境的话),再一个
就是指定一个具有 SYSDBA 权限的用户及密码:
弹出界面显示当前 RAC 配置中拥有的实例,直接点击下一步即可:
为新节点上的实例命名:
接下来,需要定义一些与实例相关的文件,比较 UNDO、REDOLOG 等,想省事的话
此处保持默认即可,因为这些信息如果发现不合适,后期也都是可调的。确认无误后,点击
FINISH 按钮:
浏览摘要信息,如无问题,点击 ok。
在此期间,ORACLE 开始自动在新节点上创建实例,并且会视需要提示创建ASM 相关
实例(如果使用了 ASM做存储的话,对于此处演示的环境,回答显然是肯定的):
操作完成后, 提示是否需要进行其它操作, 就当前实际情况下说, 有, 不过不需要 DBCA
了,因此选 no 吧。
截止到目前,新节点已经是这个 RAC 配置中的一员了,使用 crs_stat 命令查看:
[oracle@jssdbn1 admin]$ /data/ora10g/product/10.2.0/crs_1/bin/crs_stat-t
Name Type Target State Host
------------------------------------------------------------
ora.jssdb.db application ONLINE ONLINE jssdbn2
ora....n1.instapplication ONLINE ONLINE jssdbn1
ora....n2.instapplication ONLINE ONLINE jssdbn2
ora....n3.instapplication ONLINE ONLINE jssdbn3
ora....SM1.asm application ONLINE ONLINE jssdbn1
ora....N1.lsnrapplication ONLINE ONLINE jssdbn1
ora....bn1.gsd application ONLINE ONLINE jssdbn1
ora....bn1.ons application ONLINE ONLINE jssdbn1
ora....bn1.vip application ONLINE ONLINE jssdbn1
ora....SM2.asm application ONLINE ONLINE jssdbn2
ora....N2.lsnrapplication ONLINE ONLINE jssdbn2
ora....bn2.gsd application ONLINE ONLINE jssdbn2
ora....bn2.ons application ONLINE ONLINE jssdbn2
ora....bn2.vip application ONLINE ONLINE jssdbn2
ora....SM3.asm application ONLINE ONLINE jssdbn3
ora....N3.lsnrapplication ONLINE ONLINE jssdbn3
ora....bn3.gsd application ONLINE ONLINE jssdbn3
ora....bn3.ons application ONLINE ONLINE jssdbn3
ora....bn3.vip application ONLINE ONLINE jssdbn3
任意结节登陆 sqlplus 命令行,查询 gv$instance 视图,结果如下:
SQL> selectinst_id,instance_name,version,startup_time,status from gv$instance;
INST_ID INSTANCE_NAME VERSION STARTUP_TSTATUS
---------- ---------------- ----------------- --------- ------------
1 jssdbn1 10.2.0.1.0 16-NOV-09OPEN
3 jssdbn3 10.2.0.1.0 16-NOV-09OPEN
2 jssdbn2 10.2.0.1.0 16-NOV-09OPEN
六、移除节点
注意, 下列操作均是在确实要保留的实例上进行, 不要选择在要被删除的节点上进行操作 哟 。
1 6.1 删除 DATABASE 实例
在视窗界面中找开 dbca 命令
Dbca 界面大家应该已经非常熟悉了,这里仍然是选择 RAC database:
选择 Instance Management,点击下一步:
Of course,Delete Instance:
选择要操作的数据库,并输入一个具有 sysdba 权限的用户及密码:
选择一个要删除的实例,这里当然是 jssdbn3 喽!哎,这可怜的孩子,刚被加进来又不
得不被踢出去,不过没关系,能加能删才是真实例: )
确定删除点击 OK,接下来如果还蹦这类窗口,同样直接点击 OK 即可:
开始进行删除操作:
终于删除完了,这里可别点 yes,操作已经完成,点"No"退出即可。
2 6.2 删除 ASM 实例
接下来, 我们需要删除该节点中的 asm 实例, 以及注册到 crs中的相关信息, 操作如 下 :
[oracle@jssdbn1 bin]$ ./srvctlstop asm -n jssdbn3
[oracle@jssdbn1 bin]$ ./srvctlremove asm -n jssdbn3
Ok,上述两个命令行正确执行后,目标节点的asm 实例就已经被删除了,你是否想问怎
么确定删除操作确实执行了呢?最简单的方式,执行 crs_stat 查看当前 crs 的各进程状态:
[oracle@jssdbn1 bin]$ ./crs_stat-t
Name Type Target State Host
------------------------------------------------------------
ora.jssdb.db application ONLINE ONLINE jssdbn2
ora....n1.instapplication ONLINE ONLINE jssdbn1
ora....n2.instapplication ONLINE ONLINE jssdbn2
ora....SM1.asm application ONLINE ONLINE jssdbn1
ora....N1.lsnrapplication OFFLINE OFFLINE
ora....bn1.gsd application ONLINE ONLINE jssdbn1
ora....bn1.ons application ONLINE ONLINE jssdbn1
ora....bn1.vip application ONLINE ONLINE jssdbn1
ora....SM2.asm application ONLINE ONLINE jssdbn2
ora....N2.lsnrapplication ONLINE UNKNOWN jssdbn2
ora....bn2.gsd application ONLINE ONLINE jssdbn2
ora....bn2.ons application ONLINE ONLINE jssdbn2
ora....bn2.vip application ONLINE ONLINE jssdbn2
ora....N3.lsnrapplication ONLINE UNKNOWN jssdbn3
ora....bn3.gsd application ONLINE ONLINE jssdbn3
ora....bn3.ons application ONLINE ONLINE jssdbn3
ora....bn3.vip application ONLINE ONLINE jssdbn3
从上述返回信息可以看出,jssdbn3 节点中运行的 asm 和 instance 均已经不存在了。
此时虽然相关应用均已被删除,不过 asm 实例相关的 pfile 以及一些 trc 文件仍然存在,
可以通过操作系统的命令删除相关文件,包括但不限于下列路径:
? $ORACLE_BASE/admin/+ASM/*
? $ORACLE_HOME/dbs/init+ASM*
3 6.3 删除节点
下面,我们还需要从 RAC 环境中,删除目标节点,本步操作比较多而且杂,务必注意
操作步骤,以及执行操作所在的节点。
1、删除目标节点监听服务
首先可以通过netca 删除目标节点中的监听服务(趁现在 ORACLE_HOME还在),netca
的操作比较简单,这里就不演示了。
2、停止目标节点 apps
监听服务删除之后,接着停止目标节点中的应用,可以在任意节点上操作,执行命令如下:
[oracle@jssdbn1 bin]$ ./srvctlstop nodeapps -h
3、删除目标结点数据库软件
本操作包含两个部分,首先是要在保留的任意一个结点上执行操作,更新 Oracle
Inventory,例如:
[oracle@jssdbn1 ~]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$ORACLE_HOME"CLUSTER_NODES=jssdbn1,jssdbn2"
Starting Oracle UniversalInstaller...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be
executed.
'UpdateNodeList' was successful.
接下来在要被删除的节点上执行下列命令,同样是更新 OracleInventory:
[oracle@jssdbn3 ~]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$ORACLE_HOME"CLUSTER_NODES=jssdbn3" -local
Starting Oracle UniversalInstaller...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be
executed.
然后就可以删除该节点上的数据库软件了,在视窗界面执行命令如下:
[oracle@jssdbn3 ~]$ $ORACLE_HOME/oui/bin/runInstaller -deinstall
Starting Oracle UniversalInstaller...
.....................
.....................
然后就会看到OUI 的操作界面了。如图所示,点击 REMOVE 即可(注意要选对数据库
软件哟):
如果弹出是否确认删除的提示框,也直接点击 yes 确认就好。OUI 开始执行删除操作。
操作完成后,点击 close 退出该界面。
提示: 如果希望在非图形界面执行删除操作的话, 那么执行 runInstall 命令时, 附加 -silent
参数即可。
该服务器如果不准备再安装 ORACLE 数据库的话,可以同时删除/etc/oratab 文件。
[oracle@jssdbn3 ~]$ rm /etc/oratab
4、删除 ONS 配置
在任意保留节点中执行 racgons 命令,删除ONS 配置,操作如下:
[oracle@jssdbn1 ~]$ $ORA_CRS_HOME/bin/racgonsremove_config jssdbn3:6200
racgons: Existing key value on jssdbn3 = 6200.
racgons: jssdbn3:6200 removed fromOCR.
要查询目标节点的 ONS 端口号,可以通过下列命令:
[oracle@jssdbn3 ~]$ more $ORA_CRS_HOME/opmn/conf/ons.config
localport=6113
remoteport=6200
loglevel=3
useocr=on
5、删除 NodeApps
目标节点中包括 GSD、ONS、VIP 等应用此时已经可以被删除了,删除这些应用可以
通过 srvctl 命令,注意要以 root 身份执行,操作如下:
[root@jssdbn1 ~]# /data/ora10g/product/10.2.0/crs_1/bin/srvctl remove
nodeapps -njssdbn3
Please confirm that you intend to remove the node-level applications on
node jssdbn3 (y/[n]) y
执行完上述命令后,返回 oracle 用户,执行 crs_stat 查看当前应用的状态:
[oracle@jssdbn1bin]$ ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.jssdb.db application ONLINE ONLINE jssdbn2
ora....n1.inst application ONLINE ONLINE jssdbn1
ora....n2.inst application ONLINE ONLINE jssdbn2
ora....SM1.asm application ONLINE ONLINE jssdbn1
ora....N1.lsnr application OFFLINE ONLINE jssdbn1
ora....bn1.gsd application ONLINE ONLINE jssdbn1
ora....bn1.ons application ONLINE ONLINE jssdbn1
ora....bn1.vip application ONLINE ONLINE jssdbn1
ora....SM2.asm application ONLINE ONLINE jssdbn2
ora....N2.lsnr application ONLINE ONLINE jssdbn2
ora....bn2.gsd application ONLINE ONLINE jssdbn2
ora....bn2.ons application ONLINE ONLINE jssdbn2
ora....bn2.vip application ONLINE ONLINE jssdbn2
如上述所示,CRS 中关于 jssdbn3 的痕迹都已经不见了。
6、删除目标节点 e clusterware 软件
接下来要做的是删除目标节点上的 clusterware 软件,本步操作与删除数据库软件类似 ,
实际上眼神好的朋友可能也看到了,之前执行 runInstall -deinstall 命令,在弹出界面里也看
到了 OraCrs10g_home。详细操作步骤如下!
首先仍是在任意保留的节点中操作:
[oracle@jssdbn1 ~]$ $ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$ORA_CRS_HOME "CLUSTER_NODES=jssdbn1,jssdbn2" CRS=TRUE
Starting OracleUniversal Installer...
No pre-requisitechecks found in oraparam.ini, no system pre-requisite
checks willbe executed.
'UpdateNodeList' was successful.
然后切换至目标节点,执行更新 OracleInventory 的操作:
[oracle@jssdbn3 ~]$ $ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$ORA_CRS_HOME "CLUSTER_NODES=jssdbn3" CRS=TRUE -local
Starting OracleUniversal Installer...
No pre-requisitechecks found in oraparam.ini, no system pre-requisite
checks willbe executed.
'UpdateNodeList' was successful.
接下来执行 runInstaller -deinstall 命令,执行 clusterware 软件的删除操作(注意是在视窗
界面操作):
[oracle@jssdbn3~]$$ORA_CRS_HOME/oui/bin/runInstaller -deinstall
Starting OracleUniversal Installer...
弹出窗口如下,选中 crs 路径,然后点击 remove 即可。
操作完成后,点击 close 关闭窗口。集群件软件就被成功从目标节点删除了。接下来如
果愿意(或者确实需要),可以考虑清除ORACLE 留下的一些操作痕迹,包括但不限于下列 :
? 删除$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 的相关环境变量设置;
? 清除共享存储分配给 jssdbn3 的相关权限
7、从 OCR 中删除节点信息
在任意一台保留的节点执行:
[oracle@jssdbn1~]$cd $ORA_CRS_HOME/bin
[oracle@jssdbn1bin]$ ./olsnodes -n-i
jssdbn11 jssdbn1-vip
jssdbn22 jssdbn2-vip
jssdbn33
你看,尽管通过前面的操作,ORACLE 软件以及集群件均已被删除,节点信息也更新
过了,不过 OCR 中还是保留有 jssdbn3 节点的信息,因此这块也需要删除,执行脚本如下 :
[root@jssdbn1 ~]# cd /data/ora10g/product/10.2.0/crs_1/install
[root@jssdbn1 install]#./rootdeletenode.shjssdbn3,3
CRS-0210: Couldnotfind resource 'ora.jssdbn3.LISTENER_JSSDBN3.lsnr'.
CRS-0210: Couldnotfind resource 'ora.jssdbn3.ons'.
CRS-0210: Couldnotfind resource 'ora.jssdbn3.vip'.
CRS-0210: Couldnotfind resource 'ora.jssdbn3.gsd'.
CRS-0210: Couldnotfind resource ora.jssdbn3.vip.
CRSnodeapps are deleted successfully
clscfg:EXISTING configuration version 3 detected.
clscfg:version3 is 10G Release 2.
Successfully deleted 14values fromOCR.
KeySYSTEM.css.interfaces.nodejssdbn3 marked for deletion is not there.
Ignoring.
Successfully deleted 5 keysfrom OCR.
Node deletion operationsuccessful.
'jssdbn3,3'deletedsuccessfully
[root@jssdbn1 install]#exit
logout
[oracle@jssdbn1bin]$ ./olsnodes -n-i
jssdbn11 jssdbn1-vip
jssdbn22 jssdbn2-vip
至此,删除节点操作告以段落。