Oracle数据库备份详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库备份详解相关的知识,希望对你有一定的参考价值。

Oracle数据库备份详解

Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式;下面对这两种方式进行详解。

  1. 常规方式 exp/imp

imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论

一  EXP导出命令

exp 是数据的导出命令,可以用于表,用户,整个数据库,
exp -help查看帮助

Export: Release 11.2.0.1.0 - Production on Mon Dec 8 19:01:16 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
You can let Export prompt you for parameters by entering the EXP
command followed by your username/password:
     Example: EXP SCOTT/TIGER
Or, you can control how Export runs by entering the EXP command followed
by various arguments. To specify parameters, you use keywords:
     Format:  EXP KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
     Example: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
               or TABLES=(T1:P1,T1:P2), if T1 is partitioned table
USERID must be the first parameter on the command line.
Keyword    Description (Default)      Keyword      Description (Default)
--------------------------------------------------------------------------
USERID     username/password          FULL         export entire file (N)
BUFFER     size of data buffer        OWNER        list of owner usernames
FILE       output files (EXPDAT.DMP)  TABLES       list of table names
COMPRESS   import into one extent (Y) RECORDLENGTH length of IO record
GRANTS     export grants (Y)          INCTYPE      incremental export type
INDEXES    export indexes (Y)         RECORD       track incr. export (Y)
DIRECT     direct path (N)            TRIGGERS     export triggers (Y)
LOG        log file of screen output  STATISTICS   analyze objects (ESTIMATE)
ROWS       export data rows (Y)       PARFILE      parameter filename
CONSISTENT cross-table consistency(N) CONSTRAINTS  export constraints (Y)
OBJECT_CONSISTENT    transaction set to read only during object export (N)
FEEDBACK             display progress every x rows (0)
FILESIZE             maximum size of each dump file
FLASHBACK_SCN        SCN used to set session snapshot back to
FLASHBACK_TIME       time used to get the SCN closest to the specified time
QUERY                select clause used to export a subset of a table
RESUMABLE            suspend when a space related error is encountered(N)
RESUMABLE_NAME       text string used to identify resumable statement
RESUMABLE_TIMEOUT    wait time for RESUMABLE 
TTS_FULL_CHECK       perform full or partial dependency check for TTS
VOLSIZE              number of bytes to write to each tape volume   (字节数写到磁盘)
TABLESPACES          list of tablespaces to export
TRANSPORT_TABLESPACE export transportable tablespace metadata (N)
TEMPLATE             template name which invokes iAS mode export
上面是exp -help的相关参数

1,表模式tables:

     

备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:

exp username/password rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp.dmp log=exp.log tables=tab1,tab2,tab3
若直接备份到磁带设备,使用如下命令:
注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。

exp scott/tiger owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp.log
eg:

[[email protected] chenlong]$ exp scott/tiger  rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 file=/home/oracle/chenlong/exp.dmp

log=/home/oracle/chenlong/exp.log tables=emp,dept


Export: Release 11.2.0.1.0 - Production on Mon Dec 8 19:05:32 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
Note: indexes on tables will not be exported
About to export specified tables via Conventional Path ....

exporting table           EMP           14 rows exported
EXP-00091: Exporting questionable statistics.

. exporting table     DEPT          4 rows exported
Export terminated successfully with warnings.

2,用户模式owner:

备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。 若备份到本地文件,使用如下命令:
exp scott/tiger owner=scott rows=y indexes=n compress=n buffer=65536 feedback=100000 file=exp.dmp log=exp.log
若直接备份到磁带设备,使用如下命令:
exp scott/tiger owner=scott rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp.log
     注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。
3,完全模式:

备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:
 exp usernumber/password rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y  file=exp_.dmp log=exp.log


二:IMP

       import 要与export 对应。 就是采用什么方式export,就需要采用什么方式import。

因此import 也有三种模式:表恢复、用户恢复、完全恢复。
You can let Import prompt you for parameters by entering the IMP
command followed by your username/password:
     Example: IMP SCOTT/TIGER
