5

私は 2 つの Oracle データベースを持っており、TOAD を使用して prod DB からテスト DB にデータを頻繁にコピーします。これには、Prod DB の挿入スクリプトを生成し、後でテスト DB で実行します。

バッチファイルを使用してより高速に実行しようとしています。

このソリューションを使用できると思いますが、DB にはauto-increment列があります。このソリューションを使用すると、その列は影響を受けますか? 何らかの方法でスクリプトを変更する必要がありますか? DBにアクセスできず、月曜日にしかテストできないため、これまで試していません。

これを達成できるより良い方法はありますか?私が本質的に探しているのは、バッチ ファイルを使用してコピー手順全体を実行することです。これにより、TOAD を使用してこれに費やす時間を最小限に抑えることができます。

また、解決策が簡単でない場合は、正しい方向に導くことができれば問題ありません。

4

1 に答える 1

8

2つのテーブルの構造が同じであることを確認してください。

ターゲットデータベースに接続します。

ソースデータベースへのパブリックリンクを作成します。これを行うには、ユーザーに「CREATEPUBLICDATABASELINK」システム権限が必要です。

CREATE PUBLIC DATABASE LINK mylink
  CONNECT TO source_user IDENTIFIED BY source_password
  USING 'source_entry_in_tnsnames';

データをコピーします。

INSERT INTO mytable SELECT * FROM mytable@mylink;

テーブルの主キーがシーケンスに由来する場合は、シーケンスを-少なくとも-ソースデータベースと同じ値に設定します。

ALTER SEQUENCE mysequence increment by 100000;
SELECT mysequence.nextval FROM DUAL;
ALTER SEQUENCE mysequence increment by 1;
于 2013-01-09T10:50:58.040 に答える