EXP_IMP与dblink数据迁移案例比照

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

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

(2)试验流程:

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

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

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

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

 

(3)试验过程:

----&gt>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

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

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

 

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

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

 

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

 

(4)问题说明:

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

  原因是linux系统是的oracle是10.2.0.1,windows本地oracle是:11.1.0.6.0.

--&gt>

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

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


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

Dblink数据迁移试验

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

(2)试验流程:

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

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

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

 

(4)试验过程:

----&gt>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

----&gt>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

----&gt>验证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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29119536/viewspace-1139650/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值