Or, you can control how Import runs by entering the IMP command followed
by various arguments. To specify parameters, you use keywords:
     Format:  IMP KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
     Example: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
               or TABLES=(T1:P1,T1:P2), if T1 is partitioned table
USERID must be the first parameter on the command line.
Keyword  Description (Default)       Keyword      Description (Default)
---------------------------------------------------------------------

USERID   username/password           FULL         import entire file (N)
BUFFER   size of data buffer         FROMUSER     list of owner usernames
FILE     input files (EXPDAT.DMP)    TOUSER       list of usernames
SHOW     just list file contents (N) TABLES       list of table names
IGNORE   ignore create errors (N)    RECORDLENGTH length of IO record
GRANTS   import grants (Y)           INCTYPE      incremental import type
INDEXES  import indexes (Y)          COMMIT       commit array insert (N)
ROWS     import data rows (Y)        PARFILE      parameter filename
LOG      log file of screen output   CONSTRAINTS  import constraints (Y)
DESTROY                overwrite tablespace data file (N)
INDEXFILE              write table/index info to specified file
SKIP_UNUSABLE_INDEXES  skip maintenance of unusable indexes (N)
FEEDBACK               display progress every x rows(0)
TOID_NOVALIDATE        skip validation of specified type ids 
FILESIZE               maximum size of each dump file
STATISTICS             import precomputed statistics (always)
RESUMABLE              suspend when a space related error is encountered(N)
RESUMABLE_NAME         text string used to identify resumable statement
RESUMABLE_TIMEOUT      wait time for RESUMABLE 
COMPILE                compile procedures, packages, and functions (Y)
STREAMS_CONFIGURATION  import streams general metadata (Y)
STREAMS_INSTANTIATION  import streams instantiation metadata (N)
DATA_ONLY              import only data (N)
VOLSIZE                number of bytes in file on each volume of a file on tape

The following keywords only apply to transportable tablespaces
TRANSPORT_TABLESPACE import transportable tablespace metadata (N)
TABLESPACES tablespaces to be transported into database
DATAFILES datafiles to be transported into database
TTS_OWNERS users that own data in the transportable tablespace set

Import terminated successfully without warnings

 

 

1. 表模式

此方式将根据按照表模式备份的数据进行恢复。  
 
1.1 恢复备份数据的全部内容
    imp scott/tiger fromuser=scott touser=scott rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n file=exp.dmp log=imp.log
 
若从磁带设备恢复,使用如下命令:
imp scott/tiger fromuser=scott touser=scott rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp.log
 
1.2 恢复备份数据中的指定表:
若从本地文件恢复,使用如下命令:
imp scott/tiger fromuser=scott touser=scott rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n file=exp.dmp log=imp.log tables=t1,t2,t3
 
若从磁带设备恢复,使用如下命令:
imp scott/icd fromuser=scott touser=scott rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0  
log=imp.tiger tables=t1,t2,t3 

2. 用户模式

此方式将根据按照用户模式备份的数据进行恢复。
 
2.1. 恢复备份数据的全部内容
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n file=exp.dmp log=imp.log
 
若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp.log
 
2.2. 恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=exp.dmp log=imp.log tables=t1,t2,t3;

三:参数说明

3.1. ignore参数

    Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。
    若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。
    若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。
 

3.2. indexes参数

    在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。
 

