資料泵 impdp 操作

shytodear發表於2015-05-14

注:資料泵是基於伺服器的,如果沒有生產環境主機的許可權,我們可以用資料泵的impdp的network_link引數。

幫助手冊:$impdp help=y

例:倒換生產datadb庫的資料 到 測試data630中

1、需要開通data630主機(192.168.202.168)到datadb主機(192.168.218.1或192.168.218.3)   的網路。檢查網路是否開通:
            data630庫主機執行:tnsping datadb1 或 tnsping datadb2  -返回ok則為已開通。
          或登入data630庫執行:select * from dual@dbl_to_datadb;  -有結果則為已開通。
    
2、登入data630庫,建立訪問datadb的dblink:
   select * from dba_db_links;   ---檢視庫中已存在的dblink
   
   ---system使用者登入data630使用者建立dblink
   create database link DBL_TO_dataDB connect to bakuser identified by "123456"
   using '(DESCRIPTION =
       (ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.218.1)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.218.3)(PORT = 1521)))
       (CONNECT_DATA =
          (SERVICE_NAME =datadb)(FAILOVER_MODE =(TYPE = SELECT)(METHOD =  
       BASIC)))   
      )';

    ---drop database link DBL_TO_dataDB;


3、建立DIRECTORY
   
   select * from dba_directories;  ---檢視庫中已存在的directory
   
   ---system使用者登入data630建立directory
   create directory trans_work as '/databak/liuqi/';
   GRANT READ, WRITE ON DIRECTORY dmpdir TO user;

   ---drop directory trans_work;

   注:directory對應著資料庫主機上的系統路徑。


4、以oracle使用者登入192.168.202.168主機,到目錄/databak/liuqi/下操作。
   
   ======== 常用倒換舉例 =======

   ---倒換使用者
   $vi impdp_user.par
    userid=system/manager@data630
    directory=trans_work
    logfile=impdp_user.log
    schemas=usera
    skip_unusable_indexes=y
    table_exists_action=replace
    network_link=dbl_to_datadb
    parallel=6   ---併發謹慎使用,容易報錯!
  
   $nohup impdp parfile=impdp_user.par &

   ---倒換表(表的全部內容)
   $vi impdp_table.par
    userid=system/manager@data630
    directory=trans_work
    logfile=impdp_table.log
    tables=ucr_data1.tablea,
    ucr_data1.tableb
    skip_unusable_indexes=y
table_exists_action=replace
#content=metadata_only  ---只倒換表的結構
network_link=dbl_to_datadb

   $nohup impdp parfile=impdp_table.par &


   ---倒換表(只倒表的資料)
   $vi impdp_table.par
    userid=system/manager@data630
    directory=trans_work
    logfile=impdp_table.log
    tables=ucr_data1.tablea,
    ucr_data1.tableb
    #skip_unusable_indexes=y
    #table_exists_action=replace
    content=data_only
network_link=dbl_to_datadb 

   $nohup impdp parfile=impdp_table.par &


   注:常用的資料泵引數還有很多,如:
#exclude=statistics,index  ---不倒 統計資訊和索引
#include=statistics,index   ---只倒 統計資訊和索引
#exclude=table:"like 'td_s_dbinfo%'"  ---不倒的表
#exclude=table:"in ('td_s_dblogin')"  ---不倒的表
#remap_tablespace=tbs_old:tbs_data_def ---轉換表空間
#query='where rownum < 3000'   ---根據查詢條件倒資料
nologfile=y
reuse_dumpfiles=y


5、如需做統計資訊收集,sql如下參考:

---對使用者做統計資訊收集
exec dbms_stats.gather_schema_stats('usera',estimate_percent=>10,cascade=>true,no_invalidate =>false,degree=>8);

---對錶做統計資訊收集
exec dbms_stats.gather_table_stats(ownname => 'usera',tabname => 'tablea', estimate_percent => 10, method_opt=> 'for all indexed columns',degree=>8);


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27126919/viewspace-1654374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章