2016年5月18日水曜日

Oracle Standby Databaseで表領域を増やす時のお作法 | ライタス株式会社

久しぶりにOracleの話題です。

OracleでStandby Databaseを組んでいる場合において、表領域を追加しました。
よくあるオペレーションではありますが、気をつけておかないと、スタンバイ側のDBに対してアーカイブログが適用できない状態に陥るので、注意が必要です。

プライマリ側で表領域を追加したところ、以下のようなエラーがスタンバイ側で発生しました。
SQL> recover standby database;
ORA-00283: エラーによってリカバリ・セッションは取り消されました。
ORA-01111: データファイル名5が不明です。 -
正しいファイルに名前を変更する必要があります。
ORA-01110: データファイル5:
'D:\APP\XXXXXXXX\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED0XXXX'
ORA-01157: データファイル5を識別/ロックできません -
DBWRトレース・ファイルを参照してください
ORA-01111: データファイル名5が不明です。 -
ログを読めば、そのままですが、データファイルが作成できないため、表領域ファイルが迷子になっています。
こういう場合は、v$datafileの内容を確認します。(以下は抜粋)
SQL> select name, status from v$datafile;
NAME                                                  STATUS
--------------------------------------------------------------
D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED0XXXX       RECOVER
データファイルがRECOVER状態ので、これを復帰させます。
といっても、今回は表領域を作成したので、表領域を作成してあげます。 このとき、AS句を使って、データファイルのリンク付けをしてあげます。
SQL> alter database create datafile 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_
1\DATABASE\UNNAMED0XXXX' as 'D:\app\Administrator\oradata\orcl\EDMS_API.DBF';
あとは、通常通り、recover standby databaseをすればOKです。

どうして、こんなことになるのかというと、Standby Databaseの設定で、standby_file_managementというものがあります。
http://download.oracle.com/docs/cd/E16338_01/server.112/b56311/initparams247.htm
詳しい話はリンク先を見てもらうとして、、、
おおまかな内容としては、OSファイルの追加と削除に関わる部分は、手動で行うようにデフォルト設定されています。
もし、プライマリ側と自動で同じ状態にしたい場合は、あらかじめ、
SQL> alter system set standy_file_management=auto scope=both;
を実行しておくとよいでしょう。



本記事は、弊社代表のブログ記事なんでもIT屋の宿命からの転載です。

0 件のコメント:

コメントを投稿