プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

CONSISTENT

デフォルト: n

エクスポート・ユーティリティから見たデータが単一時点に対して一貫性がありexpコマンドの実行時に変更されないことを保証するために、エクスポート・ユーティリティでSET TRANSACTION READ ONLY文を使用するかどうかを指定します。エクスポートの開始後に、他のアプリケーションによるターゲット・データの更新が見込まれる場合は、CONSISTENT=yを指定する必要があります。

CONSISTENT=nを使用する場合、通常は1つのトランザクションでそれぞれの表がエクスポートされます。ただし、表にネストされた表が含まれている場合は、外部表とそれぞれの内部表が個別のトランザクションとしてエクスポートされます。表がパーティション化されている場合は、それぞれのパーティションが個別のトランザクションとしてエクスポートされます。

したがって、ネストされた表およびパーティション化された表が他のアプリケーションによって更新されると、エクスポートされるデータに不整合が生じる可能性があります。この可能性を最小限に抑えるには、更新が行われていないときにそれらの表をエクスポートします。

表22-2に、2人のユーザーによるイベントの順序を示します。user1は、表のパーティションをエクスポートし、user2はその表内のデータを更新します。

表22-2 2人のユーザーによる更新時のイベント順序

時間順序 user1 user2

1

表:P1のエクスポートを開始

アクティビティなし

2

アクティビティなし

表:P2を更新 表:P1を更新 トランザクションをコミット

3

表:P1のエクスポートを終了

アクティビティなし

4

表:P2をエクスポート

アクティビティなし

エクスポートでCONSISTENT=yを使用すると、user2による更新はエクスポート・ファイルに書き込まれません。

エクスポートでCONSISTENT=nを使用すると、表:P1に対する更新はエクスポート・ファイルに書き込まれません。ただし、表:P2に対する更新はエクスポート・ファイルに書き込まれます。これは、更新トランザクションが表:P2のエクスポート開始前にコミットされるためです。その結果、user2のトランザクションが部分的にのみエクスポート・ファイルに記録されて一貫性がなくなります。

CONSISTENT=yを使用し、更新のボリュームが大きい場合は、ロールバック・セグメントの使用量が大きくなります。また、それぞれの表のエクスポート速度が低下します。これはそのロールバック・セグメントで、コミットされていないトランザクションをスキャンする必要があるためです。

CONSISTENT=yの使用については、次のことに注意してください。

  • ユーザーSYSとして接続しているか、AS SYSDBAを使用している(あるいはその両方)ときに実行されるエクスポートでは、CONSISTENT=yはサポートされません。

  • ある特定のメタデータのエクスポートでは、再帰的SQL内でSYSスキーマを使用することが必要になる場合があります。そのような場合は、CONSISTENT=yを使用しても無視されます。CONSISTENT=yが選択されているエクスポート・プロセスの実行時は、メタデータの変更を行わないことをお薦めします。

  • そのようなエクスポートに必要な時間と領域を最小限に抑えるには、一貫性を維持する必要がある表を、一貫性を維持する必要のない表とは別にエクスポートする必要があります。たとえば、一貫性エクスポートでemp表およびdept表を一緒にエクスポートし、データベースの他の部分を2番目のパスでエクスポートします。

  • ロールバック領域を使い切り、コミットされたトランザクションで使用された領域を新しいトランザクションに再利用すると、スナップショットが古すぎるというエラーが発生します。ロールバック・セグメントで領域を再利用すると、最小限の領域要件でデータベースの一貫性を維持できますが、読取り一貫性イメージを保持できる時間は制限されます。

    コミットされたトランザクションが上書きされ、データベースの読取り一貫性ビューに情報が必要になると、スナップショットが古すぎることによるエラーが発生します。

    このエラーを回避するには、読取り一貫性エクスポートにかかる時間を最小限に抑える必要があります。(これを行うには、エクスポートされるオブジェクトの数を制限し、可能な場合は、データベースのトランザクション・レートを低下させます。)また、ロールバック・セグメントを可能なかぎり大きくします。

    注意:

    ロールバック・セグメントは将来のOracle Databaseリリースでは非推奨になります。かわりに、自動UNDO管理を使用することをお薦めします。