使用impdp复制Oracle的schema数据迁移

日期: 2008-06-12 作者:Alice 来源:TechTarget中国

  使用impdp复制Oracle的schema数据迁移。


  测试环境如下:


  源: windows 2003,oracle 10202


  目标:windows 2000,oracle 10203


  注:文中的schema和user是一个概念。


  impdp的数据源既可以是expdp 导出来的DMP文件,也可以是一数据库,通过network_link参数来指定数据源,schemas参数说明要复制的用户,remap_schemas参数说明源用户与目标用户的匹配关系,remap_tablepace来调整原schemas使用的表空间与目标数据库用户要表空间的对应关系。这样,基本上可以把源schema的数据导入到目标数据库。格式如下:


  impdp user/password parfile=parfile.log


  **********parfile.log的内容***************


  network_link=目标数据库上的数据库链。


  schema=源数据库上导出数据的用户。


  remap_schema=源用户:目标用户。


  remap_tablespace=源用户使用的表空间:目标用户将使用的表空间(包括临时表空间)。


  **********parfile.log的内容***************


  过程举例:


  在目标数据库上创建数据库链,指向源数据库,数据库链中连接的用户必须具备EXP_FULL_DATABASE角色的权限。 例:


  A、新建数据库链里的用户,授予create session和使用users空间的权限,


  SQL> create user link identified by “1”;


  用户已创建。


  SQL> grant create session to link;


  授权成功。


  SQL> alter USER LINK QUOTA UNLIMITED ON USERS;


  用户已更改。


  B、为该用户创建一表,用于测试复制用户过程。


  SQL> create TABLE LINK.DOC_TYPE AS select * FROM INFO.DOC_TYPE;


  表已创建。


  SQL> select TABLE_NAME FROM DBA_TABLES where OWNER=’LINK’;


  TABLE_NAME


  ——————————


  DOC_TYPE


  C、使用该用户来创建数据库链。


  SQL> create public database link tolink connect to link identified by “1” using ’37ZHS’;


  数据库链接已创建。


  D、使用该链来复制link用户,报ORA-39149: cannot link privileged user to non-privileged user错误。


  d:oracleproduct10.2.0db_1BIN>impdp network_link=tolink schemas=link remap_schema=link:link2


  Import: Release 10.2.0.2.0 – Production on Wednesday, 07 March, 2007 16:51:37


  Copyright (c) 2003, 2005, Oracle. All rights reserved.


  Username: / as sysdba


  Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 – Production


  With the Partitioning, OLAP and Data Mining options


  ORA-31631: privileges are required


  ORA-39149: cannot link privileged user to non-privileged user


  F、授予exp_ful_database权限后,复制成功。


  SQL> grant exp_full_database to link;


  授权成功。


  d:oracleproduct10.2.0db_1BIN>impdp network_link=tolink schemas=link remap_schema=link:link2


  Import: Release 10.2.0.2.0 – Production on Wednesday, 07 March, 2007 16:54:30


  Copyright (c) 2003, 2005, Oracle. All rights reserved.


  Username: / as sysdba


  Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 – Production


  With the Partitioning, OLAP and Data Mining options


  FLASHBACK automatically enabled to preserve database integrity.


  Starting “SYS”.”SYS_IMPORT_SCHEMA_01″: /******** AS SYSDBA network_link=tolink schemas=link remap


  _schema=link:link2


  Estimate in progress using BLOCKS method…


  Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA


  Total estimation using BLOCKS method: 64 KB


  Processing object type SCHEMA_EXPORT/USER


  Processing object type SCHEMA_EXPORT/SYSTEM_GRANT


  Processing object type SCHEMA_EXPORT/ROLE_GRANT


  Processing object type SCHEMA_EXPORT/DEFAULT_ROLE


  Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA


  Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA


  Processing object type SCHEMA_EXPORT/TABLE/TABLE


  . . imported “LINK2″.”DOC_TYPE” 8 rows


  Job “SYS”.”SYS_IMPORT_SCHEMA_01″ successfully completed at 16:54:52


  又如,在两数据库间复制用户:


  A、源数据库是上面例子中的LINK,


  B、目标数据库是10203版本,要将源中的LINK复制到目标中的LINK2中。


  SYS@BTB>create public database link tolink connect to link identified by “1” using ’37zhs’;


  数据库链接已创建。


  SYS@BTB>select * FROM TAB@TOLINK;


  TNAME TABTYPE CLUSTERID


  —————————— ——- ———-


  DOC_TYPE TABLE


  F:oracleproduct10.2.0db_1BIN>impdp network_link=tolink schemas=link remap_schema=link:link2


  Import: Release 10.2.0.3.0 – Production on星期三, 07 3月, 2007 17:36:32


  Copyright (c) 2003, 2005, Oracle. All rights reserved.


  用户名: / as sysdba


  连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Production


  With the Partitioning, OLAP and Data Mining options


  自动启用FLASHBACK以保持数据库完整性。


  启动”SYS”.”SYS_IMPORT_SCHEMA_03″: /******** AS SYSDBA network_link=tolink schemas=link remap_sch


  ema=link:link2


  正在使用BLOCKS方法进行估计…


  处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATA


  使用BLOCKS方法的总估计: 64 KB


  处理对象类型 SCHEMA_EXPORT/USER


  处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT


  处理对象类型 SCHEMA_EXPORT/ROLE_GRANT


  处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE


  处理对象类型 SCHEMA_EXPORT/TABLESPACE_QUOTA


  处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA


  处理对象类型 SCHEMA_EXPORT/TABLE/TABLE


  . . 导入了”LINK2″.”DOC_TYPE”8行


  作业”SYS”.”SYS_IMPORT_SCHEMA_03″ 已于17:40:14成功完成


  F:oracleproduct10.2.0db_1BIN>


  SYS@BTB>select * from all_users order by 3;


  USERNAME USER_ID createD


  —————————— ———- ——————-


  SYSTEM 5 2006-11-19 10:27:12


  SYS 0 2006-11-19 10:27:12


  OUTLN 11 2006-11-19 10:27:18


  DIP 19 2006-11-19 10:34:16


  TSMSYS 21 2006-11-19 10:44:48


  DBSNMP 24 2006-11-19 10:48:58


  WMSYS 25 2006-11-19 10:51:52


  MGMT_VIEW 53 2006-11-19 11:41:09


  SCOTT 54 2006-11-19 11:43:42


  SCOTT2 62 2007-03-01 14:50:06


  LINK2 63 2007-03-07 17:39:34


  从LINK2的创建时间可以知道,该用户是刚创建的。


  从以上两个例子中大家可以看出,不论是在两数据库间,还是在同一数据库里复制SCHEMAS,都必须


  使用network_link,才能说明是在复制数据。


  2.”remap_schema=源用户:目标用户” 中的目标用户可以事先创建。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Alice
Alice

相关推荐