22 DBNEWIDユーティリティ

DBNEWIDは、オペレーショナル・データベースのDBIDおよびDBNAMEを変更できるデータベース・ユーティリティです。

次のトピックを参照してください。

22.1 DBNEWIDユーティリティとは

DBNEWIDユーティリティを使用すると、DBIDDBNAMEのみ、またはデータベースのDBIDDBNAMEの両方を変更できます。

DBNEWIDユーティリティの導入以前は、データベースのコピーを手動で作成し、制御ファイルを再作成してデータベースに新しいデータベース名(DBNAME)を指定できました。ただし、データベースに新しい識別子(DBID)は指定できませんでした。DBIDは、データベース用の内部的な一意の識別子です。Recovery Manager(RMAN)ではDBIDによってデータベースが区別されるため、シード・データベースおよび手動でコピーされたデータベースは、同じRMANリポジトリに登録できません。DBNEWIDユーティリティを使用すると、次のいずれかを変更することによって、この問題を解決できます。

  • データベースのDBIDのみ
  • データベースのDBNAMEのみ
  • データベースのDBNAMEおよびDBIDの両方

22.2 DBIDおよびDBNAMEの変更による影響

DBNEWIDユーティリティを使用してデータベースのDBIDおよびDBNAMEを変更する前に、次のガイドラインを確認してください。

注意:

DBIDを変更する前に、Oracleではデータベース全体のバックアップを作成することをお薦めします。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に設定します

  1. ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;

    CLUSTER_DATABASEパラメータを変更した後にデータベースを再起動します。

  2. データベースを停止します。

    SHUTDOWN IMMEDIATE
    

その後、STARTUP MOUNT EXCLUSIVEを実行し、グローバル・データベース名を変更できます。CLUSTER_DATABASE=TRUE中にDBNEWIDユーティリティを使用しようとすると、NID-00120: Database should be mounted exclusivelyでコマンドが失敗します。

その他のガイドラインとベスト・プラクティス

  • 単一インスタンスのみ: Oracle RAC (Real Application Clusters)データベース・インスタンスで直接実行するのではなく、単一インスタンス・データベースに対してnidを実行します。Oracle RACを操作する場合は、Oracle RACのドキュメントに従って手順を実行します。
  • データベースの状態: nidが機能するように、データベースをMOUNTモード(オープンしていない)でオープンします。
  • すべてのステップのスクリプト: Oracleでは、特にプロセスを複数の環境に繰り返したり適用する必要がある場合に、ステップをドキュメント化およびスクリプト化することをお薦めします。
  • クライアントとサービスの更新: データベース名の変更後、TNSNAMES.ORA、サービス、Oracle Data Guard構成および古い名前を指すアプリケーションを更新します。
  • SPFILEの更新: DBNEWIDユーティリティは、サーバー・パラメータ・ファイル(SPFILE)を変更しません。したがって、SPFILEを使用してOracle Databaseを起動する場合は、サーバー・パラメータ・ファイルから初期化パラメータ・ファイルを再作成し、サーバー・パラメータ・ファイルを削除し、初期化パラメータ・ファイルでDB_NAMEを変更してから、サーバー・パラメータ・ファイルを再作成する必要があります。

セキュリティおよびコンプライアンスのリマインダ

データベース名またはDBIDの変更は、重要な作業です。開始する前に、計画された名前の変更が変更管理およびセキュリティ・ガイドラインに準拠していることを確認します。
  • DBAおよびコンプライアンス・チームは、名前変更計画を確認する必要があります。
  • 組織の監査証跡の名前の変更が追跡され、名前の変更が内部変更管理ポリシーと一致していることを確認します。
  • データベース・リリースに関連する最新のドキュメントを常に参照してください。推奨されるステップは、リリースごとに異なる場合があります。

22.3 グローバル・データベース名に関する考慮点

DBNEWID (nid)ユーティリティを使用して、データベース識別子(ID)およびグローバル・データベース名を変更できます。ガイドラインとベスト・プラクティスを確認してください。

DBNEWID (nid)を使用する場合のGLOBAL_NAMEの自動更新

  • DBNEWID (nid)ユーティリティを使用して、データベースの名前(DBNAME)およびデータベース識別子(DBID)を変更できます。SETNAME=Yで実行する場合、nidは新しいデータベース名を使用し、現在のドメインを保持して、グローバル・データベース名(GLOBAL_NAME)を自動的に更新します。
  • nidの実行後に必ずGLOBAL_NAMEの値を確認し、意図した変更が反映されていることを確認します。まれに、または古いOracleリリースの場合は、手動でALTER DATABASE RENAME GLOBAL_NAMEを使用することが必要になる場合があります。

