2012-01-20 26 views
9

Oracle Documentationの次のクエリを使用して、プロダクションサーバのデータベース/テーブルからサンドボックスサーバのデータベース/テーブルにデータをコピーしました。あるデータベース/テーブルから別のデータベース/テーブルにデータをコピーする方法

COPY FROM username1/[email protected]<production_IP> to username2/[email protected]<sandbox_IP> INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

しかし、私は常にConnection failedエラーに実行しています。クエリに何か問題はありますか?

+0

宛先テーブルはすでに存在しますか? – tallybear

+0

'production_IP'はIPアドレスを表しますか?はいの場合は、それでは十分ではありません。 TNS名を設定し、SIDまたはサービス名を使用するか、簡単な接続名(SIDまたはサービス名も含む)を使用する必要があります。 – Codo

+0

@tallybear:はい –

答えて

16

一般的なOracle環境では、TNS名が設定されています。これは、SIDまたはサービス名を指定してOracleインスタンスの接続パラメータを検索するサービスです。最も簡単な形式では、TNS名はというファイルで、環境変数TNS_ADMIN(ファイルが存在するディレクトリを指しています)にあります。

のSID PRODSANDBOXを考えると、あなたはその後、SQLPLUSコマンドラインユーティリティからテーブルをコピーすることができますが:、文字、日付:

COPY FROM username1/[email protected] to username2/[email protected] 
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884); 

このCOPYコマンドは、Oracleデータ型の限定セットをサポートしていることに注意してください長い、varchar2、番号。

TNS名が設定されていない場合は、ホスト名またはIPアドレス、ポート番号、およびサービス名を知っている必要があります。構文は、次のようになります。

COPY FROM username1/[email protected]//192.168.3.17:1521/PROD_SERVICE to username2/[email protected]//192.168.4.17:1521/SANDBOX_SERVICE 
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884); 

SIDおよび/またはサービス名を決定するには、あなたが最良のデータベースサーバ自体のtnsnames.oraファイルに見ています。あなたがデータベースにログインすることができます場合は、SIDやサービス名を決定するには、次のクエリを使用することができます(ただし、これである私に聞かないでください):

select name from v$database; 

select * from global_name; 

select instance_number, instance_name, host_name from v$instance; 
関連する問題