3.3 字符集转换

    对于单字节字符集(例如US7ASCII),恢复时,数据库自动转换为该会话的字符集(NLS_LANG参数);
    对于多字节字符集(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。

3.4 grants

    导入权限

3.5 commit

    该参数为Y时,导入的过程会提交数据行,若buffer设置得太小,则会过去频繁的提交数据,对性能有一定的影响.

 

 

四   常见问题及解决方法

4.1 数据库对象已经存在

    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;  数据库对象已经存在, 按缺省的imp参数, 则会导入失败如果用了参数ignore=y, 会把exp文件内的数据内容导入如果表有唯一关键字的约束条件, 不合条件将不被导入如果表没有唯一关键字的约束条件, 将引起记录重复
 

4.2 数据库对象有主外键约束

    不符合主外键约束时, 数据会导入失败,
    解决办法:
    先导入主表, 再导入依存表
    disable目标导入对象的主外键约束, 导入数据后, 再enable它们
 

4.3  权限不够

    如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限
 

4.4  导入大表( 大于80M ) 时, 存储分配失败

    默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
    导入时, 如果不存在连续一个大数据块, 则会导入失败. 导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
 

4.5 imp和exp使用的字符集不同

    如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.  导入完成后再改回来.

 

   

4.6 imp和exp版本不能往上兼容

  可以从低版本导入高版本,但不能从高版本导入到低版本。如果遇到迁移因版本不同的问题,可以用低版本的export 导出,到导入到低版本。

注意:

1,导入时要注意字符集的,字符集不能由高到底(超集到子集)

2,导入时要注意版本问题。

 

  1. 数据泵方式 expdp/impdp

Oracle使用EXPDP和IMPDP数据泵进行导出导入的方法

使用expdp和impdp时应该注重的事项:

1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。

3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。

4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。


一、创建逻辑目录,该命令不会在操作系统创建真正的目录(请先创建真正的目录),最好以system等管理员创建逻辑目录。
SQL>conn system/[email protected] as sysdba
SQL>create directory dump_dir as ‘d:\\test\\dump‘;

   

二、查看管理员目录(同时查看操作系统是否存在,因为oracle并不关心该目录是否存在,假如不存在,则出错)
SQL>select * from dba_directories;

   

三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
SQL>grant read,write on directory dump_dir to scott;

四、用expdp导出数据

1)导出用户
expdp scott/[email protected] schemas=scott dumpfile=expdp.dmp directory=dump_dir;

2)导出表
expdp scott/[email protected] tables=emp,dept dumpfile=expdp.dmp directory=dump_dir;

3)按查询条件导
expdp scott/[email protected] directory=dump_dir dumpfile=expdp.dmp tables=empquery=‘where deptno=20‘;

4)按表空间导
expdp system/[email protected] directory=dump_dir dumpfile=tablespace.dmptablespaces=temp,example;

5)导整个数据库
expdp system/[email protected] directory=dump_dir dumpfile=full.dmp full=y;


五、用impdp导入数据

1)导入用户(从用户scott导入到用户scott)
impdp scott/[email protected] directory=dump_dir dumpfile=expdp.dmp schemas=scott;

2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/[email protected] directory=dump_dir dumpfile=expdp.dmptables=scott.dept,scott.emp remap_schema=scott:system;

3)导入表空间
impdp system/[email protected] directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;

4)导入数据库
impdb system/[email protected] directory=dump_dir dumpfile=full.dmp full=y;

5)追加数据
impdp system/[email protected] directory=dump_dir dumpfile=expdp.dmp schemas=systemtable_exists_action

 

oracle数据泵备份(Expdp命令)

  Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种,今天首先 来实践一下数据泵备份与还原。数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份。oracle10g开始推出了数据泵(expdp /impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高。

  一、知晓expdp命令

C:\\>expdp -help

Export: Release 11.1.0.7.0 - Production on 星期六, 28 9月, 2013 10:21:52

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输数据对象的机制。该实用程序可以使用以下命令进行调用:

示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导出的运行方式。具体方法是: 在 ‘expdp‘ 命令后输入各种参数。要指定各参数, 请使用关键字:

   格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scot

        或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字               说明 (默认)

---------------------------------------------------------------------------

ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。

COMPRESSION           减小转储文件内容的大小, 其中有效关键字  值为: ALL, (METADATA_ONLY), DATA_ONLY 和 NONE。

CONTENT              <span style="color: #ff0000;"> 指定要卸载的数据, 其中有效关键字  值为: (ALL), DATA_ONLY 和 METADATA_ONLY。</span>  --默认值为ALL                   

DATA_OPTIONS          数据层标记, 其中唯一有效的值为: 使用CLOB格式的 XML_CLOBS-write XML 数据类型

DIRECTORY             <span style="color: #ff0000;">供转储文件和日志文件使用的目录对象</span>。

DUMPFILE              <span style="color: #ff0000;">目标转储文件 (expdat.dmp) 的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.d

</span>ENCRYPTION            <span style="color: #ff0000;">加密部分或全部转储文件, 其中有效关键字值为: ALL, DATA_ONLY, METADATA_ONLY,ENCRYPTED_COLUMNS_ONLY 或 NONE。</span>

ENCRYPTION_ALGORITHM  指定应如何完成加密, 其中有效关键字值为: (AES128), AES192 和 AES256。

ENCRYPTION_MODE       生成加密密钥的方法, 其中有效关键字值为: DUAL, PASSWORD 和 (TRANSPARENT)。

ENCRYPTION_PASSWORD   用于创建加密列数据的口令关键字。

ESTIMATE              计算作业估计值, 其中有效关键字值为: (BLOCKS) 和 STATISTICS。

ESTIMATE_ONLY         在不执行导出的情况下计算作业估计值。

EXCLUDE               <span style="color: #ff0000;">排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。--EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]<br></span>FILESIZE              以字节为单位指定每个转储文件的大小。

FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。 -- 指定导出特定SCN时刻的表数据<br>FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。--指定导出特定时间点的表数据,注意FLASHBACK_SCN和FLASHBACK_TIME不能同时使 用<br>FULL                  <span style="color: #ff0000;">导出整个数据库 (N)。</span>

HELP                  显示帮助消息 (N)。

INCLUDE               包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。

JOB_NAME              要创建的导出作业的名称。

LOGFILE               <span style="color: #ff0000;">日志文件名 (export.log)。

</span>NETWORK_LINK          链接到源系统的远程数据库的名称。

NOLOGFILE             不写入日志文件 (N)。

PARALLEL              <span style="color: #ff0000;">更改当前作业的活动 worker 的数目。</span>

PARFILE               <span style="color: #ff0000;">指定参数文件</span>。

QUERY                 <span style="color: #ff0000;">用于导出表的子集的谓词子句。--</span>QUERY = [schema.][table_name:] query_clause<br>REMAP_DATA            <span style="color: #ff0000;">指定数据转换函数,例如 REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。

</span>REUSE_DUMPFILES       覆盖目标转储文件 (如果文件存在) (N)。

SAMPLE               <span style="color: #ff0000;"> 要导出的数据的百分比;

</span>SCHEMAS               <span style="color: #ff0000;">要导出的方案的列表 (登录方案)。

</span>STATUS                在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。

TABLES                <span style="color: #ff0000;">标识要导出的表的列表 - 只有一个方案。--[schema_name.]table_name[:partition_name][,…]<br></span>TABLESPACES          <span style="color: #ff0000;"> 标识要导出的表空间的列表。

</span>TRANSPORTABLE         指定是否可以使用可传输方法, 其中有效关键字值为: ALWAYS, (NEVER)。

TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。

TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。

VERSION               <span style="color: #ff0000;">要导出的对象的版本, 其中有效关键字为:(COMPATIBLE), LATEST 或任何有效的数据库版本。

</span><br>下列命令在交互模式下有效。

注: 允许使用缩写

命令               说明

---------------------------------------------------------------------------

ADD_FILE              向转储文件集中添加转储文件。

CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。

EXIT_CLIENT           退出客户机会话并使作业处于运行状态。

FILESIZE              后续 ADD_FILE 命令的默认文件大小 (字节)。

HELP                  总结交互命令。

KILL_JOB              分离和删除作业。

PARALLEL              更改当前作业的活动 worker 的数目。PARALLEL=<worker 的数目>。                     <br>REUSE_DUMPFILES       覆盖目标转储文件 (如果文件存在) (N)。

START_JOB             启动/恢复当前作业。

STATUS                在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。STATUS[=interval]

STOP_JOB              顺序关闭执行的作业并退出客户机。STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。

<br><span style="color: #ff0000;">备注:红颜色标记的字体,表示是expdp命令常用的命令选项,这个需要大家掌握理解并能灵活运用。()括号括起来的代表是expdp命令的默认选项</span>

二、准备工作

 1、查询路径信息

查看已经创建的路径信息:

SELECT * FROMdba_directories;

 2、创建路径

