Oracle

通過數據庫連結遷移數據庫

  • October 9, 2017

在 Oracle XE 10g 伺服器中呼叫FOO了一個數據庫,該數據庫即將停用 ( old.example.com)。我被要求將它遷移到其他一些 Oracle XE 11g 伺服器 ( new.example.com)。兩台伺服器都在同一個區域網路上。我對數據庫一無所知(這不是我的項目)。房間裡沒有 DBA。我的隨機Google搜尋表明這是一項非常複雜的任務。我可以使用 SQL Developer 或 SQL*Plus。

我發現通過網路連結使用 impdp可能是一種相當簡單的方法。但是醫生認為大多數東西是理所當然的,我無法讓它發揮作用。

迄今為止:

  1. 我已分配EXP_FULL_DATABASEFOO源伺服器中的使用者(角色DATAPUMP_EXP_FULL_DATABASE似乎在 10g 中不存在)。
  2. tmp_imp在目標伺服器中創建了一個名為CREATE DATABASE LINKDATAPUMP_IMP_FULL_DATABASE角色的臨時使用者。
  3. 我被困在創建數據庫連結部分。我已經登錄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)))';

引用自:https://dba.stackexchange.com/questions/188006