制限事項

  • nidを使用して、マルチテナント環境のCDBシードの名前を変更することはできません。
  • スタンバイ・データベースではnidを使用できません。Oracle Data Guardを使用している場合は、Oracle Data Guardのドキュメントを確認してください。

分散データベースのガイドライン

分散データベース・システム内のデータベース名を更新する場合、各データベースには一意のグローバル・データベース名が必要です。グローバル・データベース名を変更するには、SQLのALTER DATABASE文を使用する必要があります。構文は次のとおりです。

ALTER DATABASE RENAME GLOBAL_NAME TO newname.domain;

グローバル・データベース名は、データベース名およびドメインで構成されます。これらはデータベースが最初に作成されたときにDB_NAMEおよびDB_DOMAIN初期化パラメータによって指定されます。

たとえば、データベース名をsalesに変更するためにDBNEWID (nid)を使用するとします。ドメイン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)を参照

22.4 分散データベースのグローバル・データベース名のガイドライン

分散データベースでは、SQL ALTER DATABASEコマンドを使用してグローバル・データベース名を変更する必要があります。

分散データベース・システム内のデータベース名を更新する場合、各データベースには一意のグローバル・データベース名が必要です。グローバル・データベース名を変更するには、SQLのALTER DATABASE文を使用する必要があります。構文は次のとおりです。

ALTER DATABASE RENAME GLOBAL_NAME TO newname.domain;

グローバル・データベース名は、データベース名およびドメインで構成されます。これらはデータベースが最初に作成されたときにDB_NAMEおよびDB_DOMAIN初期化パラメータによって指定されます。

たとえば、データベース名をsalesに変更するためにDBNEWID (nid)を使用するとします。ドメイン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)を参照

22.5 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です。

22.6 データベースのDBIDおよびDBNAMEの変更

DBIDまたはDBNAME、あるいはデータベースのDBIDDBNAMEの両方を変更するには、必要なDBNEWIDプロシージャを選択します。

22.6.1 DBIDおよびデータベース名の変更

DBNEWIDを使用してデータベースのDBID、またはDBIDDBNAMEの両方を変更するには、この手順を使用します。

注意:

DBIDを変更すると、既存のすべてのバックアップおよびアーカイブREDOログが無効になります。続行する前に、データベース全体のバックアップを実行してください。DBNEWIDの実行後に、RESETLOGSを使用してデータベースをオープンする必要があります。DBNAMEを変更した場合は、新しいパスワード・ファイルを作成し、スクリプト、TNS別名およびOEM構成のすべての参照を更新します。

次のステップでは、データベースのDBIDを変更する方法について説明します。これらのステップでは、データベースPRODのIDを変更し、名前をTEST_DBに変更する例を使用します。

  1. データベース全体のバックアップを実行します。可能な場合は、RMAN全体バックアップを使用してください。
  2. データベースを正常に停止します。ターゲット・データベースが一貫性を維持した状態で停止されていることを確認します。
    SHUTDOWN IMMEDIATE

    SHUTDOWN ABORTは使用しないでください。その場合は、データベースを再度オープンし、IMMEDIATEまたはNORMALを使用して停止します。

  3. データベースをMOUNTモードで起動します。データベースがマウントされ、オープンしていないことを確認します。
    STARTUP MOUNT
    

    これにより、すべてのファイルに一貫性があり、DBNEWID処理の準備ができていることが保証されます。

  4. データベース・サーバーのオペレーティング・システム・プロンプトから、nidユーティリティを実行します。可能な場合は、オペレーティング・システム認証( / as sysdba)を使用します。次に例を示します:

    DBIDのみを変更するには:

    nid TARGET=/

    DBIDおよびDBNAMEの両方を変更するには(例: PRODからTEST_DBに):

    nid TARGET=/ DBNAME=TEST_DB

    確認を求めるプロンプトが表示されます:

    Change database ID and database name PROD to TEST_DB? (Y/[N]) => Y

    DBNEWIDユーティリティは、ファイルを変更する前に、データファイルおよび制御ファイルのヘッダーで検証を実行します。妥当性チェックが正常に行われると、DBNEWIDは、操作の確認を求め(ログ・ファイルを指定した場合は確認を求めません)、オフラインの通常のデータ・ファイルおよび読取り専用データ・ファイルを含む各データ・ファイルのDBIDを変更し(この例のように、DBNAMEが指定された場合は、この例のように変更します)、データベースを停止し、終了します。

    次に、この出力例を示します。

    ...
    Connected to database PROD (DBID=86997811)
    ...
    Control Files in database:
    /oracle/TEST_DB/data/cf1.dbf
    /oracle/TEST_DB/data/cf2.dbf
    ...
    Changing database ID from 86997811 to 1250654267
    Changing database name from PROD to TEST_DB
    Control File /oracle/TEST_DB/data/cf1.dbf - modified
    ...
    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.

    問題のために妥当性チェックが正常に行われなかった場合(たとえば、"offline immediate"データ・ファイル)、次に示す出力例のようにDBNEWIDが終了し、ターゲット・データベースは変更されていません。

    NID-00150: 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.

    妥当性チェック・エラーが発生した場合は、出力を確認し、問題のあるデータ・ファイルのリカバリや削除など、リストされているすべての問題を解決します。問題を解決した後、DBNEWIDステップを繰り返します。

  5. データベース名を変更した場合は、新しいパスワード・ファイルを作成します。

    たとえば:

    orapwd file=$ORACLE_HOME/dbs/orapwTEST_DB password=your_sys_password
  6. 初期化パラメータ・ファイルを編集します。PFILEを使用している場合は、DB_NAMEおよび影響を受けるパラメータを更新します。SPFILEの場合、ALTER SYSTEMを使用してパラメータを修正できます。
  7. RESETLOGSオプションを使用してデータベースを起動してオープンし、通常の操作を再開します。

    たとえば:

    STARTUP MOUNT
    ALTER DATABASE OPEN RESETLOGS;
  8. 全体バックアップを実行します。
    操作後、以前のすべてのバックアップおよびアーカイブ・ログは不要になります。データベースの新規全体バックアップを即時に実行します。

22.6.2 データベースIDのみの変更

データベース名を変更せずにデータベースID (DBID)を変更するには、このDBNEWIDプロシージャを使用します。

「DBIDおよびデータベース名の変更」のステップに従ってください。ただしステップ4では、オプションのデータベース名(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.

22.6.3 データベース名のみの変更

DBIDを変更せずにデータベース名(DBNAME)を変更するには、このDBNEWIDプロシージャを使用します。

次のステップを実行します。

  1. データベース全体のリカバリ可能なバックアップがあることを確認します。
  2. ターゲット・データベースがマウント状態であること、またそのデータベースがマウント前に一貫性を維持した状態で停止されていることを確認します。たとえば:
    SHUTDOWN IMMEDIATE
    STARTUP MOUNT
    
  3. コマンドラインでユーティリティを起動し、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を参照してください。

  4. 初期化パラメータ・ファイル(PFILE)のDB_NAME初期化パラメータを新しいデータベース名に設定します。

    ノート:

    DBNEWIDユーティリティは、サーバー・パラメータ・ファイル(SPFILE)を変更しません。したがって、SPFILEを使用して、Oracle Databaseを起動した場合は、サーバー・パラメータ・ファイルから初期化パラメータ・ファイルを再作成し、サーバー・パラメータ・ファイルを削除して、初期化パラメータ・ファイルのDB_NAMEを変更した後で、サーバー・パラメータ・ファイルを再作成する必要があります。

  5. 新しいパスワード・ファイルを作成します。
  6. データベースを起動し、通常の使用を再開します。たとえば:
    STARTUP
    

    データベースIDは変更せずに、データベース名のみを変更したため、データベースのオープン時にRESETLOGSオプションを使用する必要はありません。以前のすべてのバックアップは引き続き使用可能です。

22.6.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の変更に関するアラート・ファイル

データベースをMOUNTで起動し、「DBIDおよびデータベース名の変更」の説明に従って、データベース名およびデータベースIDを変更するとします:

% nid TARGET=SYS DBNAME=TEST_DB

アラート・ファイルには、次のような結果が表示されます:

*** 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 ***

22.7 DBNEWIDの構文

データベースのDBIDDBNAMEのみ、またはDBIDDBNAMEの両方を変更するには、DBNEWIDを使用します。

次の図に、DBNEWIDユーティリティの構文を示します。

22.7.1 DBNEWIDパラメータ

DBNEWIDユーティリティで使用できるパラメータについて学習します。

DBNEWIDユーティリティでは、データベースの識別方法、操作の選択方法および出力の管理方法を決定する複数のパラメータがサポートされています。これらのパラメータを理解すると、ユーティリティを効果的かつセキュアに使用できます。

表22-1 DBNEWIDユーティリティのパラメータ

パラメータ 説明

TARGET

データベースへの接続に使用するユーザー名およびパスワードを指定します。ユーザーには、SYSDBA権限が必要です。オペレーティング・システム認証を使用している場合、スラッシュ(/)を使用して続けることができます。環境変数$ORACLE_HOMEおよび$ORACLE_SIDが正しく設定されていない場合、ターゲット・データベースへの接続にセキュリティで保護されたサービス(IPCまたはBEQ)を指定できます。DBNEWIDユーティリティを実行するたびにターゲット・データベースを指定する必要があります。

REVERT

YES(デフォルトはNO)を指定すると、失敗したDBIDの変更が元に戻ります。ターゲット・データベース上でDBIDの変更操作が進行していない場合は、ユーティリティによってエラーが出力されます。DBIDの変更が正常に完了した場合は、元に戻せません。REVERT=YESは、DBIDの変更が正常に行われなかった場合にのみ有効です。

DBNAME=new_db_name

データベース名を変更します。データベースのDBIDおよびDBNAMEは同時に変更できます。DBNAMEのみを変更するには、SETNAMEパラメータも指定します。

SETNAME

YES(デフォルトはNO)を指定すると、DBNEWIDユーティリティによってデータベースの名前のみが変更され、DBIDは変更されません。SETNAME=YESを指定すると、ユーティリティによってターゲット・データベースの制御ファイルのみに書き込まれます。

PDB マルチテナント・コンテナ・データベース(CDB)内のすべてのプラガブル・データベース(PDB)のDBIDを変更するか、どのPDBのDBIDも変更しません。デフォルトでは、コンテナ・データベース(CDB)に対してDBNEWIDユーティリティを実行すると、そのCDBのみのDBIDが変更され、そのCDBに含まれるプラガブル・データベース(PDB)のDBIDは変更されません。PDBパラメータは、マルチテナント環境にのみ適用可能です。

LOGFILE=logfile

DBNEWIDユーティリティによってメッセージが書き込まれるファイルを指定します。デフォルトでは、古いログに上書きされます。ログ・ファイルを指定すると、DBNEWIDユーティリティによって確認が求められません。

APPEND

YES(デフォルトはNO)を指定すると、既存のログ・ファイルにログの出力が追加されます。

HELP

YES(デフォルトはNO)を指定すると、DBNEWIDユーティリティの構文オプションのリストが出力されます。

22.7.2 制限と使用上のノート

DBNEWIDユーティリティを使用してデータベース識別子(DBID)を変更するための制限および要件を理解します。

次の制限が適用されます

  • データベースのDBIDを変更するには、データベースがマウントされており、マウント前に一貫性を維持した状態で停止されている必要があります。Oracle Real Application Clustersデータベースの場合、データベースをNOPARALLELモードでマウントする必要があります。

  • DBIDの変更後は、RESETLOGSオプションを使用してデータベースをオープンする必要があります。ただし、データベース名のみを変更した後でRESETLOGSを使用する必要はありません。

  • DBNEWIDの実行中に、データベースに対して他のプロセスを実行することはできません。他のセッションがデータベースを停止して起動した場合、DBNEWIDは終了します。

  • すべてのオンライン・データ・ファイルは一貫性があり、リカバリを必要としません。

  • オフライン・データ・ファイルは、アクセス可能かつ書込み可能である必要があります。ファイルがアクセス不可または書込み可能でない場合は、DBNEWIDユーティリティを使用する前にファイルを削除する必要があります。

  • DBNEWIDを起動する前に、すべての読取り専用表領域をオペレーティング・システム・レベルでアクセス可能にし、書込み可能にする必要があります。これらの表領域を書込み可能にできない場合(たとえば、CD-ROM上にある場合)、トランスポータブル表領域機能を使用して表領域を切断します。DBNEWIDユーティリティを起動する前に、データベースに接続しなおします。

  • DBNEWIDユーティリティは、グローバル・データベース名を変更しません。詳細については、以下を参照:

    グローバル・データベース名に関する考慮点

22.7.3 Oracle Database 10gより前のリリースに対する制限事項

DBNEWIDユーティリティをリリース10.1より前のOracle Databaseに対し実行する場合の追加の制限事項について説明します。

たとえば:

  • nid実行可能ファイルはデータ・ファイルおよび制御ファイルに直接アクセスする必要があるため、この実行可能ファイルはOracle所有者が所有し、実行する必要があります。他のユーザーがこのユーティリティを実行する場合は、そのユーザーIDをデータ・ファイルおよび制御ファイルの所有者に設定します。

  • DBNEWIDユーティリティを使用するには、ローカル接続を介してデータベースのデータ・ファイルに直接アクセスする必要があります。DBNEWIDユーティリティでは、ネット・サービス名は指定できますが、非ローカル・データベースのDBIDは変更できません。