ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 多实例数据库删除实例

多实例数据库删除实例

原创 Linux操作系统 作者:yangtingkun 时间:2009-05-03 23:26:01 0 删除 编辑

需要说明一下,这篇文章不是介绍如何完整的删除包括CLUSTER在内的RAC环境,而只是在数据库层介绍如何删除一个实例。

单实例数据库手工转化多实例数据库:http://yangtingkun.itpub.net/post/468/483713

单实例数据库工具转化多实例数据库:http://yangtingkun.itpub.net/post/468/483724

 

 

和添加实例一样,这个步骤也包括手工方式和工具方式两种。

不过利用工具删除实例是非常简单的,通过dbca启动图形界面,然后选择CLUSTER选项,并选择管理实例,然后选择删除实例。输入SYS用户和密码,选择要删除实例的数据库,连接后选择要删除的实例,就可以了。工具会完成剩下所有的操作,包括实例的删除,删除这个实例对应的表空间以及重做日志,修改初始化参数,以及从srvctl命令中删除实例信息等等。

唯一需要注意的是,在选择数据库并提供SYS登陆方式时,需要确保数据库可以通过NET服务以SYSDBA权限连接到数据库上。对于RAC环境,一般监听注册的是VIP地址,这里需要手工将PUBLIC IP地址添加的监听地址中,并重启监听。

因此通过工具来删除实例是很容易的,这里主要讨论手工方式删除实例,其实这个步骤也不是很复杂,基本上是添加实例的一个逆操作而已:

bash-3.00$ export ORACLE_SID=test1
bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 4 20 18:45:42 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/test/spfiletest.ora
SQL> show parameter cluster_database

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     TRUE
cluster_database_instances           integer     2
SQL> select instance_name from gv$instance;

INSTANCE_NAME
----------------
test1
test2

首先关闭节点2上的实例:

SQL> select instance_name from gv$instance;

INSTANCE_NAME
----------------
test1
test2

SQL> host
$ srvctl stop inst -d test -i test2
$ exit

SQL> select instance_name from gv$instance;

INSTANCE_NAME
----------------
test1

取消所有实例2设置的初始化参数:

SQL> ALTER SYSTEM SET CLUSTER_DATABASE_INSTANCES = 1 SCOPE = SPFILE;

系统已更改。

SQL> ALTER SYSTEM RESET INSTANCE_NUMBER SCOPE = SPFILE SID = 'test2';

系统已更改。

SQL> ALTER SYSTEM RESET THREAD SCOPE = SPFILE SID = 'test2';

系统已更改。

SQL> ALTER SYSTEM RESET UNDO_TABLESPACE SCOPE = SPFILE SID = 'test2';

系统已更改。

去掉实例2所使用的重做日志和撤销表空间:

SQL> ALTER DATABASE DISABLE THREAD 2;

数据库已更改。

SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

数据库已更改。

SQL> ALTER DATABASE DROP LOGFILE GROUP 5;

数据库已更改。

SQL> ALTER DATABASE DROP LOGFILE GROUP 6;

数据库已更改。

SQL> DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;

表空间已删除。

至此数据库部分的实例清除已经完成。对于2节点RAC而言,删除一个实例后,可以将CLUSTER_DATABASE初始化参数设置为FALSE,不过这需要实例重启后才能生效:

SQL> EXIT
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
断开
bash-3.00$ srvctl remove instance -d test -i test2
Remove instance test2 from the database test? (y/[n]) y

清除srvctltest2实例信息。

最后可以根据需要重新设置监听和TNSNAMES.ORA中的配置。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-592469/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10437570