天天看點

資料泵導入導出資料

一、資料泵介紹

1、資料泵優點:

   ①改進性能(較傳統的exp/imp速度提高1-2個數量級)  

   ②重新開機作業能力

   ③并行執行能力

   ④關聯運作作業能力

   ⑤估算空間需求能力

   ⑥操作網絡方式

2、資料泵組成部分:

   ①資料泵核心部分程式包:DBMS_DATAPUMP

   ②提供中繼資料的程式包:DBMS_MATADATA

   ③指令行客戶機(實用程式):EXPDP,IMPDP

3、資料泵檔案:

   ①轉儲檔案:此檔案包含對象資料

   ②日志檔案:記錄操作資訊和結果

   ③SQL檔案:将導入作業中的DDL語句寫入SQLFILE指定的參數檔案中

4、資料泵的目錄及檔案位置

   以sys或system使用者完成資料泵的導入導出時,可以使用預設的目錄 DATA_PUMP_DIR通過dba_directories表可以檢視;DATA_PUMP_DIR預設目錄位置是:$ORACLE_HOME/admin/database_name/dpdump

二、資料泵導入導出

  資料泵的對象可以是表、表空間和使用者

1、資料泵導出

  1)按表導出

    ①全表導出

    ②按查詢條件導出表

  2)按表空間導出

  3)按使用者導出  

  4)導出全庫

2、資料泵導入

  1)導入表

    ①導入表,不改變schema

    ②導入表,改變schema

  2)導入表空間

  3)導入到具體使用者

    ①導入使用者,不改變schema

    ②導入使用者,改變schema

  4)導入全庫

三、資料泵測試

源端

 環境:

    Oracle 11.2.0.1 

      源資料庫:  vbox88

      目标資料庫:vbox99

  檢視資料泵目錄:

   1)select * from dba_directories;

      DATA_PUMP_DIR是預設的,也可以自己建立一個新的目錄

資料泵導入導出資料

   2)建立一個目錄

     create directory data_pump as '/u01/data_pump';

    其中/u01/data_pump這個目錄要在linux系統中存在,沒有的話先建立這個目錄。

    (删除目錄為:drop directory DATA_PUMP;)

資料泵導入導出資料

   3)将目錄DATA_PUMP的讀寫權限賦予scott使用者

      grant read,write on directory DATA_PUMP to scott;

1、按表導出

   導出表時應檢視下表的大小

資料泵導入導出資料

  1)全表導出

   expdp scott/tiger directory=DATA_PUMP dumpfile=emp1.dmp tables=emp1,dept1;

資料泵導入導出資料

  2)按查詢條件導出表

     将emp1表deptno為10的資料導出

      expdp scott/tiger directory=DATA_PUMP dumpfile=condition.dmp logfile=condition.log tables=emp1 query=\' WHERE deptno\=\10\'

資料泵導入導出資料

2、按表空間導出

   導出前檢視下表空間對應資料檔案的大小

資料泵導入導出資料

  1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=soe_tbs.dmp tablespaces=soe;

資料泵導入導出資料
資料泵導入導出資料

3、按使用者導出 

   在導出使用者時應檢視使用者所在的表空間以及表空間的大小

資料泵導入導出資料

   1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=scott.dmp schemas=scott;

資料泵導入導出資料
資料泵導入導出資料

4、全庫導出

  導整個資料庫

    expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;

目标端

  1)将源端的資料拷貝到目标端的目錄下

     ①select * from dba_directories;

資料泵導入導出資料

     ② scp 192.168.3.88:/u01/data_pump/* /u01/oracle/dir

資料泵導入導出資料

1、按表導入

  ①導入表,不改變schema

     impdp scott/tiger directory=DIR pumpfile=emp1.dmp

資料泵導入導出資料

   ②導入表,改變schema

     impdp \'/ as sysdba \' directory=DIR dumpfile=emp1.dmp remap_schema=scott:wr

資料泵導入導出資料

2、按表空間導入

   在源端檢視有哪些表在使用soe表空間以及其所屬使用者,如果表所在的使用者在目标端沒有則應建立相應使用者,否則在導入的時候會報錯。

資料泵導入導出資料

 1)impdp \' / as sysdba \' directory=DIR dumpfile=soe_tbs.dmp tablespaces=soe

資料泵導入導出資料

3、按使用者導入

  ①導入使用者,不改變schema

    impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp

   ②導入使用者,改變schema

    impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp remap_schema=scott:wr

資料泵導入導出資料
資料泵導入導出資料

四、目标庫遠端連接配接源庫導入

①create directory data_pump as '/u01/data_pump';

②grant read,write on directory DATA_PUMP to zyz;

③配置tnsnames

    ORCL =

       (DESCRIPTION =

           (ADDRESS = (PROTOCOL = TCP)(HOST = xxbora)(PORT = 1521))

           (CONNECT_DATA =

                (SERVER = DEDICATED)

                (SERVICE_NAME = orcl)

            )

        )

④建立dblink

    create public database link orcl18 connect to zyz identified by zyz using 'ORCL18';

    select count(*) from zyz.userinfo@orcl18;

⑤導入資料

    impdp zyz/zyz directory=data_pump network_link=orcl18 schemas=zyz logfile=zyz.log remap_tablespace=JCTABLESPACE:ZYZTABLESPACE exclude=statistics

⑥收集統計資料

    exec dbms_stats.gather_schema_stats(ownname=>'ZYZ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');