DBNEWIDは、オペレーショナル・データベースのDBIDおよびDBNAMEを変更できるデータベース・ユーティリティです。
この章の内容は、次のとおりです。
DBNEWIDユーティリティの導入以前は、データベースのコピーを手動で作成し、制御ファイルを再作成してデータベースに新しいデータベース名(DBNAME)を指定することができました。ただし、データベースに新しい識別子(DBID)を指定することはできません。DBIDは、データベース用の内部的な一意の識別子です。Recovery Manager(RMAN)ではDBIDによってデータベースが区別されるため、シード・データベースおよび手動でコピーされたデータベースは、同じRMANリポジトリに登録できません。DBNEWIDユーティリティを使用すると、次のいずれかを変更することによって、この問題を解決できます。
データベースのDBIDのみ
データベースのDBNAMEのみ
データベースのDBNAMEおよびDBIDの両方
データベースのDBIDの変更は、重要な処理です。データベースのDBIDを変更すると、そのデータベースのすべての古いバックアップおよびアーカイブ・ログが使用できなくなります。これは、データがすでにデータ・ファイルに存在する以外は、データベースの作成と同様です。DBIDを変更すると、変更前に作成されたバックアップおよびアーカイブ・ログは、現行のDBIDに一致しない元のDBIDを保持しているため、使用できなくなります。RESETLOGS
オプションを指定してデータベースをオープンする必要があります。これによって、オンラインREDOログが再作成され、この順序番号が1にリセットされます(詳細は、『Oracle Database管理者ガイド』を参照)。このため、DBIDの変更直後に、データベース全体のバックアップを取る必要があります。
DBIDを変更せずにDBNAMEを変更する場合は、RESETLOGS
オプションを指定してデータベースをオープンする必要がないため、データベースのバックアップおよびアーカイブ・ログは無効になりません。ただし、DBNAMEを変更すると、これらが無効になります。データベース名の変更後、新しい名前を反映させるにはDB_NAME
初期化パラメータを変更する必要があります。また、Oracleパスワード・ファイルの再作成が必要な場合もあります。制御ファイルの古い(データベース名を変更する前の)バックアップをリストアする場合、データベース名を変更する前の初期化パラメータ・ファイルおよびパスワード・ファイルを使用する必要があります。
注意: 取得プロセスを使用してデータベースへの変更を取得する場合は、データベースのDBIDまたはDBNAMEを変更しないでください。取得プロセスの詳細は、『Oracle Streams概要および管理』を参照してください。 |
分散データベース・システム内のデータベースを使用している場合、各データベースには一意のグローバル・データベース名が必要です。DBNEWIDユーティリティは、グローバル・データベース名を変更しません。グローバル・データベース名の変更は、SQLのALTER
DATABASE
文を使用してのみ行えます。構文は次のとおりです。
ALTER DATABASE RENAME GLOBAL_NAME TO newname.domain;
グローバル・データベース名は、データベース名およびドメインで構成されます。これらはデータベースが最初に作成されたときにDB_NAME
およびDB_DOMAIN
初期化パラメータによって指定されます。
次の例では、ドメインus
.example
.com
のデータベース名をsales
に変更します。
ALTER DATABASE RENAME GLOBAL_NAME TO sales.us.example.com
これは、DBNEWIDを使用してデータベース名の変更を完了した後に行います。
参照: グローバル・データベース名の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
この項の内容は、次のとおりです。
次の手順では、データベースのDBIDを変更する方法について説明します。オプションで、データベース名も変更できます。
データベース全体のリカバリ可能なバックアップがあることを確認します。
ターゲット・データベースがマウント状態であること、またそのデータベースがマウント前に一貫性を維持した状態で停止されていることを確認します。次に例を示します。
SHUTDOWN IMMEDIATE STARTUP MOUNT
コマンドラインで、SYSDBA
権限を持つ有効なユーザー(TARGET
)を指定してDBNEWIDユーティリティを起動します(パスワードの入力を求められます)。
% nid TARGET=SYS
DBIDの他にデータベース名を変更するには、コマンドラインでDBNAME
パラメータも指定します(パスワードの入力を求められます)。次の例は、データベース名をtest_db
に変更します。
% nid TARGET=SYS DBNAME=test_db
DBNEWIDユーティリティは、ファイルへの入出力を試行する前に、データ・ファイルと制御ファイルのヘッダーで妥当性チェックを実行します。妥当性チェックが正常に行われると、DBNEWIDでは、操作の確認を求め(ログ・ファイルを指定した場合は確認が求められません)、オフラインの通常のデータ・ファイルおよび読取り専用データ・ファイルを含む各データ・ファイルのDBIDを変更し(この例で示すように、DBNAMEが指定された場合は、DBNAMEも変更し)、データベースを停止し、その後、終了します。次に、この出力例を示します。
. . . Connected to database PROD (DBID=86997811) . . . Control Files in database: /oracle/TEST_DB/data/cf1.dbf /oracle/TEST_DB/data/cf2.dbf The following datafiles are offline clean: /oracle/TEST_DB/data/tbs_61.dbf (23) /oracle/TEST_DB/data/tbs_62.dbf (24) /oracle/TEST_DB/data/temp3.dbf (3) These files must be writable by this utility. The following datafiles are read-only: /oracle/TEST_DB/data/tbs_51.dbf (15) /oracle/TEST_DB/data/tbs_52.dbf (16) /oracle/TEST_DB/data/tbs_53.dbf (22) These files must be writable by this utility. Changing database ID from 86997811 to 1250654267 Changing database name from PROD to TEST_DB Control File /oracle/TEST_DB/data/cf1.dbf - modified Control File /oracle/TEST_DB/data/cf2.dbf - modified Datafile /oracle/TEST_DB/data/tbs_01.dbf - dbid changed, wrote new name Datafile /oracle/TEST_DB/data/tbs_ax1.dbf - dbid changed, wrote new name Datafile /oracle/TEST_DB/data/tbs_02.dbf - dbid changed, wrote new name Datafile /oracle/TEST_DB/data/tbs_11.dbf - dbid changed, wrote new name Datafile /oracle/TEST_DB/data/tbs_12.dbf - dbid changed, wrote new name Datafile /oracle/TEST_DB/data/temp1.dbf - dbid changed, wrote new name Control File /oracle/TEST_DB/data/cf1.dbf - dbid changed, wrote new name Control File /oracle/TEST_DB/data/cf2.dbf - dbid changed, wrote new name Instance shut down Database name changed to TEST_DB. Modify parameter file and generate a new password file before restarting. Database ID for database TEST_DB changed to 1250654267. All previous backups and archived redo logs for this database are unusable. Database has been shutdown, open database with RESETLOGS option. Successfully changed database name and ID. DBNEWID - Completed successfully.
妥当性チェックが正常に行われなかった場合、次に示す出力例のようにDBNEWIDユーティリティが終了し、ターゲット・データベースは変更されません。データベースをオープンし、エラーを修正した後で、DBNEWIDユーティリティの操作を再開するか、またはDBIDを変更せずに継続してデータベースを使用することができます。
. . . Connected to database PROD (DBID=86997811) . . . Control Files in database: /oracle/TEST_DB/data/cf1.dbf /oracle/TEST_DB/data/cf2.dbf The following datafiles are offline clean: /oracle/TEST_DB/data/tbs_61.dbf (23) /oracle/TEST_DB/data/tbs_62.dbf (24) /oracle/TEST_DB/data/temp3.dbf (3) These files must be writable by this utility. The following datafiles are read-only: /oracle/TEST_DB/data/tbs_51.dbf (15) /oracle/TEST_DB/data/tbs_52.dbf (16) /oracle/TEST_DB/data/tbs_53.dbf (22) These files must be writable by this utility. The following datafiles are offline immediate: /oracle/TEST_DB/data/tbs_71.dbf (25) /oracle/TEST_DB/data/tbs_72.dbf (26) NID-00122: Database should have no offline immediate datafiles Change of database name failed during validation - database is intact. DBNEWID - Completed with validation errors.
データベースをマウントします。次に例を示します。
STARTUP MOUNT
RESETLOGS
モードでデータベースをオープンし、通常の使用を再開します。次に例を示します。
ALTER DATABASE OPEN RESETLOGS;
データベースの新しいバックアップを取ります。オンラインREDOログをリセットしたため、現行のデータベースでは古いバックアップとアーカイブ・ログは使用できません。
データベース名を変更せずに、データベースIDを変更するには、「DBIDおよびデータベース名の変更」の手順に従ってください。ただし、手順3では、オプションのデータベース名(DBNAME)を指定しません。次に、データベースIDのみを変更した場合に生成される出力例を示します。
. . . Connected to database PROD (DBID=86997811) . . . Control Files in database: /oracle/TEST_DB/data/cf1.dbf /oracle/TEST_DB/data/cf2.dbf The following datafiles are offline clean: /oracle/TEST_DB/data/tbs_61.dbf (23) /oracle/TEST_DB/data/tbs_62.dbf (24) /oracle/TEST_DB/data/temp3.dbf (3) These files must be writable by this utility. The following datafiles are read-only: /oracle/TEST_DB/data/tbs_51.dbf (15) /oracle/TEST_DB/data/tbs_52.dbf (16) /oracle/TEST_DB/data/tbs_53.dbf (22) These files must be writable by this utility. Changing database ID from 86997811 to 4004383693 Control File /oracle/TEST_DB/data/cf1.dbf - modified Control File /oracle/TEST_DB/data/cf2.dbf - modified Datafile /oracle/TEST_DB/data/tbs_01.dbf - dbid changed Datafile /oracle/TEST_DB/data/tbs_ax1.dbf - dbid changed Datafile /oracle/TEST_DB/data/tbs_02.dbf - dbid changed Datafile /oracle/TEST_DB/data/tbs_11.dbf - dbid changed Datafile /oracle/TEST_DB/data/tbs_12.dbf - dbid changed Datafile /oracle/TEST_DB/data/temp1.dbf - dbid changed Control File /oracle/TEST_DB/data/cf1.dbf - dbid changed Control File /oracle/TEST_DB/data/cf2.dbf - dbid changed Instance shut down Database ID for database TEST_DB changed to 4004383693. All previous backups and archived redo logs for this database are unusable. Database has been shutdown, open database with RESETLOGS option. Succesfully changed database ID. DBNEWID - Completed succesfully.
次の手順では、DBIDを変更せずにデータベース名を変更する方法について説明します。
データベース全体のリカバリ可能なバックアップがあることを確認します。
ターゲット・データベースがマウント状態であること、またそのデータベースがマウント前に一貫性を維持した状態で停止されていることを確認します。次に例を示します。
SHUTDOWN IMMEDIATE STARTUP MOUNT
コマンドラインでユーティリティを起動し、SYSDBA
権限を持つ有効なユーザーを指定します(パスワードを入力するように要求されます)。DBNAME
パラメータとSETNAME
パラメータの両方を指定する必要があります。この例では、データベース名をtest_db
に変更します。
% nid TARGET=SYS DBNAME=test_db SETNAME=YES
DBNEWIDユーティリティを使用して、(データ・ファイルではなく)制御ファイルへの入出力を試行する前に、制御ファイルのヘッダーで妥当性チェックを実行します。妥当性チェックが正常に行われると、操作の確認が求められ、制御ファイル内のデータベース名が変更されます。これらの処理の完了後、データベースが停止され、DBNEWIDユーティリティが終了します。次に、この出力例を示します。
. . . Control Files in database: /oracle/TEST_DB/data/cf1.dbf /oracle/TEST_DB/data/cf2.dbf The following datafiles are offline clean: /oracle/TEST_DB/data/tbs_61.dbf (23) /oracle/TEST_DB/data/tbs_62.dbf (24) /oracle/TEST_DB/data/temp3.dbf (3) These files must be writable by this utility. The following datafiles are read-only: /oracle/TEST_DB/data/tbs_51.dbf (15) /oracle/TEST_DB/data/tbs_52.dbf (16) /oracle/TEST_DB/data/tbs_53.dbf (22) These files must be writable by this utility. Changing database name from PROD to TEST_DB Control File /oracle/TEST_DB/data/cf1.dbf - modified Control File /oracle/TEST_DB/data/cf2.dbf - modified Datafile /oracle/TEST_DB/data/tbs_01.dbf - wrote new name Datafile /oracle/TEST_DB/data/tbs_ax1.dbf - wrote new name Datafile /oracle/TEST_DB/data/tbs_02.dbf - wrote new name Datafile /oracle/TEST_DB/data/tbs_11.dbf - wrote new name Datafile /oracle/TEST_DB/data/tbs_12.dbf - wrote new name Datafile /oracle/TEST_DB/data/temp1.dbf - wrote new name Control File /oracle/TEST_DB/data/cf1.dbf - wrote new name Control File /oracle/TEST_DB/data/cf2.dbf - wrote new name Instance shut down Database name changed to TEST_DB. Modify parameter file and generate a new password file before restarting. Successfully changed database name. DBNEWID - Completed successfully.
妥当性チェックが正常に行われなかった場合、DBNEWIDユーティリティは終了し、ターゲット・データベースは変更されません。データベースをオープンし、エラーを修正した後で、DBNEWIDユーティリティの操作を再開するか、またはデータベース名を変更せずに継続してデータベースを使用することができます。(妥当性チェックが正常に行われなかった場合の出力例は、「DBIDおよびデータベース名の変更」の手順3を参照してください。)
初期化パラメータ・ファイル(PFILE)のDB_NAME
初期化パラメータを新しいデータベース名に設定します。
注意: DBNEWIDユーティリティは、サーバー・パラメータ・ファイル(SPFILE )を変更しません。したがって、SPFILE を使用して、Oracle Databaseを起動した場合は、サーバー・パラメータ・ファイルから初期化パラメータ・ファイルを再作成し、サーバー・パラメータ・ファイルを削除して、初期化パラメータ・ファイルのDB_NAME を変更した後で、サーバー・パラメータ・ファイルを再作成する必要があります。 |
新しいパスワード・ファイルを作成します。
データベースを起動し、通常の使用を再開します。次に例を示します。
STARTUP
データベースIDは変更せずに、データベース名のみを変更したため、データベースのオープン時にRESETLOGS
オプションを使用する必要はありません。これまでのすべてのバックアップは使用可能です。
DBNEWIDユーティリティによって妥当性チェックが正常に行われたが、要求された変更の実行中にエラーが検出された場合、DBNEWIDユーティリティは停止し、データベースは変更中のままになります。この場合、DBNEWIDユーティリティの操作を完了するか、または元に戻さないかぎり、データベースをオープンできません。DBNEWIDユーティリティによって操作の状態を示すメッセージが表示されます。
操作を続行するか元に戻す前に、エラーの原因を解決します。データベース全体を最新のバックアップからリストアして、DBNEWIDユーティリティの起動前の時点までリカバリを実行する以外に解決策がない場合もあります。そのため、DBNEWIDユーティリティの実行前に最新のバックアップを使用可能にしておくことが重要です。
変更を続行する場合は、元のコマンドを再実行します。DBNEWIDユーティリティが再開され、すべてのデータ・ファイルおよび制御ファイルに新しい値が指定されるまで変更操作が続行されます。この時点では、データベースは停止されます。RESETLOGS
オプションを使用してデータベースをオープンする前に、マウントする必要があります。
DBNEWIDユーティリティの操作を元に戻した場合、DBNEWIDユーティリティによって実行されたすべての変更が元に戻され、データベースはマウントされた状態のままになります。
DBNEWIDがリリース10.1以上のOracle Databaseに対して実行された場合は、操作の要約がアラート・ファイルに記録されます。たとえば、データベース名およびデータベースIDの変更では、次のような内容が記録されます。
*** DBNEWID utility started *** DBID will be changed from 86997811 to new DBID of 1250452230 for database PROD DBNAME will be changed from PROD to new DBNAME of TEST_DB Starting datafile conversion Setting recovery target incarnation to 1 Datafile conversion complete Database name changed to TEST_DB. Modify parameter file and generate a new password file before restarting. Database ID for database TEST_DB changed to 1250452230. All previous backups and archived redo logs for this database are unusable. Database has been shutdown, open with RESETLOGS option. Successfully changed database name and ID. *** DBNEWID utility finished successfully ***
データベース名だけの変更では、次のような内容がアラート・ファイルに記録されます。
*** DBNEWID utility started *** DBNAME will be changed from PROD to new DBNAME of TEST_DB Starting datafile conversion Datafile conversion complete Database name changed to TEST_DB. Modify parameter file and generate a new password file before restarting. Successfully changed database name. *** DBNEWID utility finished successfully *** In case of failure during DBNEWID the alert will also log the failure: *** DBNEWID utility started *** DBID will be changed from 86997811 to new DBID of 86966847 for database AV3 Change of database ID failed. Must finish change or REVERT changes before attempting any database operation. *** DBNEWID utility finished with errors ***
次の図に、DBNEWIDユーティリティの構文を示します。
表18-1に、DBNEWIDユーティリティの構文のパラメータを示します。
表18-1 DBNEWIDユーティリティのパラメータ
パラメータ | 説明 |
---|---|
|
データベースへの接続に使用するユーザー名およびパスワードを指定します。ユーザーには、 |
|
|
|
データベース名を変更します。データベースのDBIDおよびDBNAMEは同時に変更できます。DBNAMEのみを変更するには、 |
|
|
|
DBNEWIDユーティリティによってメッセージが書き込まれるファイルを指定します。デフォルトでは、古いログに上書きされます。ログ・ファイルを指定すると、DBNEWIDユーティリティによって確認が求められません。 |
|
|
|
|
DBNEWIDユーティリティには次の制限事項があります。
データベースのDBIDを変更するには、データベースがマウントされており、マウント前に一貫性を維持した状態で停止されている必要があります。Oracle Real Application Clustersデータベースの場合は、データベースをNOPARALLEL
モードでマウントする必要があります。
DBIDの変更後は、RESETLOGS
オプションを使用してデータベースをオープンする必要があります。データベース名のみの変更後は、RESETLOGS
オプションを使用してオープンする必要はありません。
DBNEWIDユーティリティの実行中に、データベースに対して他のプロセスを実行することはできません。他のセッションがデータベースを停止して起動した場合、DBNEWIDユーティリティは異常終了します。
すべてのオンライン・データ・ファイルは、リカバリが不要な、一貫性を維持した状態である必要があります。
NORMALモードでオフラインにされたデータ・ファイルは、アクセスおよび書込みが可能である必要があります。そうでない場合は、DBNEWIDユーティリティを起動する前に、これらのファイルを削除する必要があります。
すべての読取り専用表領域は、DBNEWIDユーティリティを起動する前に、オペレーティング・システム・レベルでアクセスおよび書込みが可能である必要があります。これらの表領域を書込み可能にできない場合(たとえば、表領域がCD-ROMにある場合)は、トランスポータブル表領域機能を使用して、DBNEWIDユーティリティを起動する前に、表領域を書込み可能な領域にトランスポートする必要があります(詳細は、『Oracle Database管理者ガイド』を参照)。
DBNEWIDユーティリティは、グローバル・データベース名を変更しません。詳細は、「グローバル・データベース名に関する考慮点」を参照してください。
DBNEWIDユーティリティをリリース10.1より前のOracle Databaseに対し実行する場合は、次の制限事項がさらに適用されます。
nid
実行可能ファイルはデータ・ファイルおよび制御ファイルに直接アクセスする必要があるため、この実行可能ファイルはOracle所有者が所有し、実行する必要があります。他のユーザーがこのユーティリティを実行する場合は、そのユーザーIDをデータ・ファイルおよび制御ファイルの所有者に設定します。
DBNEWIDユーティリティを使用するには、ローカル接続を介してデータベースのデータ・ファイルに直接アクセスする必要があります。DBNEWIDユーティリティでは、ネット・サービス名は指定できますが、非ローカル・データベースのDBIDは変更できません。