プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
11gリリース2 (11.2)
B56303-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

18 DBNEWIDユーティリティ

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

この章の内容は、次のとおりです。

DBNEWIDユーティリティとは

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

  • データベースのDBIDのみ

  • データベースのDBNAMEのみ

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

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

データベースの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およびDBNAMEの変更

この項の内容は、次のとおりです。

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

次の手順では、データベースのDBIDを変更する方法について説明します。オプションで、データベース名も変更できます。

  1. データベース全体のリカバリ可能なバックアップがあることを確認します。

  2. ターゲット・データベースがマウント状態であること、またそのデータベースがマウント前に一貫性を維持した状態で停止されていることを確認します。次に例を示します。

    SHUTDOWN IMMEDIATE
    STARTUP MOUNT
    
  3. コマンドラインで、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.
    
  4. データベースをマウントします。次に例を示します。

    STARTUP MOUNT
    
  5. RESETLOGSモードでデータベースをオープンし、通常の使用を再開します。次に例を示します。

    ALTER DATABASE OPEN RESETLOGS;
    

    データベースの新しいバックアップを取ります。オンラインREDOログをリセットしたため、現行のデータベースでは古いバックアップとアーカイブ・ログは使用できません。

データベース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を変更せずにデータベース名を変更する方法について説明します

  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オプションを使用する必要はありません。これまでのすべてのバックアップは使用可能です。

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

DBNEWIDユーティリティの構文

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

nid.gifの説明が続きます。
図nid.gifの説明

パラメータ

表18-1に、DBNEWIDユーティリティの構文のパラメータを示します。

表18-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を指定すると、ユーティリティによってターゲット・データベースの制御ファイルのみに書き込まれます。

LOGFILE=logfile

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

APPEND

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

HELP

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


制限事項および使用上の注意

DBNEWIDユーティリティには次の制限事項があります。

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

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

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

  • すべてのオンライン・データ・ファイルは、リカバリが不要な、一貫性を維持した状態である必要があります。

  • NORMALモードでオフラインにされたデータ・ファイルは、アクセスおよび書込みが可能である必要があります。そうでない場合は、DBNEWIDユーティリティを起動する前に、これらのファイルを削除する必要があります。

  • すべての読取り専用表領域は、DBNEWIDユーティリティを起動する前に、オペレーティング・システム・レベルでアクセスおよび書込みが可能である必要があります。これらの表領域を書込み可能にできない場合(たとえば、表領域がCD-ROMにある場合)は、トランスポータブル表領域機能を使用して、DBNEWIDユーティリティを起動する前に、表領域を書込み可能な領域にトランスポートする必要があります(詳細は、『Oracle Database管理者ガイド』を参照)。

  • DBNEWIDユーティリティは、グローバル・データベース名を変更しません。詳細は、「グローバル・データベース名に関する考慮点」を参照してください。

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

DBNEWIDユーティリティをリリース10.1より前のOracle Databaseに対し実行する場合は、次の制限事項がさらに適用されます。

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

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