zzw原創:轉載請注明出處
在oracle的expdp 及imdpd命令中,exclude及include參數還是有一些要注意的地方,特別是涉及選擇性條件時。
一、通用
1、exclude及include參數不能同時使用,這兩個是相互排斥的。
2、在parfile參數文件中,可以同時用多個exclude參數,但只能用一個include參數
3、include、exclude參數是默認就是針對對象名稱操作的:如表名、視圖名、過程名、包名等,所以設計條件時,可以從查詢語句select distinct(object_type) from all_objects中先取得這些名稱。
4、include、exclude參數中,在escape語句中,不能用\作為轉義符
(1)、include=table:”like ‘SEC_%'”
結果:SECAAAROLE、SEC_ROLE、SEC_OPERATION三個表,說明,_依舊表示一個占位符的作用
(2)、include=table:”like ‘SEC\_%'”
不能導出SECAAAROLE、SEC_ROLE、SEC_OPERATION三個表,說明在”中,\並不表示轉義符
(3)、include=table:”like ‘SEC\_%’escape’\'” 這樣會報錯:
ORA-39001: invalid argument value
ORA-39071: Value for INCLUDE is badly formed.
ORA-01425: escape character must be character string of length 1
(4)、改成這樣 include=table:”like ‘SEC#_%’escape’#'”
可以正確導出SEC_ROLE、SEC_OPERATION二個表,但不能導出SECAAAROLE這個表。結論:在include、exclude參數中,在escape語句中,不能用\作為轉義符!!,可以選用選用其他特殊字符作為轉義符。如果確實要用\,也要可以用ascii碼代替:include=table:”like ‘SEC\_%’escape chr(92)”
二、exclude參數用法
a、exclude參數在parfile文件中可以有多個,還有多種寫法。
[oracle@test189 temp2]$ vi zzw-expscript_impclude.par
DIRECTORY=ZZW_EXPDPDIR
DUMPFILE=bdctemp1.dmp
exclude=table:”like ‘BDC%'” , table:”like ‘USPC%'”,table:”like ‘AUDIT%'”
exclude=table:”like ‘SMS#_%’escape’#'”
exclude=table:”in (select table_name from user_tables where regexp_like(table_name,’^MENU.*’)
or regexp_like(table_name,’^SEC_.*_.*$’))”
LOGFILE=bdctemp1.log
b、支持換行,比如,上面的語句,在parfile文件中如下換行也是可以的
[oracle@test189 temp2]$ vi zzw-expscript_impclude.par
DIRECTORY=ZZW_EXPDPDIR
DUMPFILE=bdctemp1.dmp
EXCLUDE=STATISTICS
exclude=view,table:”like ‘BDC%'” ,
table:”like ‘USPC%'”,
table:”like ‘AUDIT%'”
exclude=table:”like ‘SMS#_%’escape’#'”
exclude=table:”in (select table_name from user_tables where regexp_like(table_name,’^MENU.*’)
or regexp_like(table_name,’^SEC_.*_.*$’))”
LOGFILE=bdctemp1.log
ps:采用這種exclude=table:”in (select table_name from user_tables)”方法導出時,我環境中會出現 ORA-07445: exception encountered: core dump [kokemisz()+34] [SIGSEGV] [ADDR:0x18] [PC:0x143F5B6] [Address not mapped to object] [] 這樣的錯誤,在parfile文件中加入 EXCLUDE=STATISTICS條件問題就解決了。
三、include參數用法
a、不允許的寫法
include=table:”=’BOSS'” or table:”=’SEC_ROLE'”
include=table:”=’BOSS'” , table:”=’SEC_ROLE'”
b、允許的寫法
include=table:”=’BOSS'”
include=table:”in(‘BOSS’,’SEC_ROLE’)”
include=table:”in(select table_name from user_tables where table_name in(‘BOSS’,’SEC_ROLE’))”
include=table:”in(select table_name from user_tables where regexp_like(table_name,’^BDC_.{4}_.*$’))” #注意,_在like中表示占位符,在regexp_like不表示占位符。
include=table:”in(select table_name from user_tables where regexp_like(table_name,’^BDC_.{8}_.*$’) or regexp_like(table_name,’^ATTACHMENT_.{4}’) or table_name like ‘QRTZ#_%’escape’#’)”
導出某些無規律的表,有很多,也許需要動態維護
建立表exp_table
create table exp_table (table_name varchar2(100);
然后將需要導出的表名插入exp_table中。
insert into exp_table values(‘A’);
insert into exp_table values(‘B’);
insert into exp_table values(‘PUB_GOODS’);
insert into exp_table values(‘PUB_GOODS_UNIT’);
最后導出的的時候:
parfile
userid=user/passwd
directory=expdir
dumpfile=testfile.dmp
include=table:” in (select table_name from exp_table ) “
這樣就可以導出exp_table中所包含的所有表了。更神奇的是,可以在exp_table里面將自己也插入進去,然后把exp_table也導出哦
d、這樣的寫法是錯誤的,因為包含兩個include語句
DIRECTORY=ZZW_EXPDPDIR
DUMPFILE=bdctemp1.dmp
include=table:”=’BOSS'”
include=table:”=’SIMS'”
by zzw 2017.3.28
by zzw 2017.4.13修改 於aspire
今天的文章oracle imp 覆盖_oracle schema查询分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86746.html