使用数据泵备分恢复数据库

来源:互联网 发布:java时间加减 小时 编辑:程序博客网 时间:2024/06/06 09:43


使用数据泵备分恢复数据库

 

 

特别注意:

以下介绍的EXPDPIMPDP命令最后面不允许使用分号“;”结尾  否则命令会报错

 

使用expdp以及impdp导入导出数据库用户的效率比expimp要快很多,下面介绍具体的操作方式:

 

一、创建备份目录并授权

注意,备份目录是指服务器上的目录,需要首先在相应的目录上创建目录,且创建以及指向的目录所在的盘符要具备相应的空间。

 

C:\sqlplus user/password@orcl

 

SQL> create  directory  databf  as  'd:\oracle\bf';   创建备份或者导出时指向的目录

目录已创建。

 

SQL> grant  read, write  on  directory  databf  to  nc57;

 

授权成功。

 

二、备份导出

expdp nc57/nc57@orcl  DIRECTORY=databf  DUMPFILE=nc57.dmp  logfile=expnc57.log SCHEMAS=nc57,nc56

 

上述命令导出了两个用户:NC57NC56

 

二、备份的数据的恢复

注意:由于备份的数据是在服务器上的,所以如果要恢复到其他机器上,需要先把备份的数据拷贝到目标服务器上。

 

同样需要先指定备份的目录:

 

C:\sqlplus user/password@orcl

SQL> create  directory  databf  as  'd:\oracle\bf';   创建备份或者导出时指向的目录

目录已创建。

 

备份之前首先要创建用户,然后授权:

 

grant  read,write  on  directory  databf  to  nc57;

 

成功。

 

D:\oracle\bf>impdp nc57/1@orcl directory=databf dumpfile=nc5710131220.dmp  remap_schema=nc57:nc571

 

上述命令把原导出的用户nc57导入到用户nc571

 

 

导入时使用 exclude=table_statistics  可以避免导入 table_statistics出现问题

 

样例:

expdp system/sys@orcl92 directory=databf dumpfile=nc57_zzyxwt.dmp logfile=expzzyx.log schemas=nc57px exclude=table:\"like\'H%\'\" exclude=table:\"like\'WA%\'\" exclude=table:\"like\'RM_%\'\" exclude=table:\"like\'FA%\'\" exclude=table_statistics query='WHERE deptno=20'

 

 

expdp system/sys@orcl92 directory=databf dumpfile=nc57_zzyxwt1.dmp logfile=expzzyx1.log schemas=nc57px exclude=table:\"not like\'BD_PSNBASDO%\'\" exclude=table_statistics

 

 

impdp system/sys@orcl92 directory=databf dumpfile=nc57_zzyxwt.dmp logfile=impzzyx.log remap_schema=nc57px:test exclude=table:\"like\'NTB%\'\"

详细说明:

 

 

数据泵文件

expdp介绍

EXPDP命令行选项
1. ATTACH
该选项用于在客户会话与已存在导出作用之间建立关联.语法如下
ATTACH=[schema_name.]job_name
Schema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:
Expdp scott/tiger ATTACH=scott.export_job

2. CONTENT
该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENTALL,将导出对象定义及其所有数据.DATA_ONLY,只导出对象数据,METADATA_ONLY,只导出对象定义
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLY

3. DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump

4. DUMPFILE
用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象
Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp

5. ESTIMATE
指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
设置为BLOCKS,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS,根据最近统计值估算对象占用空间
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump

6. ESTIMATE_ONLY
指定是否只估算导出作业所占用的磁盘空间,默认值为N
EXTIMATE_ONLY={Y | N}
设置为Y,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,N,不仅估算对象所占用的磁盘空间,还会执行导出操作.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y

7. EXCLUDE(具体见2Exclude导出用户中指定类型的指定对象)
该选项用于指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [,….]
Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDEINCLUDE不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

8. FILESIZE
指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)

9. FLASHBACK_SCN
指定导出特定SCN时刻的表数据
FLASHBACK_SCN=scn_value
Scn_value用于标识SCN.FLASHBACK_SCNFLASHBACK_TIME不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523

10. FLASHBACK_TIME
指定导出特定时间点的表数据
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”

11. FULL
指定数据库模式导出,默认为N
FULL={Y | N}
Y,标识执行数据库导出.

12. HELP
指定是否显示EXPDP命令行选项的帮助信息,默认为N
当设置为Y,会显示导出选项的帮助信息.
Expdp help=y

13. INCLUDE(具体见1Include导出用户中指定类型的指定对象)
指定导出时要包含的对象类型及相关对象
INCLUDE = object_type[:name_clause] [,… ]

