expdp 和impdp的筆記[轉帖]

guyuanli發表於2009-05-15

Oracle Database 10g引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫後設資料(物件定義)和資料快速移動到另一個oracle資料庫中.

資料泵匯出匯入(EXPDP和IMPDP)的作用1,實現邏輯備份和邏輯恢復.
2,在資料庫使用者之間移動物件.
3,在資料庫之間移動物件
4,實現表空間搬移.

[@more@]
資料泵匯出匯入與傳統匯出匯入的區別

在10g之前,傳統的匯出和匯入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了資料泵匯出匯入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;
EXP和IMP是客戶段工具程式,它們既可以在可以客戶端使用,也可以在服務端使用.
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用
IMP只適用於EXP匯出檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適用於EXP匯出檔案.
資料泵匯出包括匯出表,匯出方案,匯出表空間,匯出資料庫4種方式.
expdp 選項
1):ATTACH 不能與其他選項一起使用
2):CONTENT 要匯出的內容 預設值ALL
DATA_ONLY
METADATA_ONLY

3):DIRECTORY 指定轉儲檔案和日誌檔案的所在地
DIRECTORY=directory_object資料庫目錄物件)
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp
4):DUMPFILE指定轉儲檔案的名稱,預設為expdata.dmp

5):ESTIMAT 選項用於估算匯出表所佔的空間
expdp scott/tiger TABLE=emp ESTIMAT=STATISTICS|BLOCKS
6):ESTIMATE_ONLY 改選項只是估算匯出物件所佔的空間,預設值為Y

7):EXCLUDE 執行匯出操作時要排除的物件或相關物件,與INCLUDE選項不能一起使用
expdp scott/tiger DIRECTORY=dump DUMPFILE=A.DMP EXCLUDE=view

8):FILESIZE 匯出檔案的最大尺寸,預設值為0(沒有限制)

9)FLASHBACK_SCN 該選項匯出特定時刻的表資料
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=385823

10):FLASHBACK_TIME 該選項用於匯出特定時間點的表資料
FLASHBACK_TIME="TO_TIMESTAMP(time-value)"

expdp scott/tiger DIRECTIONARY=dump DUMPFILE=a.dmp FLASHBACK_TIME("TO_TIMESTMP('25-08-200814:35:00','DD-MM

-YYYY HH24:MI:SS');

11):FULL 匯出整個資料庫

12)HELP

13)INCLUDE 該選項指定匯出的物件型別
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=table

14):JOB_NAME 該選項用於指定匯出作業的名稱
expdp scott/tiger DIRECTORYL=dump DUMPFILE=a.dmp JOB_NAME=maxu

15)LOGFILE 該選項匯出日誌檔案的名稱
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16)NETWORK_LINK 該選項指定資料庫鏈名,將遠端資料庫匯出到本地的轉儲檔案中
NETWORK_LINK=source_database_link 注:物件表不支援遠端匯出

17):NOLOGFILE 該選項指定禁止生成匯出日誌檔案

18):PARALLEL 該選項指定匯出操作的並行程式個數,預設值為1
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp PARALLEL=3;

19):PARFILE 指定匯出引數檔案的名稱
TABLES=dept,emp
DIRECTORY=dump
DUMPFILE=tab.dmp
20):QUERY 該選項過濾出資料的WHERE條件
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp TABLES=emp query=' "WHERER= deptno=20" '

21):SCHEMAS
expdp system/oracle DIRECTORY=dump DUMPFILE=a.dmp SCHEMAS=scott,system

22):STATUS 匯出作業的狀態

23):TABLES 表模式
expdp system/oracle directory=dump dumpfile=a.dmp tables=scott.dep,scott.emp

24):TABLESPACES 匯出表空間列表
expdp system/oracle DIRECTORY=dump DUMPFILE=a.dmp tablespace=user01

25):TRANSPORT_FULL_CHECK
該選項指定被搬移表空間和搬移表空間的依賴

