Oracle Database 10g引入了最新的数据泵(DataDump)技术,数据泵导出导入(EXPDP和IMPDP)的作用
1,实现逻辑备份和逻辑恢复
2,在数据库用户之间移动对象
3,在数据库之间移动对象
4,实现表空间搬移
数据泵使用EXPDP和IMPDP时应该注意的事项:
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
一:可以通过dblink来使用数据泵,这样省掉了导出的步骤,操作简单了。如下所示的例子:
impdp system/manager123 network_link=dblink_to_myself remap_tablespace=DIC_DATA:DICTEST remap_schema=DICTEST_ZH_CN:DICTEST_ZH_CN tables=td_pay_bank, td_common_content TABLE_EXISTS_ACTION=replace;
二:导出的内容
1)按用户导
expdpscott/tiger@orclschemas=scott dumpfile=expdp.dmp DIRECTORY=dir logfile=expdp.log
2)并行进程parallel
expdpscott/tiger@orcldirectory=dir dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdpscott/tiger@orclTABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dir;
4)按查询条件导
expdpscott/tiger@orcldirectory=dir dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dir DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dir DUMPFILE=full.dmp FULL=y;
三:导出内容:
CONTENT该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义
例子:只导出表结构
expdp system/"manager(*)0202" directory=bak dumpfile=TEST_NAV_ZH_CN20150506.dmp schemas=test_nav_zh_tw, test_nav_zh_cn test_nav_en_us, test_nav_ar_sa CONTENT=METADATA_ONLY
四:directory:
查看已经建好的目录;如果没有使用directory参数那么会使用目录DATA_PUMP_DIR
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
----- ---------------------- ----------------------------------------------------------
SYS SUBDIR /u01/app/oracle/product/11.2.0/db/demo/schema/order_entry//2002/Sep
SYS SS_OE_XMLDIR /u01/app/oracle/product/11.2.0/db/demo/schema/order_entry/
SYS LOG_FILE_DIR /u01/app/oracle/product/11.2.0/db/demo/schema/log/
SYS MEDIA_DIR /u01/app/oracle/product/11.2.0/db/demo/schema/product_media/
SYS XMLDIR /u01/app/oracle/product/11.2.0/db/rdbms/xml
SYS DATA_FILE_DIR /u01/app/oracle/product/11.2.0/db/demo/schema/sales_history/
SYS DATA_PUMP_DIR /u01/app/oracle/admin/tj01/dpdump/
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11.2.0/db/ccr/state
注意:通过查询我们看到,所有的目录都属于SYS用户,而不管是哪个用户创建的,在数据库里已经提前建好了这个目录对象DATA_PUMP_DIR。如果在使用expdp导出时,不指定目录对象参数,Oracle会使用数据库缺省的目录DATA_PUMP_DIR,不过如果想使用这个目录的话,用户需要具有exp_full_database的权限才行
五:不常用的一些参数;
1.EXTIMATE_ONLY
指定是否只估算导出作业所占用的磁盘空间,默认值为N
2.EXTIMATE_ONLY={Y | N}
设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.
Expdp scott/tiger ESTIMATE_ONLY=yNOLOGFILE=y
3.EXCLUDE
该选项用于指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [,….]
Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用
Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dup EXCLUDE=VIEW
4.FILESIZE
指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)
5. FLASHBACK_SCN
指定导出特定SCN时刻的表数据
FLASHBACK_SCN=scn_value
Scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用
Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dmp
FLASHBACK_SCN=358523
10)FLASHBACK_TIME
指定导出特定时间点的表数据
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dmp FLASHBACK_TIME=
“TO_TIMESTAMP(’25-08-200414:35:00’,’DD-MM-YYYYHH24:MI:SS’)”
六:当用一个schema去覆盖另一个schemas时,如下:
[oracle@rac1 ~]$ impdp system/manager123 network_link=dblink_to_myself remap_tablespace=users:users remap_schema=liuwenhe:liuhe schemas=liuwenhe;
如果liuhe这用户存在,那么该操作完成之后,liuhe这个用户权限,密码什么的不会变化。
如果liuhe这个用户不存在,那么该操作完成之后,就会创建一个liuhe的用户,并且没有任何权限,值得注意的是密码和liuwenhe的密码相同。
七:当导入schemas的时候,会把属于这个用户的所有对象,包括SEQUENCE,FUNCTION,PROCEDURE,主键,索引,都一并过去。
[oracle@rac1 ~]$ impdp system/manager123 network_link=dblink_to_myself remap_tablespace=users:users remap_schema=liuwenhe:liuhe tables=liuwenhe.liuwenhe table_exists_action=replace;
liuwenhe.liuwenhe这个表的主键和索引,也会过去。并且名字和liuwenhe.liuwenhe的对应名字一样。
八:该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP
TABBLE_EXISTS_ACTION={SKIP | APPEND |TRUNCATE | FRPLACE }
当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项
九:注意:普通用户做全库导出,需要有这个权限:
SQL> grant exp_full_database to scott;
十:REMAP_TABLE参数
将源表数据映射到不同的目标表中
eg:impdp orcldev/oracle DIRECTORY=backup_path dumpfile=oracldev.dmp remap_table=TAB_TEST:TEST_TB
数据导入到TEST_TB表中,但是该表的索引等信息并没有相应的创建,需要手工初始化
十一:REMAP_DATAFILE参数
语法:REMAP_DATAFILE=source_datafile:target_datafile
Oracle_Online:
Remapping datafiles is useful when you move databases between platforms that have different file naming conventions. The source_datafile and target_datafile names should be exactly as you want them to appear in the SQL statements where they are referenced. Oracle recommends that you enclose datafile names in quotation marks to eliminate ambiguity on platforms for which a colon is a valid file specification character
十三:下面看一个试验 ,验证的是只导出数据后,可以恢复,就算是表结构已经变化了,他也能把相应的列恢复,
1)SQL> desc liuwenhe.liuwenhe;
Name Null? Type
----------------------------------------- -------- ----------------------------
X NOT NULL NUMBER(38)
Y NUMBER(38)
2)SQL> select * from liuwenhe.liuwenhe;
X Y
---------- ----------
1 3
3 3
2 4
4 5
5 8
6 9
6 rows selected.
3)[oracle@rac1 expdp]$ expdp system/manager123 directory=bak dumpfile=hhhf.dmp tables=liuwenhe.liuwenhe;
Export: Release 11.2.0.3.0 - Production on Mon Jul 6 11:52:56 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TABLE_03": system/******** directory=bak dumpfile=hhhf.dmp tables=liuwenhe.liuwenhe
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "LIUWENHE"."LIUWENHE" 5.492 KB 6 rows
Master table "SYSTEM"."SYS_EXPORT_TABLE_03" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLE_03 is:
/backup/expdp/hhhf.dmp
Job "SYSTEM"."SYS_EXPORT_TABLE_03" successfully completed at 11:53:10
4)SQL> alter table liuwenhe.liuwenhe drop column y;
Table altered.
5)SQL> truncate table liuwenhe.liuwenhe;
Table truncated.
6)[oracle@rac1 expdp]$ impdp system/manager123 directory=bak dumpfile=hhhf.dmp tables=liuwenhe.liuwenhe content=data_only;
Import: Release 11.2.0.3.0 - Production on Mon Jul 6 11:55:07 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_TABLE_04" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TABLE_04": system/******** directory=bak dumpfile=hhhf.dmp tables=liuwenhe.liuwenhe content=data_only
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "LIUWENHE"."LIUWENHE" 5.492 KB 6 rows
Job "SYSTEM"."SYS_IMPORT_TABLE_04" successfully completed at 11:55:13
7)SQL> select * from liuwenhe.liuwenhe;
X
----------
1
2
3
4
5
6
6 rows selected.
总结:Oracle数据泵,逻辑备份和恢复工具,他直接在逻辑从面操作,不能想象成单纯的insert , 而且只导出数据,然后恢复数据时候,可以不用写remap_tablespace这个参数 。
: