oracle expdp 多线程,Oracle expdp 过滤和并行
寫在前面的話:
我們知道調用數據泵的方式可以有3種,在這里我絕對不會使用命令行而是首推腳本方式
放棄命令行的理由大概有這些:
① 操作系統對CLI字符數的限制
② 令人痛恨的轉義符
③ 無法跨平臺重用
④ 官方文檔到處鼓吹用腳本方式
㈠ 過濾對象/數據篇
⑴ 過濾對象
INCLUDE
EXCLUDE和INCLUDE用法相同,這里就談INCLUDE
語法
INCLUDE = object_type[:name_clause] [, ...]
object_type:常用有TABLE、INDEX、CONSTRAINT、GRANT,更多的我們可以查閱
database_export_objects,schema_export_objects,table_export_objects
name_clause:sql語句
相關的索引、約束等都會很講義氣地被一起導出
例子
題目:導出所有以emp 開頭的表
參數文件寫法如下:
[oracle@bogon ~]$ cat hr.par
SCHEMAS=HR
DUMPFILE=hr.dmp
DIRECTORY=dmpdir
LOGFILE=hr.log
INCLUDE=TABLE:"like \'EMP%\'"
這個文件里,INCLUDE也可以這么寫
INCLUDE=TABLE:"IN (select table_name from user_tables where table_name like \'EMP%\')"
⑵ 過濾數據
QUERY
語法
QUERY = [schema.][table_name:] query_clause
該參數和以下幾個為互斥關系
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES
例子
題目:導出部門號為50,員工號大于128的所有員工資料
參數文件寫法如下:
[oracle@bogon ~]$ cat hr.par
SCHEMAS=HR
DUMPFILE=hr02.dmp
DIRECTORY=dmpdir
LOGFILE=hr02.log
INCLUDE=TABLE:"IN (\'EMPLOYEES\',\'DEPARTMENTS\')"
QUERY=EMPLOYEES:"where employee_id>=128",DEPARTMENTS:"where department_id=20"
㈡ 并行導出篇
并行設置的結果無非3種:變得更好、沒有變化、變得更差
效率是否得到提高,并不取決于你設置了多碉堡的參數,參數和參數值是否合適方為根本
并行需要成本,因為并行之前需對服務器資源綜合權衡,計算并行,分配任務
并行設置是門藝術,因為PARALLEL經常是要跟FILESIZE,DUMPFILE一起考慮
下面是官方文檔給的一個并行優化實例:
expdp hr/hr FULL=y DUMPFILE=dpump_dir1:full1%U.dmp, dpump_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3 LOGFILE=dpump_dir1:expfull.log JOB_NAME=expfull
另外,并行度的設置不應該超過CPU數量的2倍
sys@ORCL> show parameter cpu
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cpu_count integer 1
By DBA_WaterBin
2013-09-05
GOOD Luck
總結
以上是生活随笔為你收集整理的oracle expdp 多线程,Oracle expdp 过滤和并行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php wordpress 开源,PHP
- 下一篇: oracle怎么将一列挪到另一列,详细讲