创建路径需要sys权限,需要有create any directory权限才可以创建路径。

  选项:DIRECTORY=directory_object

  Directory_object用于指定目录对象名称。需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录。

  eg: CREATE OR REPLACEdirectory backup_path AS ‘D:\\APP\\ORADATA\\db_backup‘; --创建路径名为dackup_path的路径,并指向硬盘的指定位置

  对新创建的路径进行授权操作:

  eg:grant read,write on directory backup_path to orcldev; --将对路径的读写权限分配各orcldev用户。

三、操作实例

  执行expdp和impdp命令需要拥有exp_full_database和imp_full_database权限,授权语句如下:

  eg:grant exp_full_database,imp_full_database to orcldev;

   1、导出orcldev这个schema的所用对象[schemas or full]

   eg:expdp orcldev/[email protected] directory=backup_pathdumpfile=orcldev_schema.dmp logfile=orcldev_schema_2013.log schemas=orcldev

   2、导出orcldev这个用户下的某些表[tables]

   eg:C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_table.dmp logfile=orcldev_table_2013.logtables=(‘TAB_TEST‘,‘TAB_A‘)

   3、只导出orcldev这个用户的元数据[content]

   eg:C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_meta.dmp logfile=orcldev_meta_2013.log     

      SCHEMAS=orcldevCONTENT=METADATA_ONLY

    4、只导出orcldev这个用户50%的抽样数据[sample]

   eg:C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_samp.dmp logfile=orcldev_samp_2013.log schemas=orcldevsample=50

5、采用并行方式备份整库[parallel]

    parallel参数只有在oracle10g之后的版本(包含10g)有效。

    oracle_online:you can use the DUMPFILE parameter during export operations tospecify multiple dump files, by using a substitution variable (%U) in thefilename. This is called a dump file template. The new dump files are createdas they are needed, beginning with 01 for %U, then using 02,03,and so on.

   eg:C:\\>expdporcldev/oracle directory=dackup_path dumpfile=orcldev_parallel_%U.dmplogfile=orcldev_parallel_2013.log parallel=4

    "%U"表示自动生成递增的序列号。

6、导出orcldev这个方案对象,但不包含索引[exclude]

   eg: --可以剔除的对象有:VIEW,PACKAGE,FUNCTION,index,constraints,table,schema,user等等

     1) C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log SCHEMAS=orcldevEXCLUDE=index

     2) C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log SCHEMAS=orcldevEXCLUDE=INDEX:"LIKE ‘TEST%‘"   --导出这个orcldev方案,剔除以TEST开头的索引

     3) C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.logEXCLUDE=SCHEMA:"=‘SCOTT‘"

     C:\\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.logEXCLUDE=USER:"=‘SCOTT‘"

        --备份整库但剔除SCOTT这个用户的对象。  

   注意:include与exclude不能同时使用。

 7、PARFILE选项

    expdp命令可以调用parfile文件,在parfile里可以写备份脚本,可以使用query选项。

Oracle highly recommends that you place QUERY specifications in a parameter file; otherwise, you might have to useoperating system-specific escape characters on the command line before eachquotation mark.

如expdp.txt内容如下:

         USERID=orcldev/oracledirectory=dackup_path dumpfile=orcldev_parfile.dmp logfile=orcldev_parfile.logTABLES=‘TAB_TEST‘ QUERY="WHERETRAN_DATE=TO_DATE(‘2013-08-31‘,‘YYYY-MM-DD‘)"

    执行方法:expdp parfile=expdp.txt 即可执行备份

    使用parfile好处是使用query选项是不用使用转义字符,如果将query参数放到外边的话,需要将""进行转义。

eg:

  UNIX写法:

  expdp orcldev/oracle directory=backup_path dumpfile=2013.dmp logfile=2013.log schemas=orcldev INCLUDE=TABLE:\\"IN\\‘TEST_A\\‘,\\‘TEST_B\\‘\\" --在Unix系统执行是需要将单引号进行转义操作,否则会报错。

  WINDOWS写法:

  expdp orcldev/oracle directory=backup_path dumpfile=2013.dmp logfile=2013.log schemas=orcldev INCLUDE=TABLE:"IN \\(‘TEST_A‘,‘TEST_B‘)"

