Oracle
通過數據庫連結遷移數據庫
在 Oracle XE 10g 伺服器中呼叫
FOO
了一個數據庫,該數據庫即將停用 (old.example.com
)。我被要求將它遷移到其他一些 Oracle XE 11g 伺服器 (new.example.com
)。兩台伺服器都在同一個區域網路上。我對數據庫一無所知(這不是我的項目)。房間裡沒有 DBA。我的隨機Google搜尋表明這是一項非常複雜的任務。我可以使用 SQL Developer 或 SQL*Plus。我發現通過網路連結使用 impdp可能是一種相當簡單的方法。但是醫生認為大多數東西是理所當然的,我無法讓它發揮作用。
迄今為止:
- 我已分配
EXP_FULL_DATABASE
給FOO
源伺服器中的使用者(角色DATAPUMP_EXP_FULL_DATABASE
似乎在 10g 中不存在)。- 我
tmp_imp
在目標伺服器中創建了一個名為CREATE DATABASE LINK
和DATAPUMP_IMP_FULL_DATABASE
角色的臨時使用者。- 我被困在創建數據庫連結部分。我已經登錄
new.example.com
並嘗試了CREATE DATABASE LINK語句tmp_imp
的所有可能組合。它們要麼觸發,要麼被接受,但會產生非工作連結 ( , , )。ORA-00933: SQL command not properly ended``ORA-39001: invalid argument value``ORA-39200: Link name "OLD_FOO" is invalid.``ORA-12154: TNS:could not resolve the connect identifier specified
這是我的嘗試之一:
CREATE DATABASE LINK OLD_FOO CONNECT TO FOO IDENTIFIED BY 'pa$$w0rD' USING '//old.example.com:1521/xe';
我究竟做錯了什麼?有沒有更簡單的工具來遷移數據庫?
該
USING
子句需要一個有效的 TNS 條目或別名。用這個:CREATE DATABASE LINK OLD_FOO CONNECT TO FOO IDENTIFIED BY "pa$$w0rD" USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = old.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))';