26):TRANSPORT_TABLESPACE 表空間的匯出模式

27):VERSION 保持向下相容
expdp scott/tiger DIRECTORY=dump DUMPFILE=c.dmp VERSION=LASTEST 根據初始引數COMPATIBLE的設定

呼叫EXPDP SQL>conn system/oracle SQL>create DIRECTORY dump_dir AS 'd:dump'; SQL>GRANT read,write on DIRCTORY dump_dir to scott;

匯出表
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp

匯出schemas
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system.scott;

匯出表空間
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02

匯出資料庫
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

IMPDP

REMAP_DATAFILE 該選項將源資料檔案的名稱轉變為目標資料檔名,當在不用平臺之間搬移表空間時可能需要使用該選項
REMAP_SCHEMA
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp REMAP_SCHEMA=scott:system

REMAP_TABLESPACE 將源表空間的所有物件匯入目標表空間
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp REMAP_RABLESPACE=user01:user02

REUSE_DATAFILES 是否覆蓋已存在的資料檔案
SCHEMAS 匯入指定模式(schemas
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp SCHEMAS=scott
SKIP_UNUSABLE_INDEXED
是否跳過不可使用的索引

SQLFILE 指定匯入操作需要執行DDL語句寫入到一個指令碼
SQLFILE=[dirctory_object:]file_name
impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql
STREAMS_CONFIGURATION

TABLE_EXISTS_ACTION 當表已存在是執行的操作
skip|append|truncate|replace
TABLES
impdp scott/tiger DIRECTOR=dump DUMPFILE=tab.dmp TABLES= emp

TABLESPACES
impdp scott/tiger directory=dump dumpfile=tab.dmp tablespace=usr01

TRANSPORT_DATAFILES 該選項指定當搬移表空間時要被匯入到目標資料庫的資料檔名稱
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp TRANSPORT_DATAFILE='/user01/data/tbs.dbf'
TRANSPORT_FULL_CHECK
表空間依賴檢查

TRANSPORT_TABLESPACE 表空間模式匯入

VERSION

呼叫IMPDP
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp

impdp system/oracle DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp

REMAP_SCHEMA=scott:system
schemas(模式)
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system

表空間
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACE=user01

資料庫
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y;

搬移表空間
nls_database_parameters
條件約束
字符集一樣和國家字符集一樣
兩個資料庫不能同名
不能搬移systemsys使用者物件的表空間
如果是其他平臺,將初始引數compatible設定10.0

自包含表空間是指具有有關聯關係的表空間集合,假設表空間A包含了表EMP,而表空間B包含了表空間EMP的索引IND_EMP,

如果要搬移表空間B,則必須同時搬移表空間A,則表空間A和B為自包含表空間集合
違反自包含集合規則
表空間包含sys物件
表空間包含了索引所在的表空間,但沒有包含索引基表所在的表空間
表空間集合沒有高喊分割槽表的所有分割槽
表空間包含了表所在的表空間,但沒有包含LOB列所在的表空間

source database demo
dest database orcl

使用DBMS_TTS包檢查表空間是否為自包含的
SQL>conn system/oracle SQL>execute sys.dbms_tts.transport_set_check('user02',true) sql>select * from sys.transport_set_violations;

sql>alter tablespace users read only

SQL>host expdp system/oracle DIRECTORY=dump_dir DUMPFILE=transport.dmp TRANSPORT_TABLESPACE=users

transport.dmp檔案複製目標伺服器上

在目標資料庫上比照兩個資料庫的塊大小,如不一樣
dest
SQL>alter system set db_cache_size=20m; SQL>alter system set db_4k_cache_size=4M;

impdp system/oracle DIRECTORY=dump_dir DUMPFILE=transport.dmp

TRANSPORT_DATAFILES=d:oracleoradataorclusers.dbf REMAP_SCHEMA=scott:hr

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

相關文章