2012年6月27日星期三

11g数据导入到10g

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

实验步骤如下:

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

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

例如我的sys密码是abc,数据库sid是metar,要导出的用户名是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、创建目录:
sqlplus sys/abc@metar
sql>create directory dump_dir as 'C:\oracle\product\10.2.0\admin\daggis\udump';

IMPDP USERID='SYS/abc@metar as sysdba' schemas=oa directory=DATA_PUMP_DIR dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0
 
进行验证,在导出数据库的机器运行一次,在导入数据库后的机器运行一次,看看结果是否一样:sql>select count(*) from dba_objects where owner in ('xxx','xxx','xxx');