ITPub博客

首页 > 数据库 > Oracle > EXP_IMP与dblink数据迁移案例比照

EXP_IMP与dblink数据迁移案例比照

原创 Oracle 作者:dawn009 时间:2014-04-10 17:30:42 0 删除 编辑

========================================================================================================
                                                                 Exp/Imp数据迁移试验
========================================================================================================
Exp/Imp数据迁移试验

(1)试验目的:linux系统oracle服务器上schemamoon)下面张两表moon.demo01,moon.dem02通过Exp导出到windows本地oracle服务器,并能正常查询到相关数据.介于时间关系,只限于数据对象表进行,不涉及indextriggerprocedurepackage.

(2)试验流程:

  ---->>linux系统oracle服务器上创建用户moon(默认放在users表空间下),并在其下创建     两张表moon.demo01,moon.demo02

  ---->>windows本地用Exp做导出;

  ---->>windows本地用Exp做导入(导入到sun用户下,其默认表空间是sun);

  ---->>验证wondows本地数据合法性;

 

(3)试验过程:

---->>linux系统oracle服务器上创建用户moon(默认放在users表空间下),并在其下创建   两张表moon.demo01,moon.demo02

--创建表空间

CREATE TABLESPACE moon DATAFILE '/u01/app/oracle/oradata/moon.dbf' SIZE 200M 

AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED NOLOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL 

AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

--创建用户并授权

create user moon identified by moon default tablespace moon temporary tablespace temp;

grant connect,resource,dba to moon;

--moon用户登录并创建测试表

create table demo01(id number);

create table demo02(ename varchar(30));

--批量插入数据

begin

for i in 1 .. 10 loop

insert into demo01 values(i);

end loop;

commit;

end;

/


begin

for i in 1 .. 10 loop

insert into demo02 values('hongli'||i);

end loop;

commit;

end;

/

--查询验证数据

select * from demo01;

SQL> select * from demo01;

 

        ID

----------

         1

         2

         3

         4

         5

         6

         7

         8

         9

        10

 

10 rows selected

select * from demo02;

SQL> select * from demo02;

 

ENAME

------------------------------

hongli1

hongli2

hongli3

hongli4

hongli5

hongli6

hongli7

hongli8

hongli9

hongli10

 

10 rows selected

---->>windows本地用Exp做导出;

exp moon/moon@bus tables=(DEMO01,DEMO02) file=E:\moon.dmp log=E:\moon.log;

 

--->>windows本地用Exp做导入;

imp sun/sun fromuser=moon touser=sun tables=(DEMO01,DEMO02) file=E:\moon.dmp log=E:\imp.log;

 

---->>验证wondows本地数据合法性;

 

(4)问题说明:

  试验过程遇到因为版本问题导致Exp报错:EXP-00008: 遇到 ORACLE 错误 904

  原因是linux系统是的oracle10.2.0.1windows本地oracle:11.1.0.6.0.

-->>

  由于Oracleimp/exp组件的操作原则--向下兼容,且有一些规则:
    规则1:低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp不能连接到低版本的数据库服务器;
    规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件);低版本exp出的dmp文件,高版本可以imp(向下兼容);
    规则3:Oracle 低版本Export的数据可以ImportOracle高版本中,但限于Oracle的相邻版本,如从Oracle 10 到 Oracle 11.对于两个不相邻版本间进行转换,如从Oracle 9 到 Oracle 11,则应先将数据输入到中间版本-Oracle 10,再从中间数据库转入更高版本Oracle 11.

--->>综上,如果用EXP/IMP做数据迁移,最好导出端和导入端oracle版本一致或差异不要太大,当然datapump有这种避免版本差异的配制.


========================================================================================================
                                                                  Dblink数据迁移试验
========================================================================================================

Dblink数据迁移试验

(1)试验目的:linux系统oracle服务器上schemamoon)下面张两表moon.demo01,moon.dem02通过DBLINK导入到windows本地oracle服务器,并能正常查询到相关数据.介于时间关系,只限于数据对象表进行,不涉及indextriggerprocedurepackage.

(2)试验流程:

  ---->>linux系统oracle服务器上创建用户moon(默认放在users表空间下),并在其下创建     两张表moon.demo01,moon.demo02

  ---->>windows本地用dblink导入数据;

  ---->>验证wondows本地数据合法性;

 

(4)试验过程:

---->>linux系统oracle服务器上创建用户moon(默认放在users表空间下),并在其下创建   两张表moon.demo01,moon.demo02

     --创建表空间

CREATE TABLESPACE moon DATAFILE '/u01/app/oracle/oradata/moon.dbf' SIZE 200M 

AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED NOLOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL 

AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

--创建用户并授权

create user moon identified by moon default tablespace moon temporary tablespace temp;

grant connect,resource,dba to moon;

--moon用户登录并创建测试表

create table demo01(id number);

create table demo02(ename varchar(30));

--批量插入数据

begin

for i in 1 .. 10 loop

insert into demo01 values(i);

end loop;

commit;

end;

/


begin

for i in 1 .. 10 loop

insert into demo02 values('hongli'||i);

end loop;

commit;

end;

/

--查询验证数据

select * from demo01;

SQL> select * from demo01;

 

        ID

----------

         1

         2

         3

         4

         5

         6

         7

         8

         9

        10

 

10 rows selected

select * from demo02;

SQL> select * from demo02;

 

ENAME

------------------------------

hongli1

hongli2

hongli3

hongli4

hongli5

hongli6

hongli7

hongli8

hongli9

hongli10

 

10 rows selected

---->>windows本地创建db_link,然后通过dblink运用expdp导入数据;

--创建dblink

create public database link bus_dblink connect to moon identified by moon using 'bus';

--通过dblink查询

select * from moon.demo02@bus_dblink;

--通过dblink做数据导入

impdp sun/sun network_link=bus_dblink tables=demo01,demo02 remap_schema=moon:sun remap_tablespace=moon:sun

---->>验证wondows本地数据合法性;

 

 

(5)说明:datapump一般是数据量较大时的数据迁移,如果是小表或少数量的表数据导入,可以运用dblink通过如下方式进行处理(提前需要建好表结构):

INSERT   INTO  demo01  SELECT  FROM  demo01@bus_dblink;

INSERT   INTO  demo01  SELECT  FROM  demo02@bus_dblink;

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29119536/viewspace-1139650/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-15

  • 博文量
    595
  • 访问量
    4848053