おらくるのいる生活

OracleのDBAとしての、障害対応やらパフォーマンス・チューニングやらの日々を綴っています

ASMディスク・グループのリネームについて

GWが明けて暫く経ったある日、開発DBを構築中のメンバから、バックアップ・スクリプトが異常終了したとのメールがありました。
一通り構築が終わって単体テストを実施していた時に、バックアップ用のシェルスクリプトがエラーになったとの事です。
構成は以下の通りです。

Oracle RAC(2ノード) EE 12.1.0.2

RHEL Version 7.3

 

エラーとなった理由はネーミング・ルールに合わないディスク・グループ名を指定して作成していた為でした。
対象の環境にはサブシステムがいくつもあり、今回構築したDBはAシステム用の物ですが、Bシステムのサーバ上に作成した為、Bシステムのネーミング・ルールに合わせてしまったのだとか。
であればディスク・グループを正しい名称にリネームすれば済む話ですが。

 

・・・何か、やっちゃいけないって記事を読んだ記憶がある・・・

 

早速、MOS(MyOracleSupport)で検索したところ、以下の記事がヒットしました。

RedHat 7.3 で RENAMEDG コマンドがハング (ドキュメントID 2393688.1)

対象のDBバージョンは11.2.0.4 から 12.1.0.2、対象OSはRedHat 7.3で、他のOSでは発生しません。
CPU使用率が100%で張り付いて、何時間たっても終了しないそうです。
OSバージョン、DBバージョンとも、今回の開発環境としっかり一致します。

 

今回構築対象の環境には既に複数の開発DBが作成されており、その環境でCPU使用率100%になんかなってしまったら、まず間違いなくRACが停止ししてしまいます。
新環境へのリリースを数か月後に控えてAPチームの皆さんが忙しく開発作業を進めている最中にそんな事をやらかしてしまったら、簀巻きにして東京湾に沈められ・・・はしないでしょうが、多大な迷惑をかけてしまいます。

上記不具合の対処には個別パッチが出ていましたが、開発DBは本番DBとパッチレベルを合わせてあるので、ここだけ変える訳にはいきません。
パッチ適用→リネーム→パッチ・ロールバックというやり方も考えられますが、構築スケジュールにはまだ余裕があったので、きれいに作り直す事になりました。

 

DB削除とDG再作成の手順は以下の通りです。

・DB削除
DB用の環境変数設定
$ dbca -silent -deleteDatabase -sourceDB orcl
Connecting to database
9% complete
(略)
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl.log" for further details.

・DG再作成
GI用の環境変数設定
他ノードのDGを停止
$ srvctl stop diskgroup -diskgroup OLD_DATA -node node2
$ sqlplus / as sysasm
SQL> drop diskgroup OLD_DATA including contents;

Diskgroup dropped.

SQL> create diskgroup NEW_DATA external REDUNDANCY DISK '/dev/xvdd1' ATTRIBUTE 'au_size'='1M','compatible.asm' = '12.1','compatible.rdbms' = '10.1';

Diskgroup created.

他ノードのDGを起動
$ srvctl start diskgroup -diskgroup NEW_DATA -node node2

後は前回作成時のレスポンスファイルのディスク・グループ名を修正し、

変更前

DISKGROUPNAME=OLD_DATA

変更後

DISKGROUPNAME=NEW_DATA

再びdbcaで作成すれば完了です。

DB用の環境変数設定
$ dbca -silent -responseFile /work/dbca_12012.rsp

(略)

Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/orcl.
Database Information:
Global Database Name:orcl
System Identifier(SID) Prefix:orcl

迂闊にrenamedgコマンドを発行しなくて良かった、というお話です。