通過dblink,資料泵expdp遠端跨版本導庫

我才是程先生發表於2020-10-11

背景環境

希望匯出伺服器上的庫到本地,並繞過兩個資料量很大的表,所以考慮使用資料泵的exclude引數。

遠端伺服器:
Oracle服務端版本12c:12.1.0.1

本地:
Oracle服務11g:11.2.0.1
Oracle客戶端版本11g:11.2.0.1

連線伺服器(使用dblink)

這裡我本地有一個服務端,所以我是通過plsql連線本地庫之後,使用dblink連線遠端庫再的,與直接連遠端庫類似:

  1. 授權並建立dblink;
    檢視是否有許可權: select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='使用者名稱';
    授予許可權: grant create public database link to 使用者名稱;,記得使用上句檢視。
    建立dblink:create public database link 連線名 connect to 遠端服務的使用者名稱 identified by 密碼(數字要雙引號) USING '遠端TNS連線';
    例如:
create public database link TESTLINK connect to USERNAME identified by PASSWORD USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    ))';
  1. 使用低版本連線高版本客戶端出錯:ORA-28040、ORA-01017
    針對ORA-28040
    在資料庫伺服器上的$ORACLE_HOME/network/admin/sqlnet.ora檔案中
    增加兩行(支援低版本客戶端的連線認證方式),不需要重啟監聽
 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

針對ORA-01017
支援低版本認證後需要重置密碼,使用如下命令在sql中刷一下密碼即可,不需要修改密碼

alert user xxx identified by xxxxxx;

至此,使用低版本客戶端連線高版本伺服器已經成功,我使用的dblink,也沒用問題。
查詢時,需要在表名後跟上dblink名

SELECT * FROM v$version@TESTLINK;

資料泵expdp匯出

在系統中建立資料夾,並在本地客戶端執行以下語句,確保該地址真實存在;

create directory expdp_dir as ‘f:\data;
select * from dba_directory;

cmd命令列中執行:

expdp 本地使用者名稱/密碼@本地庫 schemas=需匯出使用者1 dumpfile=匯出的檔名.dmp directory=expdp_dir exclude=table:\"in('除了表1','除了表2')\" logfile=匯出記錄日誌檔名.log version=即將impdp匯入的資料庫版本號 network_link=testlink(dblink名)

expdp遭遇ORA-39006、ORA-39065、ORA-01422、ORA-39097錯誤

根據網上經驗,在遠端伺服器上執行,可解決(我實驗沒用效果,暫時沒時間琢磨了,還是使用exp/imp來做了,後面有空再研究把):

sqlplus / as sysdba  

SQL>@$ORACLE_HOME/rdbms/admin/catmeta.sql   

SQL>@$ORACLE_HOME/rdbms/admin/catmet2.sql   

SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql

附上我查的資料中覺得有所幫助的幾篇,供大家參考

客戶端登入Oracle 12.2伺服器報ORA-01017的解惑
ORACLE 12C連線時報ORA28040和ORA01017的錯誤
ORA-28040 資料庫相容性解決方案 沒有匹配的驗證協議
ORACLE dblink的簡單使用
使用expdp(非本地)遠端匯出資料
expdp遭遇ORA-39006、ORA-39065、ORA-01403、ORA-39097錯誤
[Oracle] expdp ORA-39006, ORA-39065 的解決辦法

致謝

  1. 感謝各位前輩不吝賜教,寫下博文分享;
  2. 感謝大家耐心閱讀。

相關文章