14. JOB_NAME
指定要导出作用的名称,默认为SYS_XXX
JOB_NAME=jobname_string
SELECT * FROM DBA_DATAPUMP_JOBS;--查看存在的job

15. LOGFILE
指定导出日志文件文件的名称,默认名称为export.log
LOGFILE=[directory_object:]file_name
Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log

16. NETWORK_LINK
指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.
如:expdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area dumpfile =p_street_area.dmp logfile=p_street_area.log     job_name=my_job
igisdb是目的数据库与源数据的链接名,
dir_dp是目的数据库上的目录
而如果直接用使用连接字符串(@fgisdb),expdp属于服务端工具,expdp生成的文件默认是存放在服务端的

17. NOLOGFILE
该选项用于指定禁止生成导出日志文件,默认值为N.

18. PARALLEL
指定执行导出操作的并行进程个数,默认值为1
注:并行度设置不应该超过CPU数的2倍,如果cpu2个,可将PARALLEL设为2,在导入时速度比PARALLEL1要快
    而对于导出的文件,如果PARALLEL设为2,导出文件只有一个,导出速度提高不多,因为导出都是到同一个文件,会争抢资源。所以可以设置导出文件为两个,如下所示:
    expdp gwm/gwm directory=d_test dumpfile=gwmfile1.dp,gwmfile2.dp parallel=2

19. PARFILE
指定导出参数文件的名称
PARFILE=[directory_path] file_name

20. QUERY
用于指定过滤导出数据的where条件
QUERY=[schema.] [table_name:] query_clause
Schema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用.
Expdp scott/tiger directory=dump dumpfile=a.dmp Tables=emp query=’WHERE deptno=20’

21. SCHEMAS
该方案用于指定执行方案模式导出,默认为当前用户方案.

22. STATUS
指定显示导出作用进程的详细状态,默认值为0

23. TABLES
指定表模式导出
TABLES=[schema_name.]table_name[:partition_name][,…]
Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.

24. TABLESPACES
指定要导出表空间列表

25. TRANSPORT_FULL_CHECK
该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.
当设置为Y,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.

26. TRANSPORT_TABLESPACES
指定执行表空间模式导出

27. VERSION
指定被导出对象的数据库版本,默认值为COMPATIBLE.
VERSION={COMPATIBLE | LATEST | version_string}
COMPATIBLE,会根据初始化参数COMPATIBLE生成对象元数据;LATEST,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.调用EXPDP

数据泵工具导出的步骤:
1、创建DIRECTORY
create directory dir_dp as 'D:\oracle\dir_dp'; 
2、授权
Grant read,write on directory dir_dp to lttfm;
--查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
3、执行导出
expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1
With the Partitioning, OLAP and Data Mining options
启动 "LTTFM"."SYS_EXPORT_SCHEMA_01":  lttfm/********@fgisdb sch
ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;  */
备注:
   1directory=dir_dp必须放在前面,如果将其放置最后,会提示 ORA-39002: 操作无效
                                                             ORA-39070: 无法打开日志文件。
                                                             ORA-39087: 目录名 DATA_PUMP_DIR; 无效
     
   2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现
     如下改成:
     expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;
   3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp lttfm/lttfm attach=lttfm.my_job1执行该命令时一直提示找不到job
   4、创建的目录一定要在数据库所在的机器上。否则也是提示

ORA-39002: 操作无效
 ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效

 

导出的相关命令使用:
   1Ctrl+C组合键:在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止
   2Export> status               --查看当前JOB的状态及相关信息
   3Export> stop_job             --暂停JOB(暂停job后会退出expor模式)
   4)重新进入export模式下:C:\Documents and Settings\Administrator>expdp lttfm/lttfm attach=lttfm.my_job1 --语句后面不带分号
   5Export> start_job            --打开暂停的JOB(并未开始重新执行)
   6Export> continue_client      --通过此命令重新启动 "LTTFM"."MY_JOB":
   7Export> kill_job             --取消当前的JOB并释放相关客户会话(将job删除同时删除dmp文件)
   8Export> exit_client          --通过此命令退出export模式(通过4)可再进入export模式下)
 注:导出完成后job自动卸载

数据泵导出的各种模式:
1、按表模式导出:
expdp lttfm/lttfm@fgisdb  tables=lttfm.b$i_exch_info,lttfm.b$i_manhole_info dumpfile =expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp job_name=my_job

2、按查询条件导出:
expdp lttfm/lttfm@fgisdb  tables=lttfm.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"'

3、按表空间导出:
Expdp lttfm/lttfm@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job

4、导出方案
Expdp lttfm/lttfm DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=lttfm,gwm

5、导出整个数据库:
expdp lttfm/lttfm@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job


