Oracle11g数据库导入Oracle10g问题

来源:互联网 发布:linux和openwrt 编辑:程序博客网 时间:2024/05/01 01:53

1)问题1: Oracle11g数据库导入Oracle10g数据库操作导入解决方法:

11g备份,导入10g的时候会抛错,直接阻止导入。

但是有时候还必须得把11g的数据库导入到10g,我今天就遇到了这种情况。

一、在11g服务器上,使用expdp命令备份数据

EXPDP USERID='SYS/cuc2009@cuc as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

其中,红色文字部分是根据需要改写的地方。例如我的sys密码是cuc2009,数据库sid是cuc,要到出的用户名是sybj,要导入到10.2.0.1.0版本的Oracle数据库中去。aa.dmp和aa.log将会在11g的dpdump目录中生成,例如我的11g装在了E盘下面,于是aa.dmp将会在E:\app\Administrator\admin\cuc\dpdump目录下被生成。

二、在10g服务器上,使用impdp命令恢复数据

准备工作:1.建库2.建表空间3.建用户并授权4.将aa.dmp拷贝到10g的dpdump目录下

1-3点可以去参考博主的上一篇博客“Oracle数据库移植全步骤”,介绍的很详细,这里不再多说。关于第4点,我的10g装在了e:\tools目录下,于是我将aa.dmp文件拷贝到了E:\tools\admin\cucf\dpdump目录下。

IMPDP USERID='SYS/cuc2009@cucf as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

其中红色部分是根据需要改写的地方。例如我的sys密码是cuc2009,数据库sid是cucf,要导入用户名为sybj,要导入到10.2.0.1.0版本的Oracle数据库中去。aa.log将会在10g的dpdump目录中生成。

http://blog.csdn.net/defonds/archive/2009/06/13/4263137.aspx

2)问题2:Oracle 11g导出来的dmp导入到 10g的数据库(IMP-00010:不是有效的导出文件,头部验证失败)

oracle 11g R2 导出去的dmp文件,导入11g R1或10G的,都显示:

IMP-00010:不是有效的导出文件,头部验证失败

为了这个问题一直苦恼,差点就想卸掉11g然后装10g了,后来想想,头部验证,那么头部到底是什么,用Notepad++查看了dmp文件,发现头部真的显示一些东西:

11g R2:V11.02.00

11g R1:V11.01.00

10g:V10.02.01

把版本改成对方机子数据库版本,执行imp就不再报错了。

考虑到如果文件过大,可能打不开导致死机,做个小程序。(C# WINFORM)

clip_image001

0 0
原创粉丝点击