CREATE CONTROLFILE

ノート:

この文を使用する前に、データベース内のすべてのファイルの全体バックアップを実行することをお薦めします。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

目的

CREATE CONTROLFILE文は、ごく限られた状況でのみ使用します。データベースによって使用されているすべての制御ファイルが失われ、かつバックアップ制御ファイルが存在しない場合に、この文を使用して制御ファイルを再作成します。この文を使用して、REDOログ・ファイル・グループ、REDOログ・ファイル・メンバー、アーカイブREDOログ・ファイル、データファイル、またはデータベースを同時にマウントおよびオープンするインスタンスの最大数を変更することもできます。

データベースの名前を変更するには、CREATE CONTROLFILE文ではなく、DBNEWIDユーティリティを使用することをお薦めします。データベース名の変更後にOPEN RESETLOGS操作が必要ないため、DBNEWIDの方が適しています。

関連項目:

前提条件

制御ファイルを作成する場合は、SYSDBAシステム権限またはSYSBACKUPシステム権限が必要です。

データベースをマウントしているインスタンスがあってはいけません。制御ファイルが正常に作成された後、CLUSTER_DATABASEパラメータで指定したモードでデータベースがマウントされます。続いて、DBAは、データベースをオープンする前にメディア・リカバリを行う必要があります。データベースをOracle Real Application Clusters(Oracle RAC)と併用している場合、次のインスタンスが起動する前に、データベースを停止してSHAREDモード(CLUSTER_DATABASE初期化パラメータの値にTRUEを設定)で再マウントする必要があります。

構文

character_set_clause::=

セマンティクス

CREATE CONTROLFILE文を発行すると、この文に指定した情報に基づいて、新しい制御ファイルが作成されます。制御ファイルは、CONTROL_FILES初期化パラメータで指定した場所に格納されます。このパラメータに値を指定していない場合、Oracle Managed Filesの制御ファイルは、次のいずれか(優先度の高い順に示します)のとおり、制御ファイルのデフォルトの格納先に作成されます。

  1. DB_CREATE_ONLINE_LOG_DEST_n初期化パラメータで指定されている1つ以上の制御ファイル。最初のディレクトリに作成されたファイルが主制御ファイルになります。DB_CREATE_ONLINE_LOG_DEST_nを指定している場合、DB_CREATE_FILE_DESTまたはDB_RECOVERY_FILE_DEST(高速リカバリ領域)には制御ファイルが作成されません。

  2. DB_CREATE_ONLINE_LOG_DEST_nに値が指定されていない場合で、DB_CREATE_FILE_DESTおよびDB_RECOVERY_FILE_DESTの両方に値が設定されている場合は、それぞれの場所に1つの制御ファイルが作成されます。DB_CREATE_FILE_DESTに指定された場所が主制御ファイルの場所になります。

  3. DB_CREATE_FILE_DESTに対してのみ値が指定されている場合は、その場所に1つの制御ファイルが作成されます。

  4. DB_RECOVERY_FILE_DESTに対してのみ値が指定されている場合は、その場所に1つの制御ファイルが作成されます。

これらのパラメータのいずれにも値を設定していない場合、データベースが稼働しているオペレーティング・システムのデフォルトの場所に制御ファイルが作成されます。この制御ファイルはOracle Managed Fileではありません。

句を指定しない場合、Oracle Databaseは、以前の制御ファイルに対する値ではなく、デフォルト値を使用します。制御ファイルが正常に作成された後、Oracle Databaseは、初期化パラメータCLUSTER_DATABASEで指定したモードでデータベースをマウントします。パラメータが設定されていないときのデフォルト値はFALSEで、その場合はEXCLUSIVEモードでデータベースがマウントされます。その後、インスタンスを停止し、データベースのすべてのファイルの全体バックアップを取ることをお薦めします。

REUSE

REUSEを指定すると、初期化パラメータCONTROL_FILESによって特定される既存の制御ファイルを再利用可能にできます。このとき、それらの制御ファイルに現在格納されている情報は上書きされます。この句を指定しないと、既存の制御ファイルがある場合に、エラーが戻されます。

DATABASE句

データベース名を指定します。このパラメータの値は、事前にCREATE DATABASE文またはCREATE CONTROLFILE文で設定した既存のデータベース名である必要があります。

SET DATABASE句

SET DATABASEを使用すると、データベース名を変更できます。データベース名には最大8バイトの名前を指定できます。

この句を指定する場合は、RESETLOGSも指定する必要があります。データベースの名前を変更し、既存のログ・ファイルを保持する場合は、このCREATE CONTROLFILE文を発行した後、ALTER DATABASE RECOVER USING BACKUP CONTROLFILE文を使用して、全データベースのリカバリを完了する必要があります。

logfile_clause

logfile_clauseを使用すると、データベースのREDOログ・ファイルを指定できます。すべてのREDOログ・ファイル・グループのすべてのメンバーを指定する必要があります。

