- 爱易网页
-
数据库教程
- Oracle中exp/imp 有关问题(整理)
日期:2014-05-16 浏览次数:20438 次
Oracle中exp/imp 问题(整理)
用 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
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。