4

最近、次のコマンドを発行して、本番データベースのライブ/オンライン バックアップを作成しました。

expdp system/******@SID FULL=y DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_export.log JOB_NAME=prod_backup

エラーも警告もありませんでした。

次に、このダンプを取得し、次のコマンドを発行して、そこから多くの開発者データベースを作成しました。

impdp system/******@SID SCHEMAS=MY_SCHEMA DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_import.log

繰り返しますが、エラーも警告もありません。

開発者環境がセットアップされると、開発者はアプリケーションを起動し、いくつかのテスト データを挿入しようとしました。最初の数回の試行は、主キー違反で失敗しました。少し調べてみると、キャッシュされたシーケンス (NOCACHE シーケンスは問題ありませんでした) は、一般的に 1 つまたは 2 つの値だけ遅れていることがわかりました。

例は、連絡先テーブルのシーケンスです。

CREATE SEQUENCE REQ_CONTACT_SEQ
START WITH 213041
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER;

Oracle は、このシーケンスの最後にキャッシュされた値213041 を示しています。ここで、次のクエリを実行すると:

SELECT MAX(id) FROM REQ_CONTACT;

オラクルは を返します213042。この値がシーケンスよりも 1 高いことは明らかです。

ですから....私の質問は、実稼働中にデータ エクスポートを行ったために、この結果しか得られなかったのですか?つまり、データベースへのオープンでアクティブな接続があったのですか? それとも、Data Pump はキャッシュされたシーケンスに問題がありますか? Oracle 10.2.0.4 を使用しています。

ありがとう、ミュール。

4

3 に答える 3