首页 > 数据库 > Oracle > EXP_IMP与dblink数据迁移案例比照
========================================================================================================
Exp/Imp数据迁移试验
========================================================================================================
Exp/Imp数据迁移试验
(1)试验目的:将linux系统oracle服务器上schema(moon)下面张两表moon.demo01,moon.dem02通过Exp导出到windows本地oracle服务器,并能正常查询到相关数据.介于时间关系,只限于数据对象表进行,不涉及index、trigger、procedure、package等.
(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系统是的oracle是10.2.0.1,windows本地oracle是:11.1.0.6.0.
-->>
由于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.
--->>综上,如果用EXP/IMP做数据迁移,最好导出端和导入端oracle版本一致或差异不要太大,当然datapump有这种避免版本差异的配制.
========================================================================================================
Dblink数据迁移试验
========================================================================================================
Dblink数据迁移试验
(1)试验目的:将linux系统oracle服务器上schema(moon)下面张两表moon.demo01,moon.dem02通过DBLINK导入到windows本地oracle服务器,并能正常查询到相关数据.介于时间关系,只限于数据对象表进行,不涉及index、trigger、procedure、package等.
(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博客 ” ,链接:https://blog.itpub.net/29119536/viewspace-1139650/ ,如需转载,请注明出处,否则将追究法律责任。