使用impdp命令在不同例項間透過dblink同步資料庫
一、環境說明
源資料庫:
IP地址:192.168.137.100 sid:catalog 使用者名稱:rman 密碼:rman |
目標資料庫:
IP地址:192.168.137.101 sid:orcl 使用者名稱:rman 密碼:rman |
二、在目標資料庫上建立到源資料庫的tnsname。
用oracle使用者登入目標資料庫,修改 $ORACLE_HOME/network/admin/tnsnames.ora檔案,增加如下內容
catalog = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.100)(PORT = 1521)) ) (CONNECT_DATA = (SID = catalog) ) ) |
修改完這個檔案之後,執行如下命令,測試建立的tnsname是否正確
$ tnsping catalog |
三、建立 dblink
建立dblink的語句為
CREATE DATABASE LINK |
用oracle使用者身份登入目標資料庫伺服器,執行如下操作
$ sqlplus rman/rman sql> CREATE DATABASE LINK dmp_link CONNECT TO rman IDENTIFIED BY rman USING 'catalog'; |
*************************************
如果出現
ERROR at line 1: ORA-01031: insufficient privileges |
grant create database link to rman; |
然後執行如下語句,測試dblink是否建立成功,能返回結果證明dblink建立成功
SQL> select tname from tab@dmp_link; SQL> exit; |
四、在目標資料庫上建立directory物件
以oracle使用者登入目標資料庫
1、建立一個目錄,假設為 /oracle/dmp,並保證這個目錄oracle使用者可讀寫
2、以sysdba身份登入資料庫,建立directory物件,並給這個物件賦予讀寫許可權
3、然後登入資料庫,執行如下語句:
$ sqlplus / as sysdba sql> create or replace directory dmp_dir as '/oracle/dmp'; sql> grant read,write on directory dmp_dir to public; sql> exit; |
五、在目標資料庫上執行impdp命令,匯入資料
將transdata.sh指令碼放到目標資料庫的一個目錄中,並設定可以用oracle使用者執行,然後使用如下命令格式執行
sh transdata.sh |
六、下面是transdata.sh的指令碼
transdata.sh
################################################################################ lv_argc=0 #args count lv_user="" #local database username lv_pwd="" #local database password lv_sid="" #local database sid ################################################################################ lv_argc=$# case ${lv_argc} in 3 ) lv_user=`echo $1| tr "[:lower:]" "[:upper:]"` lv_pwd=$2 lv_sid=$3 ;; * ) echo "usage:$0 username passwd sid" exit ;; esac ################################################################################ export ORACLE_SID=$lv_sid sqlplus $lv_user/$lv_pwd < /dev/null set echo off; set feedback off; set heading off; set pagesize 0; set linesize 120; set termout off; set trimout on; set trimspool on; spool dropobject_tmp.sql Select 'alter table '||t.table_name||' drop constraint '|| t.constraint_name||';' From User_Constraints t Where t.constraint_type='R'; select 'drop '||object_type||' '||object_name||';' from user_objects where object_type not in ('TABLE','INDEX','DATABASE LINK','LOB','TYPE','PACKAGE BODY'); spool off host cat dropobject_tmp.sql|grep -v "^SQL>" > dropobject.sql @dropobject.sql; exit ! ################################################################################ impdp ${lv_user}/${lv_pwd} directory=dmp_dir network_link=dmp_link exclude=USER:"='${lv_user}'" TABLE_EXISTS_ACTION=REPLACE parallel=4 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22049049/viewspace-1029591/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用impdp實現資料在不同使用者、不同例項之間快速複製
- 【IMPDP】不同資料庫例項不同使用者間資料遷移複製——NETWORK_LINK引數資料庫
- 【IMPDP】同一資料庫例項不同使用者間資料遷移複製——NETWORK_LINK引數資料庫
- RAC建立DBlink並使用impdp抽取源庫資料
- 在不同機器之間使用rman複製資料庫例項,從非asm到asm資料庫ASM
- 用impdp同步資料庫資料庫
- 不同Oracle資料庫之間的資料同步Oracle資料庫
- oracle11g單例項透過命令列dbca靜默建立資料庫Oracle單例命令列資料庫
- 使用EXPDP IMPDP傳輸不同資料庫的不同表空間(新增網路傳輸)資料庫
- 透過Database Link/IMPDP,同步10G、11G資料庫失敗Database資料庫
- 透過 srvctl來管理單例項11g資料庫單例資料庫
- 使用物化檢視實現在不同字符集的資料庫之間的資料同步資料庫
- Oracle資料庫遷移之三:dblink+impdpOracle資料庫
- 在異機上利用dblink做impdp資料匯入
- 用impdp同步使用者資料
- 不同字符集資料庫之間的資料同步問題:資料庫
- 透過作業定時同步兩個資料庫資料庫
- 不同字符集資料庫之間的資料同步問題-補資料庫
- oracle 觸發器實現禁止在資料庫中建立dblink ---透過觸發器實現Oracle觸發器資料庫
- 在兩個資料庫之間進行資料同步資料庫
- 資料庫學習:透過作業定時同步兩個資料庫(轉)資料庫
- 教你如何運用python實現不同資料庫間資料同步功能Python資料庫
- 例項詳解不同VLAN間通訊(轉發過程)
- 【DBLINK】不可使用 DBLINK在遠端資料庫上執行DDL類SQL資料庫SQL
- 資料庫–如何連線RDS例項,使用雲資料庫?資料庫
- Oracle - 資料庫的例項、表空間、使用者、表之間關係Oracle資料庫
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 跨平臺銷售策略:透過API同步不同市場的商品資料API
- 使用expdp、impdp遷移資料庫資料庫
- 用srvctl 命令停止RAC 資料庫某個例項資料庫
- expdp/impdp操作例項
- 透過Log Miner做Oracle資料同步Oracle
- oracle 資料庫例項Oracle資料庫
- 資料庫和例項資料庫
- MongoDB在不同主機間複製資料庫和集合MongoDB資料庫
- 同步整合不同系統、不同資料庫中資料的問題資料庫
- 達夢資料庫單例項轉實時同步叢集資料庫單例
- Oracle 資料庫例項啟動關閉過程Oracle資料庫