22 DBNEWIDユーティリティ
DBNEWIDは、オペレーショナル・データベースのDBIDおよびDBNAMEを変更できるデータベース・ユーティリティです。
次のトピックを参照してください。
- DBNEWIDユーティリティとは
DBNEWID
ユーティリティを使用すると、DBID
、DBNAME
、またはデータベースのDBID
とDBNAME
の両方のみを変更できます。 - DBIDおよびDBNAMEの変更による影響
DBNEWIDユーティリティを使用してデータベースのDBID
およびDBNAME
を変更する前に、次のガイドラインを確認してください。 - グローバル・データベース名に関する考慮点
分散データベース・システム内のデータベースを使用している場合、各データベースには一意のグローバル・データベース名が必要です。 - DBNEWIDを使用したCDB DBIDとPDB DBIDの両方の変更
DBNEWIDパラメータPDB
を使用すると、プラガブル・データベース(PDB)のDBID
を変更できます。 - データベースのDBIDおよびDBNAMEの変更
DBID
またはDBNAME
、あるいはデータベースのDBID
とDBNAME
の両方を変更するには、必要なDBNEWIDプロシージャを選択します。 - DBNEWIDの構文
DBNEWIDの構文について説明します。
親トピック: その他のユーティリティ
22.1 DBNEWIDユーティリティとは
DBNEWID
ユーティリティを使用すると、DBID
、DBNAME
のみ、またはデータベースのDBID
とDBNAME
の両方を変更できます。
DBNEWIDユーティリティの導入以前は、データベースのコピーを手動で作成し、制御ファイルを再作成してデータベースに新しいデータベース名(DBNAME
)を指定できました。ただし、データベースに新しい識別子(DBID
)は指定できませんでした。DBID
は、データベース用の内部的な一意の識別子です。Recovery Manager(RMAN)ではDBID
によってデータベースが区別されるため、シード・データベースおよび手動でコピーされたデータベースは、同じRMANリポジトリに登録できません。DBNEWIDユーティリティを使用すると、次のいずれかを変更することによって、この問題を解決できます。
- データベースの
DBID
のみ - データベースの
DBNAME
のみ - データベースの
DBNAME
およびDBID
の両方
親トピック: DBNEWIDユーティリティ
22.2 DBIDおよびDBNAMEの変更による影響
DBNEWIDユーティリティを使用してデータベースのDBID
およびDBNAME
を変更する前に、次のガイドラインを確認してください。
DBID
を変更する場合は、データベース全体のバックアップをすぐに作成する必要があります。
データベースのDBID
の変更は、重要な処理です。データベースのDBID
を変更すると、そのデータベースのすべての古いバックアップおよびアーカイブ・ログが使用できなくなります。DBID
の変更は、データがすでにデータファイルに存在する点を除いて、データベースの作成と同様です。DBID
を変更すると、DBID
の変更前に作成されたバックアップおよびアーカイブ・ログは、現行のDBID
に一致しない元のDBID
を保持しているため、使用できなくなります。オンラインREDOログを再作成し、REDOログ順序を1にリセットするRESETLOGS
オプションを使用して、データベースをオープンする必要があります。したがって、次のことが該当します。
DBNAME
を変更し、DBID
を変更しない場合は、DBNAME
初期化パラメータを変更し、追加のガイドラインに従う必要があります。
DBID
を変更せずにDBNAME
を変更する場合は、RESETLOGS
オプションを指定してデータベースをオープンする必要がないため、データベースのバックアップおよびアーカイブ・ログは無効になりません。ただし、DBNAME
を変更すると、これらが無効になります。データベース名の変更後、新しい名前を反映させるにはDB_NAME
初期化パラメータを変更する必要があります。また、Oracleパスワード・ファイルの再作成が必要な場合もあります。制御ファイルの古い(データベース名を変更する前の)バックアップをリストアする場合、データベース名を変更する前の初期化パラメータ・ファイルおよびパスワード・ファイルを使用する必要があります。
注意:
取得プロセスを使用してデータベースに対する変更を取得する場合は、データベースのDBID
またはDBNAME
を変更しないでください。
Oracle RAC環境の場合のみ、DBNEWIDユーティリティを実行する前に、まずクラスタからデータベースをデタッチする必要があります。SQL*Plusを使用して次のコマンドを入力し、CLUSTER_DATABASE
の初期化パラメータ値をFALSE
に設定します
-
ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;
CLUSTER_DATABASE
パラメータを変更した後にデータベースを再起動します。 -
データベースを停止します。
SHUTDOWN IMMEDIATE
その後、STARTUP MOUNT EXCLUSIVE
を実行し、グローバル・データベース名を変更できます。CLUSTER_DATABASE=TRUE
中にDBNEWIDユーティリティを使用しようとすると、NID-00120: Database should be mounted exclusively
でコマンドが失敗します。
22.3 グローバル・データベース名に関する考慮点
分散データベース・システム内のデータベースを使用している場合、各データベースには一意のグローバル・データベース名が必要です。
DBNEWIDユーティリティは、グローバル・データベース名を変更しません。
グローバル・データベース名を変更するには、SQLのALTER DATABASE
文を使用する必要があります。構文は次のとおりです。
ALTER DATABASE RENAME GLOBAL_NAME TO newname.domain;
グローバル・データベース名は、データベース名およびドメインで構成されます。これらはデータベースが最初に作成されたときにDB_NAME
およびDB_DOMAIN
初期化パラメータによって指定されます。
たとえば、DBNEWIDを使用してデータベース名をsales
に変更するとします。ドメインexample.com
でグローバル・データベース名をsales
に変更するには、次のようにALTER DATABASE RENAME
を使用する必要があります。
ALTER DATABASE RENAME GLOBAL_NAME TO sales.example.com
関連項目:
グローバル・データベース名の詳細はOracle Database管理者ガイド、およびMy Oracle SupportのNIDユーティリティを使用したDBID、DBNAMEの変更方法(ドキュメントID 863800.1)を参照
親トピック: DBNEWIDユーティリティ
22.4 DBNEWIDを使用したCDBおよびPDB DBIDの両方の変更
DBNEWIDパラメータであるPDB
を使用すると、プラガブル・データベース(PDB)のDBID
を変更できます。
デフォルトでは、DBNEWIDユーティリティをコンテナ・データベース(CDB)で実行すると、このユーティリティはCDBのDBID
のみを変更します。CDBに接続されている各プラガブル・データベース(PDB)のDBID
値は同じままです。場合によっては、このデフォルトの動作によってPDBのDBID値が重複して問題が発生することがあります。たとえば、CDBのクローニング時にこの問題が発生する可能性があります。
Oracle Database 12cリリース2 (12.2)以降では、マルチテナント・データベースでDBNEWIDユーティリティPDBパラメータを使用して、PDBのDBID値を変更できます。特定のPDBを指定することはできません。すべてのPDBに新しいDBID
値が割り当てられているか、どのPDBにも割り当てられていません。PDB
パラメータの形式は次のとおりです。
PDB=[ALL | NONE]
-
ALL
を指定すると、CDB変更のDBID
に加えて、CDBに接続されているすべてのPDBのDBID
値も変更されます。 -
NONE
(デフォルト)を指定すると、CDBのDBID
が変更されてもPDBのDBID
は変更されません。
PDB=ALL
を使用することをお薦めします。下位互換性を保つために、デフォルトはPDB=NONE
です。
親トピック: DBNEWIDユーティリティ
22.5 データベースのDBIDおよびDBNAMEの変更
DBID
またはDBNAME
、あるいはデータベースのDBID
とDBNAME
の両方を変更するには、必要なDBNEWIDプロシージャを選択します。
- DBIDおよびデータベース名の変更
DBNEWIDを持つデータベースのDBID
またはDBID
とDBNAME
の両方を変更するには、このプロシージャを使用します。 - データベースIDのみの変更
データベース名を変更せずにデータベースID (DBID
)を変更するには、このDBNEWIDプロシージャを使用します。 - データベース名のみの変更
DBID
を変更せずにデータベース名(DBNAME
)を変更するには、このDBNEWIDプロシージャを使用します。 - DBNEWIDのトラブルシューティング
DBNEWIDを使用してデータベースIDを変更する際にエラーが発生する場合は、次のトラブルシューティング・ヒントを参照してください。
親トピック: DBNEWIDユーティリティ
22.5.1 DBIDおよびデータベース名の変更
DBNEWIDを持つデータベースのDBID
またはDBID
とDBNAME
の両方を変更するには、このプロシージャを使用します。
DBID
を変更する方法について説明します。データベース名も変更できます。
親トピック: データベースのDBIDおよびDBNAMEの変更
22.5.2 データベースIDのみの変更
データベース名を変更せずにデータベースID (DBID
)を変更するには、このDBNEWIDプロシージャを使用します。
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の変更
22.5.3 データベース名のみの変更
DBID
を変更せずにデータベース名(DBNAME
)を変更するには、このDBNEWIDプロシージャを使用します。
次のステップを実行します。
親トピック: データベースのDBIDおよびDBNAMEの変更
22.5.4 DBNEWIDのトラブルシューティング
DBNEWIDを使用してデータベースIDを変更するときにエラーが発生した場合は、次のトラブルシューティング・ヒントを参照してください。
DBNEWIDユーティリティによって妥当性チェックが正常に行われたが、要求された変更の実行中にエラーが検出された場合、DBNEWIDユーティリティは停止し、データベースは変更中のままになります。この場合、DBNEWIDユーティリティの操作を完了するか、または元に戻さないかぎり、データベースをオープンできません。DBNEWIDユーティリティによって操作の状態を示すメッセージが表示されます。
操作を続行するか元に戻す前に、エラーの原因を解決します。データベース全体を最新のバックアップからリストアして、DBNEWIDユーティリティの起動前の時点までリカバリを実行する以外に解決策がない場合もあります。このシナリオでは、DBNEWIDの前に最近のバックアップを使用可能にすることの重要性を理解しています。
変更を続行する場合は、元のコマンドを再実行します。DBNEWIDユーティリティが再開され、すべてのデータ・ファイルおよび制御ファイルに新しい値が指定されるまで変更操作が続行されます。この時点では、データベースは停止されます。RESETLOGS
オプションを使用してデータベースをオープンする前に、マウントする必要があります。
DBNEWIDユーティリティの操作を元に戻した場合、DBNEWIDユーティリティによって実行されたすべての変更が元に戻され、データベースはマウントされた状態のままになります。
DBNEWIDがOracle Database 10gリリース1 (10.1)以降のリリースのOracle Databaseに対して実行されている場合、操作のサマリーがアラート・ファイルに書き込まれます。
例22-1 データベース名とデータベースIDの変更に関するアラート・ファイル
データベース名とデータベース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の変更
22.6 DBNEWIDの構文
DBNEWIDの構文について説明します。
次の図に、DBNEWIDユーティリティの構文を示します。
- DBNEWIDパラメータ
DBNEWIDのパラメータについて説明します。 - 制限と使用方法
DBNEWIDユーティリティの制限について説明します。 - Oracle Database 10gより前のリリースに対する追加の制限事項
リリース10.1より前のOracle Databaseに対してDBNEWIDユーティリティを実行する場合の追加の制限事項について説明します。
親トピック: DBNEWIDユーティリティ
22.6.1 DBNEWIDのパラメータ
DBNEWIDユーティリティのパラメータについて説明します。
次の表に、DBNEWIDの構文のパラメータを示します。
表22-1 DBNEWIDユーティリティのパラメータ
パラメータ | 説明 |
---|---|
|
データベースへの接続に使用するユーザー名およびパスワードを指定します。ユーザーには、 |
|
|
|
データベース名を変更します。データベースのDBIDおよびDBNAMEは同時に変更できます。DBNAMEのみを変更するには、 |
|
|
PDB |
マルチテナント・コンテナ・データベース(CDB)内のすべてのプラガブル・データベース(PDB)のDBIDを変更するか、どのPDBのDBIDも変更しません。(デフォルトでは、コンテナ・データベース(CDB)に対してDBNEWIDユーティリティを実行すると、そのCDBのみのDBIDが変更され、そのCDBに含まれるプラガブル・データベース(PDB)のDBIDは変更されません。)PDB パラメータは、CDB環境にのみ適用可能です。
|
|
DBNEWIDユーティリティによってメッセージが書き込まれるファイルを指定します。デフォルトでは、古いログに上書きされます。ログ・ファイルを指定すると、DBNEWIDユーティリティによって確認が求められません。 |
|
|
|
|
親トピック: DBNEWIDの構文
22.6.2 制限と使用上のノート
DBNEWIDユーティリティの制限事項について説明します。
たとえば:
-
データベースのDBIDを変更するには、データベースがマウントされており、マウント前に一貫性を維持した状態で停止されている必要があります。Oracle Real Application Clustersデータベースの場合は、データベースを
NOPARALLEL
モードでマウントする必要があります。 -
DBIDの変更後は、
RESETLOGS
オプションを使用してデータベースをオープンする必要があります。データベース名のみの変更後は、RESETLOGS
オプションを使用してオープンする必要はありません。 -
DBNEWIDユーティリティの実行中に、データベースに対して他のプロセスを実行することはできません。他のセッションがデータベースを停止して起動した場合、DBNEWIDユーティリティは異常終了します。
-
すべてのオンライン・データ・ファイルは、リカバリが不要な、一貫性を維持した状態である必要があります。
-
NORMALモードでオフラインにされたデータ・ファイルは、アクセスおよび書込みが可能である必要があります。そうでない場合は、DBNEWIDユーティリティを起動する前に、これらのファイルを削除する必要があります。
-
すべての読取り専用表領域は、DBNEWIDユーティリティを起動する前に、オペレーティング・システム・レベルでアクセスおよび書込みが可能である必要があります。これらの表領域を書込み可能にできない場合(たとえば、表領域がCD-ROMにある場合)は、トランスポータブル表領域機能を使用して、DBNEWIDユーティリティを起動する前に、表領域を書込み可能な領域にトランスポートする必要があります。
-
DBNEWIDユーティリティは、グローバル・データベース名を変更しません。詳細は、「グローバル・データベース名に関する考慮点」を参照してください。
親トピック: DBNEWIDの構文
22.6.3 Oracle Database 10gより前のリリースに対する制限事項
DBNEWIDユーティリティをリリース10.1より前のOracle Databaseに対し実行する場合の追加の制限事項について説明します。
たとえば:
-
nid
実行可能ファイルはデータ・ファイルおよび制御ファイルに直接アクセスする必要があるため、この実行可能ファイルはOracle所有者が所有し、実行する必要があります。他のユーザーがこのユーティリティを実行する場合は、そのユーザーIDをデータ・ファイルおよび制御ファイルの所有者に設定します。 -
DBNEWIDユーティリティを使用するには、ローカル接続を介してデータベースのデータ・ファイルに直接アクセスする必要があります。DBNEWIDユーティリティでは、ネット・サービス名は指定できますが、非ローカル・データベースのDBIDは変更できません。
親トピック: DBNEWIDの構文