オペレーティング・システムのファイル・システム内の標準REDOログ・ファイル、またはOracle ASMディスク・グループのREDOログ・ファイルをリスト表示するには、file_specificationredo_log_file_spec書式(「file_specification」を参照)を使用します。ASM_filenameの書式を使用する場合、redo_log_file_specautoextend_clauseは指定できません。

この句にRESETLOGSを指定する場合、ASM_filenameのいずれかのファイル作成形式を使用する必要があります。NORESETLOGSを指定する場合、ASM_filenameのいずれかの参照書式を指定する必要があります。

関連項目:

構文の様々な書式は、「ASM_filename」を参照してください。Oracle ASMの使用方法の概要は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。

GROUP integer

ログファイル・グループ番号を指定します。GROUP値を指定した場合、データベースが前回オープンされたときのGROUP値を基にして、この値が検証されます。

この句を指定しない場合、システムのデフォルト値を使用してログ・ファイルが作成されます。また、DB_CREATE_ONLINE_LOG_DEST_n初期化パラメータまたはDB_CREATE_FILE_DEST初期化パラメータのいずれかを設定した場合、およびRESETLOGSを指定した場合は、DB_CREATE_ONLINE_LOG_DEST_nパラメータで指定したログ・ファイルのデフォルトの格納先に2つのログが作成されます。このパラメータを設定していない場合は、DB_CREATE_FILE_DESTパラメータで指定した格納先に作成されます。

関連項目:

この句の詳細は、file_specification」を参照してください。

RESETLOGS

RESETLOGSを指定すると、LOGFILE句にリストされたファイルの内容が無視されるように設定できます。LOGFILE句に指定したファイルは、存在していなくてもかまいません。SET DATABASE句を指定した場合、この句を指定する必要があります。

LOGFILE句の各redo_log_file_specで、SIZEパラメータを指定する必要があります。データベースでは、スレッド1にすべてのオンラインREDOログ・ファイル・グループを割り当てることによって、このスレッドを任意のインスタンスで共通に使用できるようにします。この句を使用した後は、RESETLOGS句を指定したALTER DATABASE文を使用してデータベースをオープンする必要があります。

NORESETLOGS

NORESETLOGSを指定すると、LOGFILE句に指定したすべてのファイルが、前回データベースをオープンしたときの状態で使用されるようになります。これらのファイルは存在している必要があります。また、バックアップからのリストアではなく、現行のオンラインREDOログ・ファイルである必要があります。前回割り当てたスレッドに、REDOログ・ファイル・グループが再度割り当てられ、そのスレッドが前回と同じく再度使用可能になります。

SET DATABASE句を指定してデータベースの名前を変更した場合は、NORESETLOGSを指定することはできません。詳細は、「SET DATABASE句」を参照してください。

DATAFILE句

データベースのデータファイルを指定します。すべてのデータファイルを指定する必要があります。これらのファイルは既存のファイルである必要がありますが、メディア・リカバリを必要とするリストア・バックアップでもかまいません。

DATAFILE句には、読取り専用の表領域のデータファイルを含めないでください。これらのタイプのファイルは、後でデータベースに追加できます。また、この句には、一時データファイル(一時ファイル)も含めないでください。

オペレーティング・システムのファイル・システム内の標準データファイルと一時ファイル、またはOracle ASMディスク・グループのファイルを指定するには、file_specificationdatafile_tempfile_spec書式(「file_specification」を参照)を使用します。ASM_filenameの書式を使用する場合、ASM_filenameのいずれかの参照書式を使用する必要があります。構文の様々な書式は、ASM_filename」を参照してください。

関連項目:

Oracle ASMの使用方法の概要は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。

DATAFILEの制限事項

このDATAFILE句では、file_specificationautoextend_clauseを指定することはできません。

MAXLOGFILES句

データベースに対して作成可能なオンラインREDOログ・ファイル・グループの最大数を指定します。Oracle Databaseは、この値を基にして、制御ファイル内でREDOログ・ファイル名に割り当てる領域の量を決定します。デフォルト値や最大値は、使用するオペレーティング・システムによって異なります。指定する値は、すべてのREDOログ・ファイル・グループのGROUPの最大値以上である必要があります。

MAXLOGMEMBERS句

REDOログ・ファイル・グループのメンバー(同一コピー)の最大数を指定します。Oracle Databaseは、この値を基にして、制御ファイル内でREDOログ・ファイル名に割り当てる領域の量を決定します。最小値は1です。最大値およびデフォルト値は、使用するオペレーティング・システムによって異なります。

MAXLOGHISTORY句

このパラメータは、Oracle DatabaseをARCHIVELOGモードで使用している場合にのみ有効です。データベースの自動メディア・リカバリに必要なアーカイブREDOログ・ファイル・グループの現在見積もられている最大数を指定します。この値を基にして、制御ファイル内でアーカイブREDOログ・ファイル名に割り当てられる領域が決定されます。

最小値は0です。デフォルト値はMAXINSTANCES値の倍数で、使用するオペレーティング・システムによって異なります。最大値は、制御ファイルの最大サイズの制限のみを受けます。必要に応じてデータベースによって制御ファイルの該当セクションに引き続き領域が追加されるため、元の構成で十分でなくなった場合でも制御ファイルを再作成する必要はありません。その結果、このパラメータの実際の値は、指定した値を超える場合があります。

