最近、次のコマンドを発行して、本番データベースのライブ/オンライン バックアップを作成しました。
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 を使用しています。
ありがとう、ミュール。