Oracle中exp/imp 问题(整理)

[size=large]用 exp 数 据 导 出】:
1 将数据库TEST完全导出
exp system/manager@TEST file=d:\test.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\test.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST tables=(table1,table2) file=d:\test.dmp
4 将数据库中的表table1中的字段filed1以”00″打头的数据导出
exp system/manager@TEST tables=(table1) query=\” where filed1 like '00%'\” file=d:\test.dmp (一般将满足条件的记录生成临时表,再exp)

【用 imp 数 据 导 入】:
1 将D:\test.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\test.dmp ignore=y
2 将D:\test.dmp中的表table1 导入
imp system/manager@TEST file=d:\test.dmp tables=(table1)
一般情况,将表彻底删除再导入。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。

导出导入尽量避免使用system,避免使用full。导出时使用owner,导入时使用fromuser touser

4.导入工具imp可能出现的问题

(1) 数据库对象已经存在
一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;

(2) 数据库对象有主外键约束
不符合主外键约束时, 数据会导入失败 解决办法: 先导入主表, 再导入依存表
disable目标导入对象的主外键约束, 导入数据后, 再enable它们
(3) 权限不够
如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限
(4) 导入大表( 大于80M ) 时, 存储分配失败
默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.导入时, 如果不存在连续一个大数据块, 则会导入失败.导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

(5) imp和exp使用的字符集不同
如果字符集不同, 导入会失败, REGEDIT-> HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE 查找NLS_LANG 导 入完成后再改回来.

(6) imp和exp版本不能往上兼容
错误提示:
IMP-00069: 无法转换为环境本国字符集句柄
IMP-00021: 操作系统错误 - 错误代码(十进制2,十六进制0x2)
imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件根据情况我们可以用$ imp username/password@connect_string
exp 时 错误提示:component 'SET_NO_OUTLINES' must be declared
[/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值