Oracle的11gr2版本中,并没有对数据泵做出多大的改动,主要是增加了对原始版本参数的支持,并且去掉了一些小的限制。
这一篇介绍数据泵的Legacy模式。
在11.2中推出的这个功能主要是EXP/IMP工具要逐渐地推出历史舞台了。虽然无论从功能上还是从性能上,数据泵导入导出都要优于传统的导出导入工具EXP/IMP,但是如果用户包含了大量的脚本调用EXP,那么全部迁移到EXPDP方式就会非常麻烦。
而数据库的LEGACY模式就是为了能将传统的导出、导入方式平滑的迁移到数据泵方式下。
[oracle@bjtest ~]$ expdp yangtk/yangtk file=t.dmp
Export: Release11.2.0.1.0 - Production on星期日9月6 22:32:43 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
由于以下参数,旧有模式处于活动状态:
旧有模式参数: "file=t.dmp"位置: Command Line,替换为: "dumpfile=t.dmp"
旧有模式设置了reuse_dumpfiles=true参数。
旧有模式设置了nologfile=true参数。
启动"YANGTK"."SYS_EXPORT_SCHEMA_01": yangtk/******** dumpfile=t.dmp reuse_dumpfiles=true nologfile=true
正在使用BLOCKS方法进行估计...
处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATA
使用BLOCKS方法的总估计: 4 MB
处理对象类型SCHEMA_EXPORT/USER
处理对象类型SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型SCHEMA_EXPORT/ROLE_GRANT
处理对象类型SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型SCHEMA_EXPORT/TABLE/TABLE
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型SCHEMA_EXPORT/TABLE/COMMENT
. .导出了"YANGTK"."T" 2.886 MB 71968行
已成功加载/卸载了主表"YANGTK"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_01的转储文件集为:
/data/oracle/admin/test112/dpdump/t.dmp
作业"YANGTK"."SYS_EXPORT_SCHEMA_01"已于22:33:25成功完成
可以看到,FILE是EXP的参数,由于指定了EXP的――参数,EXPDP自动变成了Legacy模式,为了保持和exp工具完全相同的导出效果,因此expdp使用了DUMPFILE指定文件名称,并指定reuse_dumpfiles参数和nologfile参数。
需要说明的是,虽然expdp支持exp的参数,但是导出仍然是按照EXPDP方式进行的,导出文件也是存放在数据库服务器上。而且EXPDP无法导出EXP格式的文件,IMPDP无法使用EXP导出的文件,同样EXPDP的LEGACY方式导出的文件也无法供IMP使用。
还要注意,当前没有使用DIRECTORY参数,不过这个参数还是必须的,否则就要使用默认值DATA_PUMP_DIR,如果用户没有DATA_PUMP_DIR的访问权限,就会报错。当然不过不想通过参数的方式指定DIRECTORY,还可以设置环境变量DATA_PUMP_DIR的值。
在导出的Legacy方式下,也支持各种数据泵的参数。而对于一些没有意义传统参数,比如buffer,则会自动被数据泵所忽略。
最后看一个复杂一点的例子:
SQL> conn yangtk/yangtk
已连接。
SQL> create directory d_output as '/home/oracle';
目录已创建。
SQL> exit
从Oracle Database11gEnterprise Edition Release11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options断开
[oracle@bjtest ~]$ export DATA_PUMP_DIR=d_output
[oracle@bjtest ~]$ expdp yangtk/yangtk file=t.dp tables=t buffer=20480000 compress=n grants=n
Export: Release11.2.0.1.0 - Production on星期一9月7 00:05:31 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
由于以下参数,旧有模式处于活动状态:
忽略旧有模式参数: "buffer=20480000"位置: Command Line。
忽略旧有模式参数: "compress=FALSE"位置: Command Line。
旧有模式参数: "file=t.dp"位置: Command Line,替换为: "dumpfile=D_OUTPUT:t.dp"
数据库目录对象"D_OUTPUT"已添加到文件说明: "t.dp"。
旧有模式参数: "grants=FALSE"位置: Command Line,替换为: "exclude=grant"
旧有模式设置了reuse_dumpfiles=true参数。
旧有模式设置了nologfile=true参数。
数据库目录对象已默认设置为: "d_output"。
启动"YANGTK"."SYS_EXPORT_TABLE_01": yangtk/******** dumpfile=D_OUTPUT:t.dp tables=t exclude=grant reuse_dumpfiles=true nologfile=true
正在使用BLOCKS方法进行估计...
处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA
使用BLOCKS方法的总估计: 4 MB
处理对象类型TABLE_EXPORT/TABLE/TABLE
. .导出了"YANGTK"."T" 2.886 MB 71968行
已成功加载/卸载了主表"YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01的转储文件集为:
/home/oracle/t.dp
作业"YANGTK"."SYS_EXPORT_TABLE_01"已于00:05:38成功完成
再看一个混和IMP和IMPDP参数的例子:
[oracle@bjtest ~]$ impdp yangtk/yangtk file=t.dp buffer=2048000 ignore=y directory=d_output content=data_only
Import: Release11.2.0.1.0 - Production on星期一9月7 00:21:14 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
由于以下参数,旧有模式处于活动状态:
忽略旧有模式参数: "buffer=2048000"位置: Command Line。
旧有模式参数: "file=t.dp"位置: Command Line,替换为: "dumpfile=t.dp"
旧有模式参数: "ignore=TRUE"位置: Command Line,替换为: "table_exists_action=append"
已成功加载/卸载了主表"YANGTK"."SYS_IMPORT_FULL_01"
启动"YANGTK"."SYS_IMPORT_FULL_01": yangtk/******** dumpfile=t.dp table_exists_action=append directory=d_output content=data_only
处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA
. .导入了"YANGTK"."T" 2.886 MB 71968行
作业"YANGTK"."SYS_IMPORT_FULL_01"已于00:21:19成功完成
如果通过连接的方式,可以确保所有的exp备份脚本不需要修改就可以顺利运行:
[oracle@bjtest ~]$ ln -s $ORACLE_HOME/bin/expdp exp
[oracle@bjtest ~]$ ls -l exp
lrwxrwxrwx 1 oracle oinstall 35 Sep 7 00:22 exp -> /data/oracle/product/11.2/bin/expdp
[oracle@bjtest ~]$ ./exp yangtk/yangtk file=t.dp content=metadata_only
Export: Release11.2.0.1.0 - Production on星期一9月7 00:23:41 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
由于以下参数,旧有模式处于活动状态:
旧有模式参数: "file=t.dp"位置: Command Line,替换为: "dumpfile=D_OUTPUT:t.dp"
数据库目录对象"D_OUTPUT"已添加到文件说明: "t.dp"。
旧有模式设置了reuse_dumpfiles=true参数。
旧有模式设置了nologfile=true参数。
数据库目录对象已默认设置为: "d_output"。
启动"YANGTK"."SYS_EXPORT_SCHEMA_01": yangtk/******** dumpfile=D_OUTPUT:t.dp content=metadata_only reuse_dumpfiles=true nologfile=true
处理对象类型SCHEMA_EXPORT/USER
处理对象类型SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型SCHEMA_EXPORT/ROLE_GRANT
处理对象类型SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型SCHEMA_EXPORT/TABLE/TABLE
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型SCHEMA_EXPORT/TABLE/COMMENT
已成功加载/卸载了主表"YANGTK"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_01的转储文件集为:
/home/oracle/t.dp
作业"YANGTK"."SYS_EXPORT_SCHEMA_01"已于00:24:23成功完成
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html