Oracle的11gr2版本中,并没有对数据泵做出多大的改动,主要是增加了对原始版本参数的支持,并且去掉了一些小的限制。

这一篇介绍数据泵对版本的支持。



在11.2中,Oracle增加了版本的功能,而数据泵也支持对指定版本的导出,或将对象导入到指定的版本中。

SQL> conn yangtk/yangtk


已连接。


SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual;


SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')


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


ORA$BASE


SQL> select synonym_name          


 2  from user_synonyms;


SYNONYM_NAME


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


S_1


SQL> create edition my_edition;


版本已创建。


SQL> alter session set edition = my_edition;


会话已更改。


SQL> create synonym s_my_edition for t;


同义词已创建。


SQL> host


[oracle@bjtest ~]$ expdp yangtk/yangtk directory=d_output dumpfile=my_edition.dp include=synonym source_edition=my_edition


Export: Release11.2.0.1.0 - Production on星期一9月14 08:10:53 2009


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


连接到: Oracle Database11gEnterprise Edition Release11.2.0.1.0 - 64bit Production


With the Partitioning, OLAP, Data Mining and Real Application Testing options


启动"YANGTK"."SYS_EXPORT_SCHEMA_01":  yangtk/******** directory=d_output dumpfile=my_edition.dp include=synonym source_edition=my_edition


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


处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATA


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


处理对象类型SCHEMA_EXPORT/SYNONYM/SYNONYM


已成功加载/卸载了主表"YANGTK"."SYS_EXPORT_SCHEMA_01"


******************************************************************************


YANGTK.SYS_EXPORT_SCHEMA_01的转储文件集为:


 /home/oracle/my_edition.dp


作业"YANGTK"."SYS_EXPORT_SCHEMA_01"已于08:11:02成功完成


[oracle@bjtest ~]$ impdp yangtk/yangtk directory=d_output dumpfile=my_edition.dp target_edition=ora\$base


Import: Release11.2.0.1.0 - Production on星期一9月14 08:13:08 2009


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


连接到: Oracle Database11gEnterprise Edition Release11.2.0.1.0 - 64bit Production


With the Partitioning, OLAP, Data Mining and Real Application Testing options


已成功加载/卸载了主表"YANGTK"."SYS_IMPORT_FULL_01"


启动"YANGTK"."SYS_IMPORT_FULL_01":  yangtk/******** directory=d_output dumpfile=my_edition.dp target_edition=ora$base


处理对象类型SCHEMA_EXPORT/SYNONYM/SYNONYM


ORA-31684:对象类型SYNONYM:"YANGTK"."S_1"已存在


作业"YANGTK"."SYS_IMPORT_FULL_01"已经完成,但是有1个错误(于08:13:11完成)


[oracle@bjtest ~]$ exit


exit


SQL> select synonym_name


 2  from user_synonyms;


SYNONYM_NAME


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


S_1


S_MY_EDITION


由于版本MY_EDITION是ORA$BASE的子版本,因此可以看到父版本创建的同义词。导出MY_EDITION版本的同义词时,导出了S_1和S_MY_EDITION两个对象。

而导入到目标版本ORA$BASE时,由于S_1已经存在,因此只将同义词S_MY_EDITION导入到目标版本中。

数据泵的导出和导入版本功能,只是指定了导出或导入的版本对象,而在数据泵保存的文件中并没有保存版本对应的信息,因此在导入的时候,如果没有指定TARGET_EDITION,则Oracle就会导入到默认版本下,而和导出时指定的版本没有关系。


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html