exp数据导出mysql_Oracle使用exp/imp导入导出数据

导出程序从Oracle数据库中抽取数据,之后再将这些数据存在二进制格式的操作系统中,再用导入程序导入到其他数据库中。使用导出(导入)的用户必须具有create

session权限,导出(导入)其他用户还必须拥有EXP_FULL_DATABASE/IMP_FULL_DATABASE角色权限。共有4种不同方式:表方式,用户方式,表空间方式以及全库方式(不包括SYS用户中的对象,也就是数据字典无法导入导出)。如果使用的数据库是手动通过create

database语法创建的,那么在执行IMP/EXP之前必须首先执行cataxp.sql或catalog.sql(后者中包含调用catexp.sql)。建议不要使用DBA角色的用户导入导出。尽量使用低版本的EXP执行导出,尽可能用目标端数据库的IMP版执行导入。

导出:exp 导出的文件可作为逻辑备份

exp scott/tiger@ORCL file=f:/export/scott.dmp

log=E:/export/scott.log

exp system/111111@ORCL file=f:/export/scott.dmp

log=E:/export/scott.log owner=SCOTT

在做逻辑备份时文件名最好使用绝对路径。否则会被保存在当前目录,加大了控制和管理难度

也可使用参数文件,当参数文件与命令行参数共存时哪个在后,则哪个参数生效。

tables=(emp):若是非当前SCHEMA的表,务必以SCHEMA.TABLE的格式指定。

query="'where id>1 and

name<>''a'''":当TABLES参数中指定多个表时,必须保证该参数中指定的所有表均满足QUERY中的查询。上述命令若放在linux/UNIX平台下执行,需要更换通配符(将"换为\),为了提高命令的兼容性,最好的处理方式是创建参数文件,这样就可以不用考虑通配符的问题了。

owner=(SCOTT,JSS):当导出用户是system时,可以导出几个SCHEMA中的对象,用逗号分隔。

full=y:必须拥有DBA角色或者EXP_FULL_DATABASE角色的用户才能执行全库导出。

grants=n:指定是否导出对象的授权信息,默认为Y。

indexes=n:指定数否导出表的索引,默认为Y。

constraints=n:指定是否导出表的约束,默认为Y。

triggers=n:指定是否导出与表相关的触发器,默认为Y。

filesize=500M

file=scott_1.dmp,scott_2.dmp:指定生成的Dump文件大小,可以通过filesize参数与file参数组合使用来实现。估算导出文件的大小:

查询当前用户所属对象占用空间:select sum(bytes)/1024/1024 M from

user_segements

查询多个用户所属对象占用空间:select sum(bytes)/1024/1024 M from

dba_segements where owner in ('SCOTT','USER1','USER2')

exp优化:

Buffer参数:

a4c26d1e5885305701be709a3d33442f.png

直接路径导出:

a4c26d1e5885305701be709a3d33442f.png

交互模式、导出表中包含LOB类型、表空间模式以及带有QUERY参数的命令不支持直接路径导出

导出外部表时只能导出外部表的数据结构,导入后需要将其对应的数据文件复制到目标路径。

导入:imp

导入顺序:类型的定义->表的定义->表中的数据->表上的索引->完整性约束、视图、存储过程和触发器->位图索引和函数索引

imp botest/111111@BOTEST file=f:\export\scott.dmp

将orcl.dmp 中的数据导入botest数据库中。

rows=n:只导结构,不导数据。EXP也支持rows参数

解决导入指定表空间问题

Import在导入数据时会首先创建表结构,这个表结构来自于Export导出的数据库,其中包含存储属性,并且肯定是在源端数据库的存储属性,那么Import在目标端创建表时,存储属性仍然继承源端属性,于是数据在源端存储于哪个表空间,目标端时默认仍然会寻找并存储到那个表空间中。解决方法师首先显示地授予用户指定表空间的存储权限,希望用户操作那个表空间,就授予哪个表空间的操作权限,然后回收Unlimited

Tablespace(拥有操作所有表空间的权限),执行导入时指定参数ignore为y,语句如下:

imp scott/tiger@ORCL fromuser=JSS touser=SCOTT file=scott.dmp

log=scott.log ignore=y

导出导入时表空间不一致则导入含LOB类型、分区表或者分区索引之类的对象时会报ORA-01950错误,可以在报错信息中找到SQL语句,在目标端创建缺失的对象。

导入过程中可能遇到的问题:

1.对象已存在

a4c26d1e5885305701be709a3d33442f.png

2.结构不符合规范

a4c26d1e5885305701be709a3d33442f.png

3.sequence不变

a4c26d1e5885305701be709a3d33442f.png

4.记录重复导入

a4c26d1e5885305701be709a3d33442f.png

5.记录未被完全导入

a4c26d1e5885305701be709a3d33442f.png

加快imp导入速度

1.指定buffer参数,可以配合COMMIT=Y参数来设置。但如果表中包含LONG、LOG、REF、BFILE、DATA、ROWID和UROWID等类型的列,数组绑定插入将失效,每条记录插入后都会执行COMMIT操作。因此,对于参数COMMIT,建议采用默认值即设置该参数为N。

2.可以通过indexes=n这种方式提高imp执行速度。等数据成功导入后再手动连接到数据库创建相关索引。使用IMP命令行中indexfile参数指定一个输出文件路径,则要导入的对象所涉及的索引都会生成到该文件中。

3.外部优化

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值