oracle expdp exclude 导出导入整个库
来源:网络收集 点击: 时间:2024-08-111、创建导入导出对象专用用户(用哪个用户来导出导入sa用户的数据)
create user zxx identified by zxx default tablespaceREMOTE320DB;
grant connect,dba to zxx;
创建用户zxx并对zxx用户赋予连接和dba权限。这样zxx用户就有权限导出sa用户数据了。
注意:zxx用户使用的非表空间、默认临时表空间、默认profile文件,也就是说zxx用户的默认表空间为REMOTE320DB、默认临时表空间为TEMP、默认profile文件为DEFAULT。
那么导入用户zxx也必须使用这样的配置。
2/62、创建dump文件存放目录
SQL create directory dump_dir as /backup/zxx_dump;
SQL grant read,write on directory dump_dir to zxx;
第一句是创建dump目录为虚拟dump_dir,这个目录其实指向/backup/zxx_dump路径
第二句是赋予zxx用户对这个虚拟目录的读写权限

3、排除哪些大表不导,哪些大表导出的数据量
select * from ( select sum(bytes)/1024/1024/1024 sizem,segment_name from dba_segments where owner=SA and segment_type like TABLE% group by segment_name ) a where a.sizem 1
找出sa用户对象大小大于1G的表,经过和开发人员确认:
不需要的表有:
TXSBZT SPSBZT YJXX T_CLXX
单独导出部分数据的表:
CLWFXX CLXSGJ TPXZXX GJXX
最终确认expdp时需要过滤的表有:
TPXZXX TXSBZT CLWFXX SPSBZT YJXX CLXSGJ GJXX T_CLXX

4、开始导出sa用户数据
注意转义字符:
expdp zxx/zxx DIRECTORY=dump_dir DUMPFILE=sa.dmp LOGFILE=sa.log SCHEMAS=sa EXCLUDE=TABLE:\IN \(\TPXZXX\,\TXSBZT\,\CLWFXX\,\SPSBZT\, \YJXX\,\CLXSGJ\,\GJXX\,\T_CLXX\\)\ ;
exclude表示过滤哪些对象,TABLE:表示过滤哪些表


5、开始导出表之分区表
需要导出至少一个月的,采用parfile方便
$ cat exp_clxsgj.txt
userid=sa/wiscom
directory=dump_dir
dumpfile=clxsgj.dmp
LOGFILE=clxsgj.log
TABLES=CLXSGJ:CLXSGJ20150401,CLXSGJ:CLXSGJ20150402,CLXSGJ:CLXSGJ20150403,CLXSGJ:CLXSGJ20150404,CLXSGJ:CLXSGJ20150405,CLXSGJ:CLXSGJ20150406,CLXSGJ:CLXSGJ20150407,CLXSGJ:CLXSGJ20150408,CLXSGJ:CLXSGJ20150409,CLXSGJ:CLXSGJ20150410,CLXSGJ:CLXSGJ20150411,CLXSGJ:CLXSGJ20150412,CLXSGJ:CLXSGJ20150413,CLXSGJ:CLXSGJ20150414,CLXSGJ:CLXSGJ20150415,CLXSGJ:CLXSGJ20150416,CLXSGJ:CLXSGJ20150417,CLXSGJ:CLXSGJ20150418,CLXSGJ:CLXSGJ20150419,CLXSGJ:CLXSGJ20150420,CLXSGJ:CLXSGJ20150421,CLXSGJ:CLXSGJ20150422,CLXSGJ:CLXSGJ20150423,CLXSGJ:CLXSGJ20150424,CLXSGJ:CLXSGJ20150425,CLXSGJ:CLXSGJ20150426,CLXSGJ:CLXSGJ20150427,CLXSGJ:CLXSGJ20150428,CLXSGJ:CLXSGJ20150429,CLXSGJ:CLXSGJ20150430,CLXSGJ:CLXSGJ20150501,CLXSGJ:CLXSGJ20150502,CLXSGJ:CLXSGJ20150503,CLXSGJ:CLXSGJ20150504,CLXSGJ:CLXSGJ20150505,CLXSGJ:CLXSGJ20150506
$ expdp parfile=exp_clxsgj.txt
注意:tables不能用括号括起来

