共計 6970 個字符,預計需要花費 18 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下數據庫中 impdp 和 expdp 怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1.Data Pump 導出 expdp
例子:
sql create directory dpdata1 as /u02/dpdata1
sql grant read, write on directory dpdata1 to ananda;
$expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES.dmp job_name=CASES_EXPORT
$expdp ananda/abc123 tables=CASES directory=DPDATA1
dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export
include/exclude 例子:
include=table: in(DB , TS)
或者 include=table: like %E%
或者 include=function,package,procedure,table: = EMP
或者 exclude=SEQUENCE,TABLE: IN (EMP , DEPT)
2.Data Pump 導入 impdp
1)從 expdp 中獲取數據源 exp.dmp
2)復制某個數據庫中的一個 schema 到另一個數據庫中。
3) 在同一個數據庫中把一個 schema 中所有的對象復制到另一個 schema 中。
例子:
1)impdp 的數據源是 expdp 導出來的 DMP 文件
impdp ananda/abc123 directory=dpdata1 dumpfile=expCASES.dmp job_name=cases_import
2)復制某個數據庫中的一個 schema 到另一個數據庫中。
–1.newwork_link 為目標數據庫建立的 database_link,
(用戶 test 需要 grant exp_full_database to TEST;)
create public database link TOLINK
connect to TEST identified by oracle
using (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.199)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
–2.impdp 在目標數據庫服務器上執行 只能低版本向高版本 imp
impdp network_link=TOLINK schemas=test remap_schema=test:link2
3) 在同一個數據庫中把一個 schema 中所有的對象復制到另一個 schema 中。
–1. 創建連接自己的 database link:
create public database link system_self connect to system identified by system using orcl
數據庫鏈接已創建。
–2. 復制 hr schema 到 test schema:
impdp system/system network_link=system_self schemas=hr remap_schema=hr:test
一、創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以 system 等管理員創建。
create directory dpdata1 as d:\test\dump
將導出的 dmp 文件放置上述目錄下
二、查看管理理員目錄(同時查看操作系統是否存在,因為 Oracle 并不關心該目錄是否存在,如果不存在,則出錯)
select * from dba_directories;
三、給 scott 用戶賦予在指定目錄的操作權限,最好以 system 等管理員賦予。
grant read,write on directory dpdata1 to scott;
grant imp_full_database to scott;
四、導出數據
1) 按用戶導
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
expdp system/oracle@uscm schemas=uaes_woorich dumpfile=expdp.dmp DIRECTORY=dpdata1;
expdp system/oracle@ucs schemas=sys8d dumpfile=sys8d.dmp directory=ORACLE_OCM_CONFIG_DIR;
2) 并行進程 parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4) 按查詢條件導
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query= WHERE deptno=20
5) 按表空間導
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6) 導整個數據庫
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原數據
impdp user/pwd@dbname directory=dpdata1 dumpfile=a.dmp remap_schema=fromusername:tousername full=y
1) 導到指定用戶下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2) 改變表的 owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)導入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4) 導入數據庫
impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5) 追加數據
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append;
USCM 遷移:
expdp system/oracle directory=dump dumpfile=scm0121.dmp schemas=scm,reviewdatabase,testdatabase logfile=scm0121.log
impdp system/oracle directory=imp dumpfile=SCM0121.DMP logfile=scm0121imp.log exclude=statistics
之后就對 dump 參數進行下說明:
EXPDP 命令行選項
1. ATTACH
該選項用于在客戶會話與已存在導出作用之間建立關聯. 語法如下
ATTACH=[schema_name.]job_name
Schema_name 用于指定方案名,job_name 用于指定導出作業名. 注意, 如果使用 ATTACH 選項, 在命令行除了連接字符串和 ATTACH 選項外, 不能指定任何其他選項, 示例如下:
Expdp scott/tiger ATTACH=scott.export_job
2. CONTENT
該選項用于指定要導出的內容. 默認值為 ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
當設置 CONTENT 為 ALL 時, 將導出對象定義及其所有數據. 為 DATA_ONLY 時, 只導出對象數據, 為 METADATA_ONLY 時, 只導出對象定義
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
CONTENT=METADATA_ONLY
3. DIRECTORY
指定轉儲文件和日志文件所在的目錄
DIRECTORY=directory_object
Directory_object 用于指定目錄對象名稱. 需要注意, 目錄對象是使用 CREATE DIRECTORY 語句建立的對象, 而不是 OS 目錄
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
建立目錄:
CREATE DIRECTORY dump as‘d:dump’;
查詢創建了那些子目錄:
SELECT * FROM dba_directories;
4. DUMPFILE
用于指定轉儲文件的名稱, 默認名稱為 expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object 用于指定目錄對象名,file_name 用于指定轉儲文件名. 需要注意, 如果不指定 directory_object, 導出工具會自動使用 DIRECTORY 選項指定的目錄對象
Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
5. ESTIMATE
指定估算被導出表所占用磁盤空間分方法. 默認值是 BLOCKS
EXTIMATE={BLOCKS | STATISTICS}
設置為 BLOCKS 時,oracle 會按照目標對象所占用的數據塊個數乘以數據塊尺寸估算對象占用的空間, 設置為 STATISTICS 時, 根據最近統計值估算對象占用空間
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS
DIRECTORY=dump DUMPFILE=a.dump
6. EXTIMATE_ONLY
指定是否只估算導出作業所占用的磁盤空間, 默認值為 N
EXTIMATE_ONLY={Y | N}
設置為 Y 時, 導出作用只估算對象所占用的磁盤空間, 而不會執行導出作業, 為 N 時, 不僅估算對象所占用的磁盤空間, 還會執行導出操作.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y
7. EXCLUDE
該選項用于指定執行操作時釋放要排除對象類型或相關對象
EXCLUDE=object_type[:name_clause] [,….]
Object_type 用于指定要排除的對象類型,name_clause 用于指定要排除的具體對象.EXCLUDE 和 INCLUDE 不能同時使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp EXCLUDE=VIEW
EXPDP scott/tiger directory=dump dumpfile=a.dmp table=(t,tt) exclude=table/table_data:\ =\ T\ \
還可以用于分區表
expdp scott/tiger directory=dump dumpfile=a.dmp table=t,tt exclude=table_data:\ in \(\ P1\ ,\ P2\ ,\ P3\ \)\
8. FILESIZE
指定導出文件的最大尺寸, 默認為 0,(表示文件尺寸沒有限制)
9. FLASHBACK_SCN
指定導出特定 SCN 時刻的表數據
FLASHBACK_SCN=scn_value
Scn_value 用于標識 SCN 值.FLASHBACK_SCN 和 FLASHBACK_TIME 不能同時使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp
FLASHBACK_SCN=358523
10. FLASHBACK_TIME
指定導出特定時間點的表數據
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=
“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”
11. FULL
指定數據庫模式導出, 默認為 N
FULL={Y | N}
為 Y 時, 標識執行數據庫導出.
12. HELP
指定是否顯示 EXPDP 命令行選項的幫助信息, 默認為 N
當設置為 Y 時, 會顯示導出選項的幫助信息.
Expdp help=y
13. INCLUDE
指定導出時要包含的對象類型及相關對象
INCLUDE = object_type[:name_clause] [,…]
14. JOB_NAME
指定要導出作用的名稱, 默認為 SYS_XXX
JOB_NAME=jobname_string
15. LOGFILE
指定導出日志文件文件的名稱, 默認名稱為 export.log
LOGFILE=[directory_object:]file_name
Directory_object 用于指定目錄對象名稱,file_name 用于指定導出日志文件名. 如果不指定 directory_object. 導出作用會自動使用 DIRECTORY 的相應選項值.
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16. NETWORK_LINK
指定數據庫鏈名, 如果要將遠程數據庫對象導出到本地例程的轉儲文件中, 必須設置該選項.
17. NOLOGFILE
該選項用于指定禁止生成導出日志文件, 默認值為 N.
18. PARALLEL
指定執行導出操作的并行進程個數, 默認值為 1
19. PARFILE
指定導出參數文件的名稱
PARFILE=[directory_path] file_name
20. QUERY 對于大表效率很低
用于指定過濾導出數據的 where 條件
QUERY=[schema.] [table_name:] query_clause
Schema 用于指定方案名,table_name 用于指定表名,query_clause 用于指定條件限制子句.QUERY 選項不能與 CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES 等選項同時使用.
Expdp scott/tiger directory=dump dumpfile=a.dmp Tables=emp query=’WHERE deptno=20’
expdp scott/tiger directory=dump dumpfile=a.dmp table==(t,tt) query= t: where 1=2 導出 t 的結構,導出 tt 的數據和結構
21. SCHEMAS
該方案用于指定執行方案模式導出, 默認為當前用戶方案.
22. STATUS
指定顯示導出作用進程的詳細狀態, 默認值為 0
23. TABLES
指定表模式導出
TABLES=[schema_name.]table_name[:partition_name][,…]
Schema_name 用于指定方案名,table_name 用于指定導出的表名,partition_name 用于指定要導出的分區名.
24. TABLESPACES
指定要導出表空間列表
25. TRANSPORT_FULL_CHECK
該選項用于指定被搬移表空間和未搬移表空間關聯關系的檢查方式, 默認為 N.
當設置為 Y 時, 導出作用會檢查表空間直接的完整關聯關系, 如果表空間所在表空間或其索引所在的表空間只有一個表空間被搬移, 將顯示錯誤信息. 當設置為 N 時, 導出作用只檢查單端依賴, 如果搬移索引所在表空間, 但未搬移表所在表空間, 將顯示出錯信息, 如果搬移表所在表空間, 未搬移索引所在表空間, 則不會顯示錯誤信息.
26. TRANSPORT_TABLESPACES
指定執行表空間模式導出
27. VERSION
指定被導出對象的數據庫版本, 默認值為 COMPATIBLE.
VERSION={COMPATIBLE | LATEST | version_string}
為 COMPATIBLE 時, 會根據初始化參數 COMPATIBLE 生成對象元數據; 為 LATEST 時, 會根據數據庫的實際版本生成對象元數據.version_string 用于指定數據庫版本字符串. 調用 EXPDP
使用 EXPDP 工具時, 其轉儲文件只能被存放在 DIRECTORY 對象對應的 OS 目錄中, 而不能直接指定轉儲文件所在的 OS 目錄. 因此,
使用 EXPDP 工具時, 必須首先建立 DIRECTORY 對象. 并且需要為數據庫用戶授予使用 DIRECTORY 對象權限.
看完了這篇文章,相信你對“數據庫中 impdp 和 expdp 怎么用”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!