Infra DevOps

インフラ構築のナレッジや、運用の自動簡易化に関する記事を書いていこうと思います

意外にみつからない Oracle RAC DB手動削除

Oracle RAC DBの手動削除手順です

1-1.oracleユーザにスイッチ
# su - oracle

1-2.クラスタデータベースの起動を確認。起動してなかったら起動させる。
$ srvctl status database -d クラスタデータベース名
Instance XXXXX01 is running on node ホスト1
Instance XXXXX02 is running on node ホスト1
$ srvctl start database -d クラスタデータベース名

 

1-3.DBに接続
$ sqlplus SYSTEM/SYSTEM@クラスタデータベース名
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
XXXXX01 もしくは XXXXX02

1-4.DBを単一インスタンスモードに変更
SQL> alter system set cluster_database=FALSE scope=spfile;
SQL> quit

1-5.DB 停止
$ srvctl stop database -d クラスタデータベース名
$ srvctl status database -d クラスタデータベース名
Instance XXXXX01 is not running on node ホスト1
Instance XXXXX02 is not running on node ホスト2

1-6.排他モードでDB起動
$ export ORACLE_SID=クラスタSID

$ sqlplus / as sysdba
SQL> STARTUP MOUNT EXCLUSIVE RESTRICT;
ORACLEインスタンスが起動しました。

Total System Global Area 1.7180E+10 bytes
Fixed Size 5304248 bytes
Variable Size 2372763720 bytes
Database Buffers 1.4663E+10 bytes
Redo Buffers 138514432 bytes
データベースがマウントされました。

SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
クラスタデータベース名

1-7.DB削除
SQL> DROP DATABASE;

データベースが削除されました。

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing optionsとの接続が切断されました。
SQL> quit

1-8.DBリソースの削除
$ srvctl status database -d クラスタデータベース名
Instance XXXXX01 is not running on node ホスト1
Instance XXXXX02 is not running on node ホスト2
Instance クラスタデータベース名 is not running on node ホスト1

$ srvctl remove database -d クラスタデータベース名
Remove the database クラスタデータベース名? (y/[n]) y

$ srvctl status database -d クラスタデータベース名
PRCD-1120 : The resource for database クラスタデータベース名 could not be found.
PRCR-1001 : Resource ora.クラスタデータベース名.db does not exist


1-9.ASM上データ削除
$ exit
# su - grid
$ asmcmd -p
ASMCMD [+] > cd DATA
ASMCMD [+] > ls
ASMCMD [+] > rm -r データベースファイル格納ディレクト
You may delete multiple files and/or directories.
Are you sure? (y/n)
ASMCMD [+] > ls

 

1-10.1号機、2号機側データベースサーバ上の不要ファイル削除
$ exit
# find / -name クラスタデータベース名
# find / -name 1号機側インスタンス名 or 2号機側インスタンス
# rm -fr findで見つけた不要ファイル