MAXDATAFILES句

CREATE DATABASEまたはCREATE CONTROLFILE実行時の、制御ファイルのデータファイル・セクションの初期サイズを指定します。値がMAXDATAFILESより大きく、DB_FILES以下のファイルを追加した場合、データファイル・セクションにさらに多くのファイルを格納できるように、Oracleの制御ファイルが自動的に拡張されます。

インスタンスでアクセスできるデータファイルの数は、初期化パラメータDB_FILESの制限を受けます。

MAXINSTANCES句

データベースを同時にマウントおよびオープンできるインスタンスの最大数を指定します。この値は、初期化パラメータINSTANCESの値より優先されます。最小値は1です。最大値およびデフォルト値は、使用するオペレーティング・システムによって異なります。

ARCHIVELOG | NOARCHIVELOG

ARCHIVELOGを指定すると、REDOログ・ファイルを再利用する前に、ファイルの内容をアーカイブできます。この句を指定した場合、インスタンスまたはシステム障害リカバリのみでなく、メディア・リカバリも実行できるようになります。

ARCHIVELOG句およびNOARCHIVELOG句を指定しない場合、デフォルトでNOARCHIVELOGモードが選択されます。制御ファイルの作成後に、ALTER DATABASE文を使用して、ARCHIVELOGモードとNOARCHIVELOGモードを切り替えることができます。

FORCE LOGGING

この句を使用すると、制御ファイルの作成後にデータベースをFORCE LOGGINGモードにできます。データベースがこのモードで実行されている場合、一時表領域および一時セグメントへの変更以外のすべてのデータベース内の変更が記録されます。この設定は、各表領域で指定するNOLOGGINGまたはFORCE LOGGING設定、および各データベース・オブジェクトで指定するNOLOGGING設定より優先され、これらの設定には影響されません。この句を指定しない場合、制御ファイルの作成後にデータベースはFORCE LOGGINGモードになりません。

ノート:

FORCE LOGGINGモードは、パフォーマンスに影響する場合があります。この設定を使用する状況の詳細は、『Oracle Database管理者ガイド』を参照してください。

SET STANDBY NOLOGGING FOR DATA AVAILABILITY | LOAD PERFORMANCE

SET STANDBY NOLOGGING

SET STANDBY NOLOGGINGはスタンバイでのロギングを無効にします。これは2種類のモードで指定できます。

  • SET STANDBY NOLOGGINGはFOR DATA AVAILABILITYでは、スタンバイ・データベースへの完全なデータ・レプリケーションが保証されます。プライマリ・データベースとスタンバイ・データベースは、ロード中に同期されます。ネットワークの輻輳が発生すると、プライマリ・データベースはそのロードを抑制します。

  • SET STANDBY NOLOGGINGはFOR LOAD PERFORMANCEは、プライマリ・データベースのロード速度を維持し、後でスタンバイと同期させます。

SET STANDBY NOLOGGINGの制限事項

SET STANDBY NOLOGGING句はFORCE LOGGINGと同時に使用することはできません。

character_set_clause

文字セットを指定した場合、制御ファイルの文字セット情報が再構成されます。データベースのメディア・リカバリが後で必要となる場合、データベースがオープンする前にこの情報が使用可能になり、リカバリ時に表領域名が正しく解析されます。この句は、デフォルト以外の文字セットを使用している場合にのみ必要です。デフォルトはオペレーティング・システムによって異なります。現行のデータベース文字セットは、起動時に$ORACLE_HOME/logのアラート・ログに出力されます。

表領域のリカバリにRecovery Managerを使用して制御ファイルを再作成する場合、およびデータ・ディクショナリに格納されている文字セットとは異なる文字セットを指定した場合、表領域のリカバリは失敗します。ただし、データベースのオープン時、制御ファイルの文字セットは、データ・ディクショナリの正しい文字セットに更新されます。

この句ではデータベース文字セットを変更できません。

関連項目:

表領域のリカバリの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

制御ファイルの作成: 例

この文は、制御ファイルを再作成します。この文のデータベースdemoは、WE8DEC文字セットで作成されています。この例のpathには、ご使用のシステムでの適切なOracle Databaseディレクトリへのパスを挿入してください。

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "demo" NORESETLOGS NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXDATAFILES 32
    MAXINSTANCES 1
    MAXLOGHISTORY 449
LOGFILE
  GROUP 1 '/path/oracle/dbs/t_log1.f'  SIZE 500K,
  GROUP 2 '/path/oracle/dbs/t_log2.f'  SIZE 500K
# STANDBY LOGFILE
DATAFILE
  '/path/oracle/dbs/t_db1.f',
  '/path/oracle/dbs/dbu19i.dbf',
  '/path/oracle/dbs/tbs_11.f',
  '/path/oracle/dbs/smundo.dbf',
  '/path/oracle/dbs/demo.dbf'
CHARACTER SET WE8DEC
;