8、TABLESPACE导出表空间

  eg:expdp orcldev/oracle directory=backup_path dumpfile=2013.dmplogfile =2013.log tablespaces=user,orcldev

9、Version选项

  VERSION选项默认值是COMPATIBLE,即兼容模式。在我们备份的时候,可以指定版本号。

  eg:expdp orcldev/oracle directory=backup_path dumpfile=2013.dmplogfile =2013.log full=Y VERSION=10.2.0.4

10、FLASHBACK_TIME选项

  指定导出特定时间点的表数据,可以联系一下FLASHBACK功能。

eg:C:\\>expdp orcldev/oracle directory=dackup_path umpfile=orcldev_flash.dmplogfile=orcldev_flash.log SCHEMAS=orcldev  FLASHBACK_TIME="TO_TIMESTAMP(‘2013-09-28 14:30:00‘,‘DD-MM-YYYYHH24:MI:SS‘)"

 

ORACLE数据泵还原(IMPDP命令)

 Oracle数据库还原IMPDP命令是相对于EXPDP命令的,方向是反向的。即对于数据库备份进行还原操作。

一、知晓IMPDP命令

C:\\>impdp -help

Import: Release 11.1.0.7.0 - Production on 星期六, 28 9月, 2013 15:37:03

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输

数据对象的机制。该实用程序可以使用以下命令进行调用:

     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导入的运行方式。具体方法是: 在 ‘impdp‘ 命令后输入各种参数。要指定各参数, 请使用关键字:

     格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID 必须是命令行中的第一个参数。

关键字               说明 (默认)

------------------------------------------------------------------------------

ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。

CONTENT               <span style="color: #ff0000;">指定要加载的数据, 其中有效关键字为:(ALL),DATA_ONLY和METADATA_ONLY。

</span>DATA_OPTIONS          数据层标记,其中唯一有效的值为:SKIP_CONSTRAINT_ERRORS-约束条件错误不严重。

DIRECTORY            <span style="color: #ff0000;"> 供转储文件,日志文件和sql文件使用的目录对象。</span>

DUMPFILE              <span style="color: #ff0000;">要从(expdat.dmp)中导入的转储文件的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。

</span>ENCRYPTION_PASSWORD   用于访问加密列数据的口令关键字。此参数对网络导入作业无效。

ESTIMATE              计算作业估计值, 其中有效关键字为:(BLOCKS)和STATISTICS。

EXCLUDE               <span style="color: #ff0000;">排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。</span>

FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。

FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。

FULL                  <span style="color: #ff0000;">从源导入全部对象(Y)。

</span>HELP                  显示帮助消息(N)。

INCLUDE               <span style="color: #ff0000;">包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。

</span>JOB_NAME              要创建的导入作业的名称。

LOGFILE               日志文件名(import.log)。

NETWORK_LINK          <span style="color: #ff0000;">链接到源系统的远程数据库的名称。</span>

NOLOGFILE             不写入日志文件。

PARALLEL              <span style="color: #ff0000;">更改当前作业的活动worker的数目。</span>

PARFILE               <span style="color: #ff0000;">指定参数文件。

</span>PARTITION_OPTIONS     指定应如何转换分区,其中有效关键字为:DEPARTITION,MERGE和(NONE)

QUERY                 <span style="color: #ff0000;">用于导入表的子集的谓词子句。

</span>REMAP_DATA            指定数据转换函数,例如REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO

REMAP_DATAFILE        在所有DDL语句中重新定义数据文件引用。

REMAP_SCHEMA          <span style="color: #ff0000;">将一个方案中的对象加载到另一个方案。

</span>REMAP_TABLE          <span style="color: #ff0000;"> 表名重新映射到另一个表,例如 REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。

</span>REMAP_TABLESPACE      <span style="color: #ff0000;">将表空间对象重新映射到另一个表空间。</span>

REUSE_DATAFILES       如果表空间已存在, 则将其初始化 (N)。

SCHEMAS               <span style="color: #ff0000;">要导入的方案的列表。

</span>SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。

SQLFILE               将所有的 SQL DDL 写入指定的文件。