6、开始导出表之非分区表
expdp sa/wiscom directory=dump_dir dumpfile=clwfxx.dmp LOGFILE=clwfxx.log tables=clwfxx query=clwfxx:\ where jgsj between to_date\(\2014-04-01\,\yyyy-mm-dd\\) and to_date\(\2015-05-6\,\yyyy-mm-dd\\)\;
expdp sa/wiscom directory=dump_dir dumpfile=TPXZXX.dmp LOGFILE=TPXZXX.log tables=TPXZXX query=TPXZXX:\ where XZSJ between to_date\(\2014-04-01\,\yyyy-mm-dd\\) and to_date\(\2015-05-6\,\yyyy-mm-dd\\)\;
expdp sa/wiscom directory=dump_dir dumpfile=GJXX.dmp LOGFILE=GJXX.log tables=GJXX query=GJXX:\ where JGSJ between to_date\(\2014-04-01\,\yyyy-mm-dd\\) and to_date\(\2015-05-6\,\yyyy-mm-dd\\)\;
注意:
刚开始使用:
expdp zxx/zxx directory=dump_dir dumpfile=sa_clwfxx.dmp LOGFILE=sa_clwfxx.log TABLES=SA.CLWFXX QUERY=SA.CLWFXX:\WHERE jgsj \= TO_DATE\(\2015-04-20 00:00:00,\yyyy-mm-dd hh24:mi:ss\\) AND jgsj \ TO_DATE\(\2015-05-11 00:00:00\,\yyyy-mm-dd hh24:mi:ss\\)\ exclude=statistics parallel=2;
想导出SA.CLWFXX 表,但始终报错:
ORA-01861: literal does not match format string(字符串格式不匹配)
那么将query中的单引号换成双引号之后:
expdp zxx/zxx directory=dump_dir dumpfile=sa_clwfxx.dmp LOGFILE=sa_clwfxx.log TABLES=SA.CLWFXX QUERY=SA.CLWFXX:\WHERE jgsj \= TO_DATE\(\2015-04-20 00:00:00,\yyyy-mm-dd hh24:mi:ss\\) AND jgsj \ TO_DATE\(\2015-05-11 00:00:00\,\yyyy-mm-dd hh24:mi:ss\\)\ exclude=statistics parallel=2;
还是报错:ORA-01861: literal does not match format string
最后观察发现,在命令行中执行:
select sysdate from dual; 发现只有年月日
最后定位出来,query中有时间的话,最好不要加上时分秒。


1、创建表空间
由于sa用户的默认表空间和sa用户的所有对象都在REMOTE320DB表空间上,所以对于impdp 用户模式必须要创建:导出专有用户zxx的默认表空间、sa用户的默认表空间和sa用户的所有对象都在REMOTE320DB表空间
create tablespace remote320db datafile /u01/app/oracle/oradata/orclone/data01.dbf size 30G;
alter tablespace remote320db add datafile /u01/app/oracle/oradata/orclone/data02.dbf size 30G;
2/62、创建导入对象专用用户(用哪个用户来导出导入sa用户的数据,与导出用户一致)
1、创建导入导出对象专用用户(用哪个用户来导出导入sa用户的数据)
create user zxx identified by zxx default tablespaceREMOTE320DB;
grant connect,dba to zxx;
和前面的导出用户对象一致,zxx用户的默认表空间为REMOTE320DB、默认临时表空间为TEMP、默认profile文件为DEFAULT。
3/63、创建dump文件存放目录
SQL create directory dump_dir as /zxx_software/dump;
SQL grant read,write on directory dump_dir to zxx;
创建完之后,将之前导出的4个*.dmp 文件拷贝到/zxx_software/dump目录,并对改用修改成oracle软件安装用户。
虽然导出的时候oracle软件安装用户是dbadmin,但是对于dump文件没有影响,测试数据的oracle软件安装用户是oracle,所以拷贝完所有文件之后,需要修改用户权限:
chown -Roracle:oinstall/zxx_software/dump
4/64、创建profile文件
create profile MONITORING_PROFILE limitfailed_login_attempts unlimited;
创建profile的语句最好从导出库中拷贝来创建
注意:如果没有创建sa用户的默认profile就会impdp失败。



5、开始导入用户sa的dump文件
impdp zxx/zxx directory=dump_dir dumpfile=sa.dmp schemas=sa logfile=sa.log;
导入的时候忽略 角色创建失败。因为角色创建失败对数据对象的导入没有影响!从下图中就可以看出!
注意:用户模式导入,导入库一定不能存在sa用户



6、逐个导入各个大表的dump文件
impdp sa/wiscom directory=dump_dir dumpfile=clxsgj.dmp LOGFILE=clxsgj.log tables=clxsgj
表导出用什么用户,导入就用什么用户

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1109172.html