Oracle 數據泵導入導出(expdp/impdp)【不定時更新】


 

--參考http://www.lanstonwu.com/using-datapump-export-and-import-data/

--參考http://www.cnblogs.com/wbzhao/archive/2012/04/06/2434702.html

一、前期准備

1.以SSH遠程登錄服務器,找到指定目錄下創建數據泵中間文件(.DMP)存放的目錄:

/*rmdir /home/oracle/pump_dir  --刪除空目錄*/

2.以管理員sys創建邏輯目錄

create or replace directory pump_dir as '/home/oracle/pump_dir';

3.給user用戶賦予在指定目錄的操作權限,最好以sys等管理員授權

grant read,write on directory pump_dir to user;

4.查看管理理員目錄

select * from dba_directories;

/*drop directory pump_dir;--刪除目錄*/

二、導出數據

--------------------- !!! 大寫的分割線 !!! ---------------------

使用 '/as sysdba' 模式的前提是設置操作系統環境變量ORACLE_SID

export ORACLE_SID=instance_name

--------------------------------------------------------------

1.全庫導出(full)

a.expdp parfile=expdp_full_20170525.txt

  --expdp_full_20170525.txt

b.expdp sysdba/pwd directory=DUMP_DIR dumpfile=expdp_full_20170525.dmp logfile=expdp_full_20170525.log full=y content=METADATA_ONLY

2.用戶模式導出(schemas)

3.表模式導出(tables)

4.限定條件導出(query)

三、導入數據

/*導入數據時要確認導入的用戶是否存在,是否有權限訪問表空間、是否具有讀寫directory的權限*/

1.指定用戶導入,只導入結構(content=METADATA_ONLY);若目標庫user1,user2已存在,則源庫和目標庫user1,user2的表空間要一致,不然會報錯;

impdp parfile=impdp_20170525.txt

--參數文件impdp_20170525.txt

2.將用戶1的數據導入用戶2 (以此類推,還可以重定義表[remap_table]、表空間[remap_tablespace]導入)

impdp parfile=impdp_20170525.txt

--參數文件impdp_20170525.txt

--/*對於后面的user2,目標庫中可以有也可以沒有,如果沒有系統會自動建立這個用戶*/這個暫時還沒有試驗過,有空可以試試

3.將用戶數據導入用戶默認表空間

四、導入遠程數據庫數據

/*由於物理空間不足或數據量太大傳輸不便,可以在目標端使用db_link連接,導入遠程數據庫數據*/

1.源端用戶賦權限;

grant datapump_exp_full_database to USER1;

2.目標庫用戶賦權限;

grant datapump_imp_full_database to USER2;

3.目標庫創建連接遠程目標數據庫DBLINK

CREATE PUBLIC DATABASE LINK TO_TEST

CONNECT TO USER1 IDENTIFIED BY password

USING '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.x.x.x)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_name)
    )
  )';

4.導入數據

impdp USER1/password NETWORK_LINK=TO_TEST REMAP_SCHEMA=USER1:USER2 TABLE_EXISTS_ACTION=TRUNCATE TABLES=USER1.TABLE_NAMEL  DIRECTORY=IMPDP_DIR LOGFILE=USER1.TABLE_NAME.log   CONTENT=DATA_ONLY  PARALLEL=4

五、參數介紹

1.USERID:命令行的第一個參數

2.DIRECTORY:轉儲文件和日志文件存放的目錄

3.DUMPFILE:目標轉儲文件

4.LOGFILE:日志文件

5.FULL:指定全庫導出

   FULL={Y | N}

6.CONTENT:指定要導出的數據,默認為ALL

   CONTENT={ALL|DATA_ONLY|METADATA_ONLY}

   ALL:導出對象定義及所有數據

   DATA_ONLY:只導出對象數據

   METADATA_ONLY:只導出對象定義

7.SCHEMAS:指定執行方案模式導出,默認為當前用戶模式

8.TABLES:指定表模式導出

9.TABLESPACES:按表空間模式導出

10.PARALLEL:並行,指定執行導出操作的並行進程個數,默認值為1

11.INCLUDE:指定導出時要包含的對象類型及相關對象

     INCLUDE = object_type[:name_clause] [,… ]

     eg:INCLUDE=TABLE:"IN(SELECT TABLE_NAME FROM CSB_BFB)"

12.EXCLUDE:指定導出執行時要排除的對象類型及相關對象

13.NETWORK_LINK:指定數據庫鏈名,如果要將遠程數據庫對象導出到本地例程的轉儲文件中,必須設置該選項

14.TABLE_EXISTS_ACTION={skip|append|truncate|replace}

     skip:如果已存在表,則跳過並處理下一個對象;

     append:為表增加數據;truncate是截斷表,然后為其增加新數據;

     replace:刪除已存在表,重新建表並追加數據;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM