Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2896242
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2009-12-31 09:36:45


    前面几篇文章介绍了在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程。这里描述删除节点的操作。

这一篇介绍Oracle数据库实例的删除。


  这篇介绍手工删除节点的方面。删除节点虽然和添加节点相比要简单很多,但是还是有一些地方需要注意。

  比如这个删除节点的操作是临时的还是永久的。如果是临时的操作,那么不需要修改任何的初始化参数,只需要关闭数据库实例就可以了,以后随时可以将删除的节点添加回来,而且由于初始化参数不需要修改,添加过程都不会导致数据库的重启。对于CLUSTER的设置,也可以考虑保留。唯一需要修改的是节点1和节点2上TNSNAMES.ORA中,对于整个RAC环境的设置,要去掉已删除的节点。另外,如果使用srvctl来管理RAC环境,还应该从srvctl的配置中去掉被删除节点的信息。

  而如果要彻底删除节点,就要彻底清除所有节点3的信息,对这个例子而言,就意味着要将RAC环境恢复到初始两个节点运行的状态。这里需要执行的操作包括了临时去掉节点的所有修改,因此这里介绍永久删除节点的方法。

bash-3.00$ srvctl status db -d testrac

实例 testrac1 正在节点 racnode1 上运行
实例 testrac2 正在节点 racnode2 上运行
实例 testrac3 正在节点 racnode3 上运行

bash-3.00$ srvctl stop inst -d testrac -i testrac3

bash-3.00$ srvctl status db -d testrac
实例 testrac1 正在节点 racnode1 上运行
实例 testrac2 正在节点 racnode2 上运行
实例 testrac3 没有在 racnode3 节点上运行

首先需要修改的是数据库的实例,对于节点3而言,只需要简单的关闭实例即可。

下面关闭ASM实例:

bash-3.00$ srvctl status asm -n racnode3
ASM 实例 +ASM3 正在节点 racnode3 上运行。
bash-3.00$ srvctl stop asm -n racnode3
bash-3.00$ srvctl status asm -n racnode3
ASM 实例 +ASM3 不在节点 racnode3 上运行。

由于数据库使用的是共同的SPFILE:

SQL> show parameter spfile

NAME TYPE VALUE
-------------------- ----------- -------------------------------
spfile string +DISK/testrac/spfiletestrac.ora

因此只需要将SPFILE中实例3的初始化参数去掉就可以了:

SQL> select name, value
2 from v$spparameter
3 where sid = 'testrac3';

NAME VALUE
------------------------------ ------------------------------------------------------------
thread 3
instance_number 3
undo_tablespace UNDOTBS3
service_names TESTRAC, testrac
local_listener (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.227)(PORT = 1521))

SQL> alter system reset thread scope = spfile sid = 'testrac3';

系统已更改。

SQL> alter system reset instance_number scope = spfile sid = 'testrac3';

系统已更改。

SQL> alter system reset undo_tablespace scope = spfile sid = 'testrac3';

系统已更改。

SQL> alter system reset service_names scope = spfile sid = 'testrac3';

系统已更改。

SQL> alter system reset local_listener scope = spfile sid = 'testrac3';

系统已更改。

下面设置其他两个节点的CLUSTER_DATABASE_INSTANCES初始化参数,将其修改为2:

SQL> select sid, name, value
2 from v$spparameter
3 where name = 'cluster_database_instances';

SID NAME VALUE
---------- ------------------------------ --------------------------------------------
* cluster_database_instances 3

SQL> alter system set cluster_database_instances = 2 scope = spfile;

系统已更改。

至此,数据库级的修改已经完成,等到其他两个实例重启的时候,就会自动去掉当前加载的实例3相关的初始化参数。


 

阅读(1196) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~