2012-01-20 63 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名稱是一個名爲tnsnames.ora的文件,位於環境變量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數據類型:字符,日期, long,varchar2,number。

如果您沒有設置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; 
相關問題