CREATE CONTROLFILE
ノート:
この文を使用する前に、データベース内のすべてのファイルの全体バックアップを実行することをお薦めします。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
目的
CREATE
CONTROLFILE
文は、ごく限られた状況でのみ使用します。データベースによって使用されているすべての制御ファイルが失われ、かつバックアップ制御ファイルが存在しない場合に、この文を使用して制御ファイルを再作成します。この文を使用して、REDOログ・ファイル・グループ、REDOログ・ファイル・メンバー、アーカイブREDOログ・ファイル、データファイル、またはデータベースを同時にマウントおよびオープンするインスタンスの最大数を変更することもできます。
データベースの名前を変更するには、CREATE
CONTROLFILE
文ではなく、DBNEWID
ユーティリティを使用することをお薦めします。データベース名の変更後にOPEN
RESETLOGS
操作が必要ないため、DBNEWID
の方が適しています。
関連項目:
-
DBNEWID
ユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください。 -
既存のデータベース制御ファイルに基づくスクリプトの作成の詳細は、「
ALTER
DATABASE
」の「BACKUP CONTROLFILE句」を参照してください。
前提条件
制御ファイルを作成する場合は、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の制御ファイルは、次のいずれか(優先度の高い順に示します)のとおり、制御ファイルのデフォルトの格納先に作成されます。
-
DB_CREATE_ONLINE_LOG_DEST_
n
初期化パラメータで指定されている1つ以上の制御ファイル。最初のディレクトリに作成されたファイルが主制御ファイルになります。DB_CREATE_ONLINE_LOG_DEST_
n
を指定している場合、DB_CREATE_FILE_DEST
またはDB_RECOVERY_FILE_DEST
(高速リカバリ領域)には制御ファイルが作成されません。 -
DB_CREATE_ONLINE_LOG_DEST_
n
に値が指定されていない場合で、DB_CREATE_FILE_DEST
およびDB_RECOVERY_FILE_DEST
の両方に値が設定されている場合は、それぞれの場所に1つの制御ファイルが作成されます。DB_CREATE_FILE_DEST
に指定された場所が主制御ファイルの場所になります。 -
DB_CREATE_FILE_DEST
に対してのみ値が指定されている場合は、その場所に1つの制御ファイルが作成されます。 -
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_specification
のredo_log_file_spec
書式(「file_specification」を参照)を使用します。ASM_filename
の書式を使用する場合、redo_log_file_spec
のautoextend_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_specification
のdatafile_tempfile_spec
書式(「file_specification」を参照)を使用します。ASM_filename
の書式を使用する場合、ASM_filename
のいずれかの参照書式を使用する必要があります。構文の様々な書式は、「ASM_filename」を参照してください。
関連項目:
Oracle ASMの使用方法の概要は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
DATAFILEの制限事項
このDATAFILE
句では、file_specification
のautoextend_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 ;