21 DBNEWIDユーティリティ
DBNEWIDは、オペレーショナル・データベースのDBIDおよびDBNAMEを変更できるデータベース・ユーティリティです。
次のトピックを参照してください。
- DBNEWIDユーティリティとは
DBNEWIDユーティリティの新機能について説明します。 - DBIDおよびDBNAMEの変更による影響
データベースのDBIDおよびDBNAMEの変更による影響について説明します。 - DBNEWIDのCDBおよびPDBに関する考慮事項
DBNEWIDパラメータであるPDB
を使用すると、プラガブル・データベース(PDB)のDBIDを変更できます。 - データベースのDBIDおよびDBNAMEの変更
この項には、次のトピックが含まれています。 - DBNEWIDの構文
DBNEWIDの構文について説明します。
親トピック: その他のユーティリティ
21.1 DBNEWIDユーティリティとは
DBNEWIDユーティリティの新機能について説明します。
DBNEWIDユーティリティの導入以前は、データベースのコピーを手動で作成し、制御ファイルを再作成してデータベースに新しいデータベース名(DBNAME)を指定することができました。ただし、データベースに新しい識別子(DBID)を指定することはできません。DBIDは、データベース用の内部的な一意の識別子です。Recovery Manager(RMAN)ではDBIDによってデータベースが区別されるため、シード・データベースおよび手動でコピーされたデータベースは、同じRMANリポジトリに登録できません。DBNEWIDユーティリティを使用すると、次のいずれかを変更することによって、この問題を解決できます。
-
データベースのDBIDのみ
-
データベースのDBNAMEのみ
-
データベースのDBNAMEおよびDBIDの両方
親トピック: DBNEWIDユーティリティ
21.2 DBIDおよびDBNAMEの変更による影響
データベースのDBIDおよびDBNAMEの変更による影響について説明します。
データベースのDBIDの変更は、重要な処理です。データベースのDBIDを変更すると、そのデータベースのすべての古いバックアップおよびアーカイブ・ログが使用できなくなります。これは、データがすでにデータ・ファイルに存在する以外は、データベースの作成と同様です。DBIDを変更すると、変更前に作成されたバックアップおよびアーカイブ・ログは、現行のDBIDに一致しない元のDBIDを保持しているため、使用できなくなります。オンラインREDOログを再作成してその順序を1にリセットするRESETLOGS
オプションを使用してデータベースをオープンする必要があります。このため、DBIDの変更直後に、データベース全体のバックアップを取る必要があります。
DBIDを変更せずにDBNAMEを変更する場合は、RESETLOGS
オプションを指定してデータベースをオープンする必要がないため、データベースのバックアップおよびアーカイブ・ログは無効になりません。ただし、DBNAMEを変更すると、これらが無効になります。データベース名の変更後、新しい名前を反映させるにはDB_NAME
初期化パラメータを変更する必要があります。また、Oracleパスワード・ファイルの再作成が必要な場合もあります。制御ファイルの古い(データベース名を変更する前の)バックアップをリストアする場合、データベース名を変更する前の初期化パラメータ・ファイルおよびパスワード・ファイルを使用する必要があります。
ノート:
取得プロセスを使用してデータベースへの変更を取得する場合は、データベースのDBIDまたはDBNAMEを変更しないでください。取得プロセスの詳細は、『Oracle Streams概要および管理』を参照してください。
- グローバル・データベース名に関する考慮点
分散データベース・システム内のデータベースを使用している場合、各データベースには一意のグローバル・データベース名が必要です。
親トピック: DBNEWIDユーティリティ
21.2.1 グローバル・データベース名に関する考慮点
分散データベース・システム内のデータベースを使用している場合、各データベースには一意のグローバル・データベース名が必要です。
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およびDBNAMEの変更による影響
21.3 DBNEWIDのCDBおよびPDBに関する考慮事項
DBNEWIDパラメータであるPDB
を使用すると、プラガブル・データベース(PDB)のDBIDを変更できます。
デフォルトでは、コンテナ・データベース(CDB)に対してDBNEWIDユーティリティを実行すると、そのCDBのみのDBIDが変更され、そのCDBに含まれるプラガブル・データベース(PDB)のDBIDは変更されません。このため、CDBをクローニングした場合などには、PDBのDBIDが重複するという問題が発生することがあります。
Oracle Database 12c リリース2 (12.2)からは、新しいDBNEWID PDB
パラメータを使用して、PDBのDBIDを変更できます。特定のPDBを指定することはできません。すべてのPDBのDBIDを新しくするか、どのPDBのDBIDも変更しないかのどちらかです。PDB
パラメータは、CDB環境にのみ適用可能です。この形式は次のとおりです。
PDB=[ALL | NONE]
-
ALL
を指定した場合、CDBのDBIDが変更されるだけでなく、そのCDBに含まれるすべてのPDBのDBIDも変更されます。 -
NONE
(デフォルト)を指定すると、CDBのDBIDが変更されてもPDBのDBIDは変更されません。
PDB=ALL
の使用をお薦めしますが、下位互換性の理由からPDB=NONE
がデフォルトになっています。
親トピック: DBNEWIDユーティリティ
21.4 データベースのDBIDおよびDBNAMEの変更
この項の内容は次のとおりです。
- DBIDおよびデータベース名の変更
データベースのDBIDの変更方法について説明します。 - データベースIDのみの変更
データベース名を変更せずに、データベースIDを変更する方法について説明します。 - データベース名のみの変更
DBIDを変更せずにデータベース名を変更する方法について説明します。 - DBNEWIDのトラブルシューティング
DBNEWIDユーティリティのトラブルシューティングのヒントについて説明します。
親トピック: DBNEWIDユーティリティ
21.4.1 DBIDおよびデータベース名の変更
データベースのDBIDを変更する方法について説明します。
次のステップでは、データベースのDBIDを変更する方法について説明します。オプションで、データベース名も変更できます。
親トピック: データベースのDBIDおよびDBNAMEの変更
21.4.2 データベースIDのみの変更
データベース名を変更せずに、データベース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およびDBNAMEの変更
21.4.4 DBNEWIDのトラブルシューティング
DBNEWIDユーティリティのトラブルシューティングのヒントについて説明します。
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 ***
親トピック: データベースのDBIDおよびDBNAMEの変更
21.5 DBNEWIDユーティリティの構文
DBNEWIDの構文について説明します。
次の図に、DBNEWIDユーティリティの構文を示します。
- DBNEWIDパラメータ
DBNEWIDのパラメータについて説明します。 - 制限と使用方法
DBNEWIDユーティリティの制限について説明します。 - Oracle Database 10gより前のリリースに対する追加の制限事項
リリース10.1より前のOracle Databaseに対してDBNEWIDユーティリティを実行する場合の追加の制限事項について説明します。
親トピック: DBNEWIDユーティリティ
21.5.1 DBNEWIDパラメータ
DBNEWIDユーティリティのパラメータについて説明します。
次の表に、DBNEWIDの構文のパラメータを示します。
表21-1 DBNEWIDユーティリティのパラメータ
パラメータ | 説明 |
---|---|
|
データベースへの接続に使用するユーザー名およびパスワードを指定します。ユーザーには、 |
|
|
|
データベース名を変更します。データベースのDBIDおよびDBNAMEは同時に変更できます。DBNAMEのみを変更するには、 |
|
|
PDB |
マルチテナント・コンテナ・データベース(CDB)内のすべてのプラガブル・データベース(PDB)のDBIDを変更するか、どのPDBのDBIDも変更しません。(デフォルトでは、コンテナ・データベース(CDB)に対してDBNEWIDユーティリティを実行すると、そのCDBのみのDBIDが変更され、そのCDBに含まれるプラガブル・データベース(PDB)のDBIDは変更されません。)PDB パラメータは、CDB環境にのみ適用可能です。
|
|
DBNEWIDユーティリティによってメッセージが書き込まれるファイルを指定します。デフォルトでは、古いログに上書きされます。ログ・ファイルを指定すると、DBNEWIDユーティリティによって確認が求められません。 |
|
|
|
|
親トピック: DBNEWIDの構文
21.5.2 制限と使用上のノート
DBNEWIDユーティリティの制限事項について説明します。
例:
-
データベースのDBIDを変更するには、データベースがマウントされており、マウント前に一貫性を維持した状態で停止されている必要があります。Oracle Real Application Clustersデータベースの場合は、データベースを
NOPARALLEL
モードでマウントする必要があります。 -
DBIDの変更後は、
RESETLOGS
オプションを使用してデータベースをオープンする必要があります。データベース名のみの変更後は、RESETLOGS
オプションを使用してオープンする必要はありません。 -
DBNEWIDユーティリティの実行中に、データベースに対して他のプロセスを実行することはできません。他のセッションがデータベースを停止して起動した場合、DBNEWIDユーティリティは異常終了します。
-
すべてのオンライン・データ・ファイルは、リカバリが不要な、一貫性を維持した状態である必要があります。
-
NORMALモードでオフラインにされたデータ・ファイルは、アクセスおよび書込みが可能である必要があります。そうでない場合は、DBNEWIDユーティリティを起動する前に、これらのファイルを削除する必要があります。
-
すべての読取り専用表領域は、DBNEWIDユーティリティを起動する前に、オペレーティング・システム・レベルでアクセスおよび書込みが可能である必要があります。これらの表領域を書込み可能にできない場合(たとえば、表領域がCD-ROMにある場合)は、トランスポータブル表領域機能を使用して、DBNEWIDユーティリティを起動する前に、表領域を書込み可能な領域にトランスポートする必要があります。
-
DBNEWIDユーティリティは、グローバル・データベース名を変更しません。詳細は、「グローバル・データベース名に関する考慮点」を参照してください。
親トピック: DBNEWIDの構文
21.5.3 Oracle Database 10gより前のリリースに対する制限事項
DBNEWIDユーティリティをリリース10.1より前のOracle Databaseに対し実行する場合の追加の制限事項について説明します。
例:
-
nid
実行可能ファイルはデータ・ファイルおよび制御ファイルに直接アクセスする必要があるため、この実行可能ファイルはOracle所有者が所有し、実行する必要があります。他のユーザーがこのユーティリティを実行する場合は、そのユーザーIDをデータ・ファイルおよび制御ファイルの所有者に設定します。 -
DBNEWIDユーティリティを使用するには、ローカル接続を介してデータベースのデータ・ファイルに直接アクセスする必要があります。DBNEWIDユーティリティでは、ネット・サービス名は指定できますが、非ローカル・データベースのDBIDは変更できません。
親トピック: DBNEWIDの構文