DBID、データベース名を変更する方法

NEWIDユーティリティは、DBID のみ変更、データベース名のみ変更、DBID(≠ORACLE_SID) とデータベース名の変更が可能。

DBID の変更を伴う処理を行うと、過去のすべてのアーカイブログ、バックアップファイルが使用不能になる。
また、このコマンドはファイル内部の DBID, DB_NAME 情報を書き換えるものであり、ファイル名やディレクト名に含まれる <DB_NAME>を変更するものではない。

テスト環境もしくは複製直後の環境であり十分な回復知識がある場合にのみ利用し、稼動状態にあるデータベースへの利用はお勧めできない。
リカバリ、クラッシュ・リカバリ が必要な状態で実行すると、かなり危険(未検証)
(移行に失敗すると完全に修復不可能になることがあり、本番環境で実行する必要がある場合には、Oracle のサポートのうえで実行する)

ORACLE_SID 環境変数を変更する方法は、こちら

DBID とデータベース名 の変更の手順

シャットダウン、マウントモード

SQL> SHUTDOWN 
...
SQL> STARTUP MOUNT
...
SQL> QUIT

NEWID ユーティリティの実行

# nid target=sys/<password> dbname=<new_dbname>
... [Y|N] Y
... アーカイブログやバックアップがすべて無効になるメッセージが表示
... 完了

環境変数の変更

ORACLE_SID の記述してある。設定ファイル(.<shell>rc, .login, etc) を変更する。

/etc/oratab(/var/opt/oracle/oratab) の変更

旧エントリ名を新しい SID に変更する。

(必要であれば、アカウントの再ログインする or 環境変数を設定する)

パスワードファイルの再作成

# cd $ORACLE_HOME/dbs
# orapwd file=orapw<NEW_SID> password=<password>

初期化パラメータファイルの構築

SQL> CREATE PFILE FROM SPFILE='/u01/.../spfile<OLD_SID>.ora' ;

$ORACLE_HOME/dbs/init<NEW_SID>.ora が作成される。

エディタで init<NEW_SID>.ora ファイルの DB_NAME の部分を <new_dbname> に変更する。

サーバーパラメータファイルの再構築

SQL> CREATE SPFILE FROM PFILE;

データベース起動

SQL> STARTUP MOUNT
... (パラメータファイルの変更を行っていないとエラーが発生する)
SQL> ALTER DATABASE OPEN RESETLOGS ;

データベースの内容を確認後、必ずフルバックアップを行う。

Net Service

もし リスナー が静的構成の場合には listener.ora の SID_LIST_LISTENER の SID_NAME を変更。 動的構成の場合にはエントリが存在しないので作業は不要。

Net 経由で接続確認して作業終了

DBID のみ変更

NEWID ユーティリティのパラメータ

# nid target=sys/<password>

このコマンドによるインパクトと手順は DBID とデータベース名 の変更の手順 と同じ。
過去のすべてのアーカイブログ、バックアップファイルが使用不能になる。

DB_NAME のみ変更

NEWID ユーティリティのパラメータ

# nid target=sys/<password> dbname=<new_dbname> SETNAME=YES

これは、データベース名を管理している制御ファイルだけを更新する。(その他ファイルは DBID で管理されているので影響がない)
また、既存のバックアップデータも、そのまま使用することができる。

作業手順は、DBID とデータベース名 の変更の手順 と同じ。
但しデータベース起動時手順だけは異なる。起動に RESETLOG オプションを使用しない。

SQL> STARTUP MOUNT
... (パラメータファイルの変更を行っていないとエラーが発生する)
SQL> ALTER DATABASE OPEN ;
 


関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー