压缩比例4:1
-rw-r----- 1 oracle oinstall 2109878272 12月 25 11:52 b.dmp
-rw-r----- 1 oracle oinstall 514363392 12月 25 11:53 a.dmp
---------------------------expdp.sh
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.2.0/db_1; export ORACLE_HOME
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
cat > /tmp/sidlist << EOF
..
..
EOF
cat > /tmp/expdp.par << EOF
FULL=Y
EXCLUDE=SCHEMA:"IN ('WMSYS', 'OUTLN','APEX_030200','OLAPSYS','ORDDATA')"
EOF
for sid in `cat /tmp/sidlist`
do
export ORACLE_SID=$sid
expdp xx/xx directory=expdpdir parfile=/tmp/expdp.par dumpfile=$sid--`date +%Y%m%d`.dmp logfile=$sid--`date +%Y%m%d`.log compression=all
done
find -mtime +10 -name "*.dmp" -exec rm -rf {} \;
------------------
当做EXPDP 逻辑备份时常用到FULL=Y 的全库备份,但是有些schema不想每次都备份如一些自带的schemas(如APEX_030200),这时可以很方便的排除,下面是命令行时的语法(on linux)
[oracle@db231 ~]$ expdp system/oracle directory=DATAPUMP full=y EXCLUDE=SCHEMA:\"IN \'WMSYS\',\'OUTLN\',\'APEX030200\',\'OLAPSYS\',\'ORDDATA\'\'WMSYS\',\'OUTLN\',\'APEX030200\',\'OLAPSYS\',\'ORDDATA\'\" EXCLUDE=TABLE:"\IN (\'NAME\', \'ADDRESS\' \)\" dumpfile=test.dump
或者使用parameter file
...
FULL=Y
EXCLUDE=SCHEMA:"IN ('WMSYS', 'OUTLN','APEX_030200','OLAPSYS','ORDDATA')"
EXCLUDE=TABLE:"IN ('NAME', 'ADDRESS')"
...
Tip:
table 参数里的表名是不可以带OWNER的。
11G impdp的另外一个需求 IMPDP 导入几张表并改名使用tables=.和remap_table
impdp xx/xx direcore=xx dumpfile=xx tables=owner.tname remap_table=tname:tname_new
expdp通常是用法就不过多介绍了,这里主要给大家介绍一下parfile的一下用法,避免不同操作系统下转义字符不同所带来的影响
1、单独导出某些表时
expdp \'/ as sysdba\' parfile=table.par
table.par内容如下
INCLUDE = TABLE:"IN ('EMP','DEPT')"
或者不使用include时,也可以直接使用tables参数
table.par内容如下
tables= EMP, DEPT
2、排除某些表时
expdp \'/ as sysdba\' schemas=usera parfile=exclude.par
exclude.par内容如下
exclude=TABLE:"IN('tablea','tableb','tablec')"
或者不使用parfile时,一些操作系统下可能的语法是这样的
expdp \'/ as sysdba\' schemas=usera EXCLUDE=TABLE:\"IN\(\'tablea\' ,\'tableb\',\'tablec\'\)\"
3、排除某些字符开头的表时
impdp时排除PM_RAW开头表
impdp user/passwd directory=dump parfile=para.par dumpfile=dump.dmp logfile=dump.log
parfile内容如下:
exclude=statistics,TABLE:"LIKE 'PM_RAW%'",TABLE:"LIKE 'PM_HOU%'",TABLE:"LIKE 'PM_DAY%'",TABLE:"LIKE 'PT_%'"
4、parfile配合query参数同时使用时
利用parfile=p.par避免转义字符问题,下面内容都是parfile,expdp不单独写了
单个表
tables=taa query="where tablespace_name='SYSTEM'"
多个表
tables=taa,tee QUERY=taa:"where tablespace_name='SYSTEM'",tee:"where index_type='LOB'"
或者增加括号
tables=(taa,tee) QUERY=(taa:"where tablespace_name='SYSTEM'",tee:"where index_type='LOB'")