data pump(数据泵)
先给出oracle给出的一个定义:
“Oracle Data Pump technology enables very high-speed movement of data and metadata from one database to another.“
听起来很牛的玩意,理论暂不去考虑,先来几个操作过过瘾;
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
查看一下预定义的目录情况
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
-------------------- ------------------------------ -----------------------------------------------------------------
SYS SUBDIR C:\oracle\product\10.2.0\db_1\demo\schema\order_entry\/2002/Sep
SYS XMLDIR C:\oracle\product\10.2.0\db_1\demo\schema\order_entry\
SYS MEDIA_DIR C:\oracle\product\10.2.0\db_1\demo\schema\product_media\
SYS LOG_FILE_DIR C:\oracle\product\10.2.0\db_1\demo\schema\log\
SYS WORK_DIR C:\ADE\aime_vista_ship\oracle/work
SYS DATA_FILE_DIR C:\oracle\product\10.2.0\db_1\demo\schema\sales_history\
SYS DATA_PUMP_DIR C:\oracle\product\10.2.0\admin\zmmctest\dpdump\
SYS ADMIN_DIR C:\ADE\aime_vista_ship\oracle/md/admin
已选择8行
在C盘下新建数据泵导入导出数据目录和日志目录etl、etl_log
之后用PL/SQL 在数据库中注册刚才创建数据泵导入导出数据目录和日志目录
SQL>create directory data_dir as 'c:\etl'
目录已创建
SQL>create directory log_dir as 'c:\etl_log'
目录已创建
随后就把这两个目录的读写权限授予用户A
SQL>grant read,write on directory data_dir to orabw
授权成功
SQL>grant read,write on directory log_dir to orabw
授权成功
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
-------------------- ------------------------------ -----------------------------------------------------------------
SYS LOG_DIR c:\etl_log
SYS DATA_DIR c:\etl
SYS SUBDIR C:\oracle\product\10.2.0\db_1\demo\schema\order_entry\/2002/Sep
SYS XMLDIR C:\oracle\product\10.2.0\db_1\demo\schema\order_entry\
SYS MEDIA_DIR C:\oracle\product\10.2.0\db_1\demo\schema\product_media\
SYS LOG_FILE_DIR C:\oracle\product\10.2.0\db_1\demo\schema\log\
SYS WORK_DIR C:\ADE\aime_vista_ship\oracle/work
SYS DATA_FILE_DIR C:\oracle\product\10.2.0\db_1\demo\schema\sales_history\
SYS DATA_PUMP_DIR C:\oracle\product\10.2.0\admin\zmmctest\dpdump\
SYS ADMIN_DIR C:\ADE\aime_vista_ship\oracle/md/admin
已选择10行
再在 c:\etl 里创建数据泵导出文件并编辑,文件名称为expdp01.txt ,内容如下:
DIRECTORY=DATA_DIR
USERID=ORABW/ORABW
TABLES=PRODUCTS
CONTENT=ALL
DUMPFILE=expdat.DMP
LOGFILE=LOG_DIR:ETL_LOG.TXT
执行导出
C:\Documents and Settings\Administrator>expdp parfile=c:\etl\expdp01.txt
Export: Release 10.2.0.3.0 - Production on 星期二, 13 8月, 2013 18:40:05
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "ORABW"."SYS_EXPORT_TABLE_01": parfile=c:\etl\expdp01.txt
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 0 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 TABLE_EXPORT/TABLE/COMMENT
处理对象类型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 导出了 "ORABW"."PRODUCTS" 120 KB 80 行
已成功加载/卸载了主表 "ORABW"."SYS_EXPORT_TABLE_01"
******************************************************************************
ORABW.SYS_EXPORT_TABLE_01 的转储文件集为:
C:\ETL\EXPDAT.DMP
作业 "ORABW"."SYS_EXPORT_TABLE_01" 已于 18:40:15 成功完成
这样就把表PRODUCTS的信息导了出来,包括与该表所有有关的对象,具体信息参考上面信息;
然后就可以把导出的包含该表信息的EXPDAT.DMP导入到相应的数据库中;
导入时也可以用一个parfile文件,也可以用导出的那个;例如:
C:\Documents and Settings\Adminis