oracle 11g 导入 10g

本文详细介绍了如何从Oracle 11g数据库备份数据,并将其导入到Oracle 10g数据库的过程。包括使用expdp命令进行备份的具体步骤、解决版本不匹配导致的导入错误、以及在10g环境中通过impdp命令完成数据导入的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用exp、imp命令时进行11g备份,导入10g的时候会抛错:不是有效的导出文件,头部验证失败;未成功终止导入。


我今天就遇到了这种情况,搭建测试环境时,有一个项目使用的是11g数据库,而测试机是10g的数据库,按正常的思路走下来,报错:未成功终止导入,赶紧上网搜了一下,原来是版本不同的问题;


下面我把导入操作的全过程记录下来,自己做了一个知识的记录,同时也希望可以方便有需要的朋友!


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


EXPDP USERID='SYS/sys@daggis as sysdba' schemas=oa directory=DATA_PUMP_DIR dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0

(屏幕截图:C:\Documents and Settings\Administrator>expdp userid='system/sys@gis' schemas
directory=data_pump_dir dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0)


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


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


步骤:1.建库2.建表空间3.建用户并授权4.将dag.dmp拷贝到10g的dpdump目录下5.impdp导入数据库

1、建库:是在database configuration assistant 中直接新建一个数据库(实例)。

2、建表空间:create tablespace OA datafile 'D:\oracle\product\10.2.0\oradata\orcl\oa.dbf' size 400m autoextend on next 20m online;

3、建用户:

create user oa identified by oa;

授权:

Alter user OA default tablespace OA quota unlimited on OA;
grant create session to oa;
grant connect to oa;
grant connect, resource, dba to oa;
grant create table to oa;
grant create view to oa;
grant create trigger to oa;
grant select any table to oa;
grant create sequence to oa;
grant create procedure to oa;
grant create role to oa;
grant create type to oa;
grant GRANT ANY PRIVILEGE to oa;



4、导入:首先测试机中10g装在了D:/根目录下,于是将dag.dmp文件copy到了D:\oracle\product\10.2.0\admin\daggis\udump目录下。

在导入之前,还有一个步骤,必须创建目录,然后才能进行导入,不然在导入时会报错:

ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-31640: 无法打开要读取的转储文件 "D:\p\dag.dmp"
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

创建目录命令如下:

sqlplus sys/sys@daggis
sql>create directory dump_dir as 'C:\oracle\product\10.2.0\admin\daggis\udump';


IMPDP USERID='SYS/sys@daggis as sysdba' schemas=oa directory=DATA_PUMP_DIR dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0

(命令截屏:C:\Documents and Settings\Administrator>impdp userid='sys/sys@daggis as sysdba's
chemas=oa directory=data_pump_dir dumpfile=dag.dmp logfile=dag.log version=10.2.
0.1.0)

到这里为止,所有的操作都完成了,终于看到了久违的消息:操作完成!

上面的命令行中,红色与蓝色部分是根据需要大家根据实际情况改写的地方。例如我的sys密码是sys,数据库sid是daggis,要导入用户名为oa,要导入到10.2.0.1.0版本的Oracle数据库中去。dag.log将会在10g的dpdump目录中生成。

最后有一个命令查看原对象用户总数,大家可以根据需要进行验证,在导出数据库的机器运行一次,在导入数据库后的机器运行一次,看看结果是否一样:

sql>select count(*) from dba_objects where owner in ('wangou','sup','qishun');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值