使用exclude,include导出数据 
1Include导出用户中指定类型的指定对象
--仅导出lttfm用户下以B开头的所有表,包含与表相关的索引,备注等。不包含过程等其它对象类型:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"LIKE \'B%\'\"

--导出lttfm用户下排除B$开头的所有表:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"NOT LIKE \'B$%\'\"

--仅导出lttfm用户下的所有存储过程:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=PROCEDURE;   

2Exclude导出用户中指定类型的指定对象
--导出lttfm用户下除TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=exclude_1.dmp logfile=exclude_1.log directory=dir_dp job_name=my_job exclude=TABLE;

--导出lttfm用户下排除B$开头的所有表:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"LIKE\'b$%\'\";

--导出lttfm用户下的所有对象,但是对于表类型只导出以b$开头的表:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"NOT LIKE \'b$%\'\";

 

 

Expdp nc57/nc57@ncora11 directory=databf dumpfile=nc571121.dmp logfile=nc571121.log include=TABLE:\"NOT LIKE\'GL_DETAI%\'\"  exclude=table_stattistics;

 

 

房产导出命令:
expdp nc57/nc57@ncora_192.168.8.11 directory=databf   dumpfile=nc571125.dmp logfile=exp1125.log exclude=table:\"like\'ARAP%\'\" exclude=table:\"like\'BM%\'\" exclude=table:\"like\'CM%\'\" exclude=table:\"like\'CT%\'\" exclude=table:\"like\'DM%\'\" exclude=table:\"like\'DRP%\'\" exclude=table:\"like\'EBANK%\'\" exclude=table:\"like\'EPP%\'\" exclude=table:\"like\'ER%\'\" exclude=table:\"like\'FA%\'\" exclude=table:\"like\'FBM%\'\" exclude=table:\"like\'FI%\'\" exclude=table:\"like\'FP%\'\" exclude=table:\"like\'FTS%\'\" exclude=table:\"like\'FVM%\'\" exclude=table:\"like\'GP%\'\" exclude=table:\"like\'HI%\'\" exclude=table:\"like\'HR%\'\" exclude=table:\"like\'IA%\'\" exclude=table:\"like\'IC%\'\" exclude=table:\"like\'MM%\'\" exclude=table:\"like\'PE%\'\" exclude=table:\"like\'PO%\'\" exclude=table:\"like\'PRM%\'\" exclude=table:\"like\'QC%\'\" exclude=table:\"like\'RM%\'\" exclude=table:\"like\'SC%\'\" exclude=table:\"like\'SO%\'\" exclude=table:\"like\'TBM%\'\" exclude=table:\"like\'TEMP%\'\" exclude=table:\"like\'TO%\'\" exclude=table:\"like\'TRM%\'\" exclude=table:\"like\'VRM%\'\" exclude=table:\"like\'WA%\'\" exclude=table:\"like\'NTB%\'\" exclude=table:\"like\'GL%\'\"  exclude=table_statistics 

 

 

 

 

 

HR导出命令:


expdp nc57/nc57@ncora directory=databf dumpfile=nc570221.dmp logfile=expnc570221.log exclude=table:\"like\'ARAP%\'\" exclude=table:\"like\'BM%\'\" exclude=table:\"like\'CM%\'\" exclude=table:\"like\'CT%\'\" exclude=table:\"like\'DM%\'\" exclude=table:\"like\'DRP%\'\" exclude=table:\"like\'EBANK%\'\" exclude=table:\"like\'EPP%\'\" exclude=table:\"like\'ER%\'\" exclude=table:\"like\'FA%\'\" exclude=table:\"like\'FBM%\'\" exclude=table:\"like\'FI%\'\" exclude=table:\"like\'FP%\'\" exclude=table:\"like\'FTS%\'\" exclude=table:\"like\'FVM%\'\" exclude=table:\"like\'GP%\'\" exclude=table:\"like\'IA%\'\" exclude=table:\"like\'IC%\'\" exclude=table:\"like\'MM%\'\" exclude=table:\"like\'PE%\'\" exclude=table:\"like\'PO%\'\" exclude=table:\"like\'PRM%\'\" exclude=table:\"like\'QC%\'\" exclude=table:\"like\'SC%\'\" exclude=table:\"like\'SO%\'\" exclude=table:\"like\'TBM%\'\" exclude=table:\"like\'TEMP%\'\" exclude=table:\"like\'TO%\'\" exclude=table:\"like\'TRM%\'\" exclude=table:\"like\'VRM%\'\" exclude=table:\"like\'NTB%\'\" exclude=table:\"like\'GL%\'\"  exclude=table_statistics 

 

0 0
原创粉丝点击