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
本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45402.htm
已成功加载/卸载了主表"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就会导入到默认版本下,而和导出时指定的版本没有关系。
作者:51cto博客 Oracle小混子