Oracle sql開発者を使用して、あるデータベースから別のデータベースにテーブルをコピーしようとしています。ユーザー名、パスワード、SIDがあります。
copy from uname1/password1@SID1 to uname2/pwd2@SID2 insert table1 (*) using (select * from message_table);
しかし、私はconnection failed
エラー。
2つのデータベースは異なるホストホストに存在します(ホスト名は接続プロパティが異なります)。
テーブルには500万件のレコードがあり、エクスポート/インポートするには扱いにくい
copy
コマンドは、SQL * Plusコマンドです(SQL Developerコマンドではありません)。 SID1とSID2のtnsnameエントリをセットアップしている場合(たとえば、tnspingを試す)、コマンドを実行できるはずです。
別の前提として、table1にはmessage_tableと同じ列があります(列のデータ型はCHAR、DATE、LONG、NUMBERまたはVARCHAR2のみです)。また、挿入コマンドでは、主キーを考慮する必要があります(たとえば、重複レコードを挿入していないこと)。
SQL * Plusで次のようなコマンドのバリエーションを試しました(エラーなし)。
copy from scott/tiger@db1 to scott/tiger@db2 create new_emp using select * from emp;
上記のステートメントを実行した後、new_empテーブルも切り捨て、次のコマンドを実行しました。
copy from scott/tiger@db1 to scott/tiger@db2 insert new_emp using select * from emp;
SQL Developerを使用すると、次のようにしてオブジェクトをコピーするための同様のアプローチを実行できます。
ツールバーで、[ツール]> [データベースコピー]を選択します。
必要なコピーオプションを使用して、ソースと宛先の接続を識別します。
オブジェクトタイプについては、テーブルを選択します。
コピーコマンドアプローチは古く、その機能は新しいデータ型のリリースで更新されていません。これには、Oracleのデータポンプのように(テーブルの場合でも)より多くの現在のアプローチがあります。