多例項資料庫刪除例項

yangtingkun發表於2009-05-03

需要說明一下,這篇文章不是介紹如何完整的刪除包括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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章