STATUS                在默认值(0)将显示可用时的新状态的情况下,要监视的频率(以秒计)作业状态。

STREAMS_CONFIGURATION 启用流元数据的加载

TABLE_EXISTS_ACTION  <span style="color: #ff0000;"> 导入对象已存在时执行的操作。有效关键字:(SKIP),APPEND,REPLACE和TRUNCATE。

</span>TABLES                <span style="color: #ff0000;">标识要导入的表的列表。

</span>TABLESPACES           标识要导入的表空间的列表。

TRANSFORM             要应用于适用对象的元数据转换。有效转换关键字为:SEGMENT_ATTRIBUTES,STORAGE,OID和PCTSPACE。

TRANSPORTABLE         用于选择可传输数据移动的选项。有效关键字为: ALWAYS 和 (NEVER)。仅在 NETWORK_LINK 模式导入操作中有效。

TRANSPORT_DATAFILES   <span style="color: #ff0000;">按可传输模式导入的数据文件的列表。</span>

TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。

TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。仅在 NETWORK_LINK 模式导入操作中有效。

VERSION               要导出的对象的版本, 其中有效关键字为:(COMPATIBLE), LATEST 或任何有效的数据库版本。仅对 NETWORK_LINK 和 SQLFILE 有效。

下列命令在交互模式下有效。

注: 允许使用缩写

命令               说明 (默认)

------------------------------------------------------------------------------

CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。

EXIT_CLIENT           退出客户机会话并使作业处于运行状态。

HELP                  总结交互命令。

KILL_JOB              分离和删除作业。

PARALLEL              更改当前作业的活动 worker 的数目。PARALLEL=<worker 的数目>。

START_JOB             启动/恢复当前作业。START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停止时执行的任意操作。

STATUS                在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。STATUS[=interval]

STOP_JOB              顺序关闭执行的作业并退出客户机。STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。

<br><span style="color: #ff0000;">备注:红色标记的选项是比较常用的,需知晓其用法。</span>

二、操作实例

  1、全库模式导入[full]
   impdp orcldev/oracle directory=backup_pathdumpfile=orcldev_schema.dmp full=Y table_exists_action=replace --如果表已经存在则进行替换操作。
   一般来说,在还原数据库操作的时候,首先要删除这个用户,然后在进行impdp还原操作。
    eg:
    (1)SQL>DROP USER orcldev CASCADE;
    (2)impdp orcldev/oracledirectory=backup_path dumpfile=orcldev_2013.dmp full=Y 
   2、Schema模式导入[schema]
   --还原orcldev这个方案(用户)
   impdp orcldev/oracle directory=backup_pathdumpfile=orcldev_schema.dmp schemas=orcldev table_exists_action=replace

  3、表模式导入[table]
   --还原某个用户下的具体的表
   (1)windows版本:
     impdp orcldev/oracledirectory=backup_path dumpfile=orcldev_table.dmp tables=‘TAB_TEST‘table_exists_action=replace
   (2)unix版本:需要将‘单引号进行转义操作
    impdp orcldev/oracledirectory=backup_path dumpfile=orcldev_table.dmp tables=\\‘ius_tran\\‘table_exists_action=replace

  4、表空间模式导入[tablespace]
    impdp orcldev/oracledirectory=backup_path dumpfile=orcldev_tablespace.dmp tablespace=user,orcldev

  5、传输表空间模式导入[Transportable Tablespace]
   (1)Oracle_Online
    You cannot export transportable tablespacesand then import them into a database at a lower release level. The targetdatabase must be at the same or higher release level as the source database.
   The TRANSPORT_TABLESPACES is valid only whenthe NETWORK_LINK parameter is also specified.
   意思就说,目标库的版本要等于或者高于源数据库的版本,TRANSPORT_TABLESPACES参数选项有效前提条件是NETWORK_LINK参数需被指定。
   查询数据库版本号SQL语句:
SELECT *FROM v$version;

  EG:impdp orcldev/oracleDIRECTORY=dackup_path NETWORK_LINK=db_link_test01TRANSPORT_TABLESPACES=test0001 TRANSPORT_FULL_CHECK=nTRANSPORT_DATAFILES=‘app/oradata/test0001.dbf‘

  (2)创建数据库dbLink方法:
   语法:
     CREATE [PUBLIC] DATABASE LINK LINK_NAME 
      CONNECT TO Username IDENTIFIED BYPassword
      USING ‘ConnectString‘;

  注释:
      1)创建dblink需要有CREATE DATABASE LINK或CREATE PUBLIC DATABASELINK的系统权限以及用来登录到远程数据库的帐号必须有CREATE SESSION权限。
      2)ConnectString指的是在tnsnames.ora文件中配置的监听名称。
      3)当GLOBAL_NAME=TRUE时,dblink名必须与远程数据库的全局数据库名GLOBAL_NAME相同;否则,可以任意命名。

  (3)查看GLOBAL_NAME参数方法:
SQL> show parametersglobal_name;
NAME                                   TYPE        VALUE
--------------------------------------------- --------------
----------------
bal_names                        boolean     FALSE

 6、REMAP_SCHEMA参数
    众所周知:IMP工具的FROMUSER和TOUSER参数可以实现将一个用户的的数据迁移到另外一个用户。
    (1)impdp数据泵使用REMAP_SCHEMA参数来实现不同用户之间的数据迁移;
     语法:
      REMAP_SCHEMA=source_schema:target_schema
      eg:impdp orcldev/oracleDIRECTORY=backup_path DUMPFILE=oracldev.dmp REMAP_SCHEMA=orcldev:orcltwo
      与REMAP_SCHEMA类似的参数选项,如REMAP_TABLESPACE将源表空间的所有对象导入目标表空间。

  7、REMAP_TABLE参数
    将源表数据映射到不同的目标表中
    eg:impdp orcldev/oracle DIRECTORY=backup_pathdumpfile=oracldev.dmp remap_table=TAB_TEST:TEST_TB
    数据导入到TEST_TB表中,但是该表的索引等信息并没有相应的创建,需要手工初始化。
  8、REMAP_DATAFILE参数

  语法:REMAP_DATAFILE=source_datafile:target_datafile
    Oracle_Online:
     Remapping datafiles is useful when youmove databases between platforms that have different file naming conventions.The source_datafile and target_datafile names should be exactly as you wantthem to appear in the SQL statements where they are referenced. Oraclerecommends that you enclose datafile names in quotation marks to eliminateambiguity on platforms for which a colon is a valid file specificationcharacter.

  9、PARALLEL参数
    使用PARALLEL参数可以提高 数据泵还原的效率,前提是必须有多个expdp的文件,如expdp01.dmp,expdp02.dmp,expdp03dmp等等,不然会有问题。运行impdp命令时,会先启动一个WOrKER进程将METADATA导入,然后再启动多个WORKER进程将数据以及其他对象导入,所以在前期只会看到一个WOrKER在导入METADATA,而且IMPDP也需要DUMP文件是多个,也可以使用%U来进行导入。
    eg: impdp orcldev/oracledirectory=backup_path dumpfile=orcldev_schema_%U.dmp schemas=orcldev parallel=4

    备注:

而在11GR2后EXPDP和IMDP的WORKER进程会在多个INSTANCE启动,所以DIRECTORY必须在共享磁盘上,如果没有设置共享磁盘还是指定cluster=no来防止报错。


  10、CONTENT参数
    CONTENT参数选项有ALL,DATA_ONLY和METADATA_ONLY,默认情况是ALL。可以选择只导入元数据或者是只导入数据。
    EG:impdporcldev/oracle directory=backup_path dumpfile=orcldev_schema.dmpschemas=orcldev CONTENT=DATA_ONLY

  
  11、include、exclude、parfile、query和version参数选项与EXPDP命令的参数选项一致。



















































































































































































































以上是关于Oracle数据库备份详解的主要内容,如果未能解决你的问题,请参考以下文章

Oracle闪回技术详解

Oracle闪回技术详解

Oracle 11g 数据泵技术详解(expdp impdp)

oracle exp/imp 详解

Oracle RMAN备份恢复1-基础篇_超越OCP精通Oracle视频教程培训17

oracle recyclebin详解