DM7使用脱机工具dmbackup进行数据库备份

使用脱机工具dmbackup进行数据库备份,语法如下:

DMBACKUP KEYWORD=value

确认DM数据库服务器已停止后,在Windows“命令提示符”窗口中输入带参数的DMBACKUP命令启动该工具,参数说明见下表。

[dmdba@shard1 dmdbms]$ dmbackup help
Format:  ./dmbackup  KEYWORD=value

Example: ./dmbackup  INI_PATH=/opt/dm7data/dameng/dm.ini NAME=test.bak

Imperative Argument: INI_PATH NAME

Keyword             explain(default value)
--------------------------------------------------------------------------------
INI_PATH            the path of dmserver's dm.ini file
BASE_BAK_DIR        the path with increment backup Format (dir1,dir2,dir3,...)
NAME                backup name
TYPE                backup type (FULL, INCREMENT), Default(FULL)
BAKFILE_PATH        the file path of backup file
DESCRIBE            the description of backup
MAXSIZE             the max value capability of the single backup file Default(33MB~2048MB, default(2048))
ENCRYPT             encrypt type (0, 1, 2), Default(0)
PASSWORD            encrypt key
ENCRYPT_NAME        encrypt algorithm name
COMPRESS            compress level(0-9), 0:no compress, 9:high compress, Default(1)
PARALLEL            parallel mapping the file path
SHOW_BAK_INFO       the directory of backup Format (dir1,dir2,dir3,...)
HELP                output help info

INI_PATH:配置文件路径,最大长度为256字节,若未设置SHOW_BAK_INFO参数,则为必选参数
NAME:备份名,最大长度为128字节,若未设置SHOW_BAK_INFO参数,则为必选参数
BAKFILE_PATH:备份文件路径,可选参数
TYPE:备份类型,默认为完全备份,FULL 表示完全备份,INCREMENT表示增量备份,可选参数
BASE_BAK_DIR:增量备份时的指定基备份目录,可选参数,仅对增量备份有效
DESCRIBE:备份文件描述,即备注信息,注意:描述如果含有空格,需要用双引号括起来,否则会报错,可选参数
MAXSIZE:备份文件最大大小,取值范围为:33-2048,单位为M(兆),默认为2048,可选参数
ENCRYPT:加密类型,0表示不加密,1表示简单加密,2表示复杂加密,可选参数
PASSWORD:加密密码,长度最大为128字节,如果选择不加密,此处不必指定,可选参数
ENCRYPT_NAME:加密算法,可通过查看动态视图v$CIPHERS获取加密算法信息。不支持xxx_cbc和xxx_ecb算法。可选参数
COMPRESS:指定备份为压缩,如果不选择,则表示不压缩,可选参数
PARALLEL:指定并行备份映射文件完整路径,如: E:\bak.parallel。可选参数
SHOW_BAK_INFO:指定备份存放的目录,可以指定1~16个,可选参数
HELP:打印帮助信息
例1,对名为jydm数据库执行一个完全备份。

[dmdba@shard1 backup]$ dmbackup type=full ini_path=/dm_home/dmdba/dmdbms/data/jydm/dm.ini name=jydm
backup V7.1.6.46-Build(2018.02.08-89107)ENT
file dm.key not found, use default license!
start backup tablespace: SYSTEM.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF, pages: 2944
end backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
end backup tablespace: SYSTEM.

start backup tablespace: ROLL.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
end backup tablespace: ROLL.

start backup tablespace: MAIN.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
end backup tablespace: MAIN.

start backup tablespace: BOOKSHOP.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
end backup tablespace: BOOKSHOP.

start backup tablespace: DMHR.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
end backup tablespace: DMHR.

start backup tablespace: USERS.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/users01.dbf, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/users01.dbf
end backup tablespace: USERS.

start backup tablespace: SYSAUX.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSAWR.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSAWR.DBF
end backup tablespace: SYSAUX.

start backup tablespace: FG_PERSON.
start backup file: /dm_home/dmdba/dmdbms/data/jydm/FG_PERSON.DBF, pages: 0
end backup file: /dm_home/dmdba/dmdbms/data/jydm/FG_PERSON.DBF
end backup tablespace: FG_PERSON.

backup fun end time used: 13128.406(ms)
backup successfully!
backup time used: 19512.280(ms)

在没有指定bakfile_path参数指定备份文件目录时,会在默认的备份目录中生成备份文件。

[dmdba@shard1 bak]$ pwd
/dm_home/dmdba/dmdbms/data/jydm/bak
[dmdba@shard1 bak]$ ls -lrt
-rw-r--r-- 1 dmdba dinstall 301989888 7月  11 19:20 DB_jydm_20200711192046000434.bak

DM7使用联机执行SQL语句进行备份还原

使用联机执行SQL语句进行备份还原
1. 数据备份
1.1 备份数据库
系统提供联机SQL命令执行数据库备份。语法如下:

BACKUP DATABASE [FULL |INCREMENT WITH BACKUPDIR ‘< 备份目录>’{,‘< 备份目录>’}] TO < 备份名> [BAKFILE ‘< 备份路径>’]
[BACKUPINFO ‘< 备份描述>’] [MAXSIZE < 限制大小>] [IDENTIFIED BY < 密钥>[WITH ENCRYPTION][ENCRYPT WITH < 加密算法>]]
[COMPRESSED [LEVEL < 压缩级别>]][WITHOUT LOG][PARALLEL ‘< 并行映射文件路径>’];
FULL|INCREMENT:备份类型,FULL表示完全备份,INCREMENT表示增量备份。
< 备份目录>:基础备份所在的目录,最大长度为256个字节。
< 备份名>:备份的名称,在DMDBMS中以此标识不同的备份。
< 备份路径>:备份文件存放的完整路径。
< 备份描述>:备份的描述信息。
< 限制大小>:最大备份文件大小,以M为单位,取值范围33M~2G。
< 密钥>:备份加密通过使用IDENTIFIED BY来指定密码。

WITH ENCRYPTION :用来指定加密类型,0表示不加密,1表示简单加密,2表示复杂加密。
COMPRESSED:用来指定是否压缩级别,取值范围1~9。如果使用0,表示不压缩,1表示压缩快、但是压缩比低,9表示压缩慢、但是压缩比高。
WITHOUT LOG:联机数据库备份是否备份日志。如果使用,则表示不备份,否则表示备份。
PARALLEL:用来指定并行映射文件的完整路径。
PARALLEL:用来指定并行映射文件的完整路径。
< 并行映射文件路径>:并行映射文件的完整路径,最大长度为256个字节,如: E:\bak.parallel;并行映射文件的书写请参考4.2.3.2。
< 加密算法>:加密算法具体见《DM7_SQL语言使用手册》相关章节,但是不支持xxx_cbc和xxx_ecb算法加密。缺省情况下,算法为AES256_CFB。

备份成功后会在备份默认目录下生成备份文件,若没有指定备份文件名,则系统自动生成以“数据库名_日期.bak”格式的备份文件,通过该备份文件可以进行数据库还原。例如,执行数据库备份,备份类型为完全备份,备份文件名为/dm_home/dmdba/dmdbms/backup/database_full_bak.bak。

SQL> backup database full to full_bak bakfile '/dm_home/dmdba/dmdbms/backup/database_full_bak.bak';
executed successfully
used time: 00:00:09.508. Execute id is 86138.

1.2 备份用户表空间
系统提供联机SQL命令执行表空间备份,不支持对系统表空间、日志表空间、回滚表空间、临时表空间执行备份操作。语法如下:

BACKUP TABLESPACE < 表空间名> [FULL| INCREMENT WITH BACKUPDIR '< 备份目录>'{,'< 备份目录>'}] TO < 备份名>
[BAKFILE '< 备份路径>'] [BACKUPINFO '< 备份描述>'] [MAXSIZE < 限制大小>] [IDENTIFIED BY < 密钥>[WITH ENCRYPTION ]]
[COMPRESSED[LEVEL < 压缩级别>]];

例如,备份名为t1的表空间,备份类型为FULL,备份文件名为’/dm_home/dmdba/dmdbms/backup/tablespace_users.bak’。

SQL> backup tablespace users full to users_bak bakfile '/dm_home/dmdba/dmdbms/backup/tablespace_users.bak';
executed successfully
used time: 00:00:01.376. Execute id is 87164.

2. 数据还原
备份文件和待还原数据库的建库参数USE_NEW_HASH应保持一致,若取值不一致,则还原时会报错。

2.1 还原表空间
使用SQL命令对表空间进行还原。与数据库还原类似,表空间备份分为完全备份和增量备份,但表空间备份没有联机备份和脱机备份之分,表空间备份只支持联机备份。表空间还原根据不同的表空间备份类型选择不同的还原策略对表空间进行还原。与库级还原和表级还原不同,表空间还原依赖于归档日志,利用备份文件还原表空间只能还原到备份时所在数据库中,并且还原后,表空间处于最新状态。由于待还原表空间的文件名和文件数目可能与备份时的不一致,因此还原后需要更新文件系统。另外,由于从备份表空间到还原表空间的时间间隔中,系统可能累积了很多归档日志,为了保证跨表空间的对象数据同步,需要重做该表空间的所有归档日志。

系统提供联机SQL命令执行表空间还原,还原前需要将表空间置为脱机状态,不支持对系统表空间、日志表空间、回滚表空间、临时表空间执行还原操作。

RESTORE TABLESPACE < 表空间名> FROM ‘< 备份路径>’ | BACKUP < 备份文件名> [ INDENTIFIED BY < 密码>] [ WITH BACKUPDIR ‘< 备份
目录>’{,‘< 备份目录>’}][WITH ARCHIVEDIR ‘归档目录’{,’归档目录’}][DBFILE < 文件ID> TO ‘< 文件路径>’ {,DBFILE < 文件ID>
 TO ‘< 文件路径>’}] [MIRROR < 文件ID> TO‘< 文件路径>’{,MIRROR < 文件ID> TO ‘< 文件路径>’}];

< 表空间名>:需要还原的表空间名称。
< 备份路径>:备份文件存放的完整路径。
< 备份文件名>:备份的名称,在DMDBMS中以此标识不同的备份。
< 密码>:加密备份表空间时,用户设置的密码。
< 备份目录>:搜集备份文件的目录。
< 归档目录>:还原时,搜集归档文件的目录。
< 文件ID>:需要重新设置文件路径文件对应的文件号。
< 文件路径>:设置还原后,数据文件的路径。
MIRROR:要使用数据文件镜像,必须在建库时开启页校验的参数page_check。
例如,利用备份文件/dm_home/dmdba/dmdbms/backup/tablespace_users.bak还原表空间users。

SQL> alter tablespace users offline;
executed successfully
used time: 00:00:07.751. Execute id is 89303.
SQL> restore tablespace users from '/dm_home/dmdba/dmdbms/backup/tablespace_users.bak';
executed successfully
used time: 00:00:01.641. Execute id is 89348.
SQL> alter tablespace users online;
executed successfully
used time: 76.018(ms). Execute id is 89360.

对于表空间联机还原,还原前需要将表空间置为脱机状态;还原后,为了使用表空间,需要重新将表空间置为联机状态。

在表空间还原的时候,如果出现异常(如掉电),还原表空间的操作异常终止,那么表空间可能已经被损坏。这种情况下,只有再次还原才能够修复。

3. 设置备份属性
3.1 加密与压缩
备份文件中包含了数据库中的原始数据,为提高备份数据的安全性,无论是普通备份还是B树备份,DM都提供了对备份数据进行加密的功能。系统中支持简单加密和复杂加密。简单加密和复杂加密实现原理都是在备份过程中利用经典的加密算法对数据页面加密,然后将密文写入备份文件,区别在于复杂加密方式对写入备份文件的每一页数据都进行加密,而简单加密方式只是选择性地对某些页面进行加密。显然,简单加密的效率相对于复杂加密效率要高,但同时,简单加密的备份数据不如复杂加密安全。

此外,DM还支持备份数据压缩功能。压缩功能的实现能有效缩短备份文件的大小,减少所占的磁盘空间。

不论是加密还是压缩,都是在正常执行备份数据时的额外操作,与此同时,压缩和加密的备份文件用于还原时,还需要执行解压缩和解密操作,因此会对备份、还原性能造成一定的影响。系统管理员应根据实际情况,在磁盘空间利用率、备份、还原性能,以及备份数据安全性之间做权衡,确定在执行备份操作时是否需要设置压缩,加密参数。

举例说明:
(1) 联机备份数据库,并对备份数据压缩,备份文件存放路径为/dm_home/dmdba/dmdbms/backup/database_cpr.bak。

SQL> backup database full to cpr_bak bakfile '/dm_home/dmdba/dmdbms/backup/database_cpr.bak' compressed;
executed successfully
used time: 00:00:09.535. Execute id is 90807.

(2) 联机备份名为t1的表空间,备份类型为FULL,对备份数据进行简单加密,加密密码为ABCDEF123,备份文件存放路径为/dm_home/dmdba/dmdbms/backup/tablespace_users_cpr.bak。

SQL> backup tablespace users full to ts_users_cpr_bak bakfile '/dm_home/dmdba/dmdbms/backup/tablespace_users_cpr.bak' identified by ABCDEF123 with encryption 1;
executed successfully
used time: 00:00:01.386. Execute id is 91101.

(3)联机备份SYSDBA模式下的test表,对备份数据进行复杂加密,加密密码为ABCDEF123,并且对备份数据压缩。备份文件存放路径为/dm_home/dmdba/dmdbms/backup/table_t1_bak.bak。

SQL> backup table sysdba.t1 to table_t1_bak bakfile '/dm_home/dmdba/dmdbms/backup/table_t1_bak.bak' identified by ABCDEF123 with encryption 2 compressed;
executed successfully
used time: 00:00:01.121. Execute id is 91267.

3.2 并行映射文件
为了提高数据库备份性能,针对物理备份,系统提供了并行备份的功能。并行备份的核心思想是将对数据库的备份拆分为对多个表空间的备份。系统在执行备份前,将物理存储位置临近的表空间作为基本备份单位,随后同时备份不同的备份单位,从而使得系统在执行备份时,充分利用了CPU资源和磁盘组资源,达到提升备份性能的目的。利用并行备份功能,需要系统管理员配置并行映射文件,映射文件格式如下所示。映射文件配置内容与系统并行备份的性能直接相关,因此,系统管理员应在充分了解数据库中各个表空间所在磁盘的物理位置,合理设置配置文件。此外,每个备份单位设置的备份目录应尽量在不同的磁盘组,这样能保证读写文件都能充分利用磁盘IO,使备份性能最优化。

格式如下:
[表空间名,表空间名,……]=备份目录1
[表空间名,表空间名,……]=备份目录2
[表空间名,表空间名,……]=备份目录3
……
[default]=备份目录N
说明:
1. 备份目录必需是本地物理磁盘上已经存在的目录。
2. 设置表空间名必需存在,若不存在则报错。
3. 每一行只能有一个“[表空间名,表空间名……]=备份目录”项。
4. 自动忽略同一备份目录下对应的多个同名表空间名,只取其中一个。
5. 一个表空间名不能对应多个备份目录,否则报错。
6. 对于相同的备份目录,DM7自动将它们作为一个备份单位。
7. default:没有显示设置的表空间,备份数据都存放在default对应的目录下。
8. [default]行必需存在,DM7认为[default]为最后一行,不统计[default]后续行的设置。
9. 映射文件的扩展名为parallel。
10.不允许显示设置系统表空间的磁盘目录。
11.对于含有特殊字符的表空间名,比如逗号、空格、中括号、等号,系统不保证解析映射文件的正确性。举例说明:
(1)假设数据库数据分布在三个磁盘组DISK1,DISK2和DISK3中。SYSTEM,MAIN,ROLL表空间在磁盘组DISK1;TS1,TS2表空间在磁盘组DISK2;TS3表空间在DISK3,配置映射文件bak.parallel如下:

[dmdba@shard1 dmdbms]$ vi bak.parallel
[DMHR,USERS]=/dm_home/dmdba/dmdbms/backup1
[FG_PERSON]=/dm_home/dmdba/dmdbms/backup2
[default]=/dm_home/dmdba/dmdbms/backup3

从上述配置内容可知,TS1,TS2作为一个备份单位,备份数据存储在D:\DAMENG_1中;TS3作为一个备份单位,备份数据存储在C:\DAMENG_2中;系统表空间作为一个备份单位,备份数据存储在E:\DAMENG目录中。

(2) 利用配置映射文件/dm_home/dmdba/dmdbms/bak.parallel执行联机并行备份操作,主备份文件为/dm_home/dmdba/dmdbms/parallel.bak,各个子备份分别在/dm_home/dmdba/dmdbms/backup1,/dm_home/dmdba/dmdbms/backup2和/dm_home/dmdba/dmdbms/backup3目录中。

SQL> backup database full to para_bak bakfile '/dm_home/dmdba/dmdbms/parallel.bak' parallel '/dm_home/dmdba/dmdbms/bak.parallel';
executed successfully
used time: 00:00:08.585. Execute id is 93997.

[dmdba@shard1 dmdbms]$ ls -lrt parallel*
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:30 parallel.bak
[dmdba@shard1 dmdbms]$ ls -lrt backup1/
总用量 1512
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:30 DB_jydm_20200701173032000519_1.bak
[dmdba@shard1 dmdbms]$ ls -lrt backup2/
总用量 28
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:30 DB_jydm_20200701173032000519_1.bak
[dmdba@shard1 dmdbms]$ ls -lrt backup3/
总用量 306072
-rw-r--r-- 1 dmdba dinstall 335544320 7月   1 17:30 DB_jydm_20200701173032000519_1.bak

(3)利用配置映射文件/dm_home/dmdba/dmdbms/bak.parallel执行脱机并行全量备份操作,主备份文件为/dm_home/dmdba/dmdbms/parallel02.bak,各个子备份分别在各个子备份分别在/dm_home/dmdba/dmdbms/backup1,
/dm_home/dmdba/dmdbms/backup2和/dm_home/dmdba/dmdbms/backup3目录中。

[dmdba@shard1 dmdbms]$ dmbackup type=full ini_path=/dm_home/dmdba/dmdbms/data/jydm/dm.ini name=test parallel=/dm_home/dmdba/dmdbms/bak.parallel
backup V7.1.6.46-Build(2018.02.08-89107)ENT
file dm.key not found, use default license!
[channel<5912>]start backup tablespaces group to directory /dm_home/dmdba/dmdbms/backup2.
[channel<5912>]start backup tablespace: FG_PERSON.
[channel<5912>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/FG_PERSON.DBF, pages: 0
[channel<5911>]start backup tablespaces group to directory /dm_home/dmdba/dmdbms/backup1.
[channel<5911>]start backup tablespace: DMHR.
[channel<5911>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF, pages: 0
[channel<5912>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/FG_PERSON.DBF
[channel<5912>]end backup tablespace: FG_PERSON.

[channel<5912>]end backup tablespaces group.

[channel<5913>]start backup tablespaces group to directory /dm_home/dmdba/dmdbms/backup3.
[channel<5913>]start backup tablespace: SYSTEM.
[channel<5913>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF, pages: 2944
[channel<5911>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
[channel<5911>]end backup tablespace: DMHR.

[channel<5911>]start backup tablespace: USERS.
[channel<5911>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/users01.dbf, pages: 0
[channel<5911>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/users01.dbf
[channel<5911>]end backup tablespace: USERS.

[channel<5911>]end backup tablespaces group.

[channel<5913>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
[channel<5913>]end backup tablespace: SYSTEM.

[channel<5913>]start backup tablespace: ROLL.
[channel<5913>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF, pages: 0
[channel<5913>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
[channel<5913>]end backup tablespace: ROLL.

[channel<5913>]start backup tablespace: MAIN.
[channel<5913>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF, pages: 0
[channel<5913>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
[channel<5913>]end backup tablespace: MAIN.

[channel<5913>]start backup tablespace: BOOKSHOP.
[channel<5913>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF, pages: 0
[channel<5913>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
[channel<5913>]end backup tablespace: BOOKSHOP.

[channel<5913>]start backup tablespace: SYSAUX.
[channel<5913>]start backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSAWR.DBF, pages: 0
[channel<5913>]end backup file: /dm_home/dmdba/dmdbms/data/jydm/SYSAWR.DBF
[channel<5913>]end backup tablespace: SYSAUX.

[channel<5913>]end backup tablespaces group.

backup fun end time used: 6701.450(ms)
backup successfully!
backup time used: 13028.166(ms)

[dmdba@shard1 dmdbms]$ ls -lrt backup3/
总用量 529716
-rw-r--r-- 1 dmdba dinstall 335544320 7月   1 17:30 DB_jydm_20200701173032000519_1.bak
-rw-r--r-- 1 dmdba dinstall 234881024 7月   1 17:35 DB_jydm_20200701173535000023_1.bak
[dmdba@shard1 dmdbms]$ ls -lrt backup2/
总用量 56
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:30 DB_jydm_20200701173032000519_1.bak
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:35 DB_jydm_20200701173535000023_1.bak
[dmdba@shard1 dmdbms]$ ls -lrt backup1/
总用量 3024
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:30 DB_jydm_20200701173032000519_1.bak
-rw-r--r-- 1 dmdba dinstall 33554432 7月   1 17:35 DB_jydm_20200701173535000023_1.bak

DM7使用DMRMAN执行表空间还原

使用DMRMAN执行表空间还原
介绍表空间的脱机还原。表空间的脱机还原除了支持联机还原的所有功能外,也放开了SYSTEM和ROLL表空间还原操作。与联机表空间还原不同的是,脱机表空间还原不需要事先置目标表空间为OFFLINE状态。语法如下:

RESTORE DATABASE '' TABLESPACE < 表空间名>
[DATAFILE< <文件编号> {,< 文件编号>} | '< 文件路径>' {,'< 文件路径>'}>]
FROM BACKUPSET '< 备份集目录>'
[DEVICE TYPE DISK|TAPE[PARMS '< 介质参数>']]
[IDENTIFIED BY < 密码> [ENCRYPT WITH < 加密算法>]]
[WITH BACKUPDIR '< 基备份集搜索目录>'{,'< 基备份集搜索目录>'}]
[]
[MAPPED FILE '< 映射文件>'][TASK THREAD < 任务线程数>] [NOT PARALLEL]
[UNTIL TIME '< 时间串>'] [UNTIL LSN ];
 ::=
WITH ARCHIVEDIR '< 归档日志目录>'{,'< 归档日志目录>'}

DATABASE:指定还原库目标的dm.ini文件路径。
TABLESPACE:指定还原的表空间,可以是用户表空间,也可以是SYSTEM系统表空间和ROLL回滚表空间。
DATAFILE:还原指定的数据文件。可以指定数据文件编号或数据文件路径。文件编号,对应动态视图V$DATAFILE中ID列的值;文件路径,对应动态视图V$DATAFILE中PATH或者MIRROR_PATH列的值,也可以仅指定数据文件名称(相对路径),与表空间中数据文件匹配时,会使用SYSTEM目录补齐。
BACKUPSET:指定用于还原目标数据库的备份集目录。若指定为相对路径,会在默认备份目录下搜索备份集。
DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认为DISK。DISK表示备份集存储介质为磁盘,TAPE表示存储介质为磁带。
PARMS:介质参数,供第三方存储介质(TAPE类型)管理使用。
IDENTIFIED BY:指定备份时使用的加密密码,供还原过程解密使用。
ENCRYPT WITH:指定备份时使用的加密算法,供还原过程解密使用,若未指定,则使用默认算法。
WITH BACKUPDIR:指定备份集搜索目录。
MAPPED FILE:指定存放还原目标路径的文件,参见3.3.5.2.1 数据库还原。当< 备份集目录>和< 映射文件>指定的路径不一致时,以< 映射文件>指定的路径为主
TASK THREAD:指定还原过程中用于处理解压缩和解密任务的线程个数。若未指定,则默认为4;若指定为0,调整为1;若指定超过当前系统主机核数,则调整为当前核数。
NOT PARALLEL:指定并行备份集使用非并行方式还原。对于非并行备份集,不论是否指定该关键字,均采用非并行还原。
WITH ARCHIVEDIR:本地归档日志搜索目录,若未指定,则仅使用目标库配置的第一个本地归档。
UNTIL TIME:恢复数据库到指定的时间点。
UNTIL LSN:恢复数据库到指定的LSN。

使用说明:
1. 表空间还原不能是TEMP表空间,指定文件还原也不能为TEMP表空间中文件。
2. 表空间还原要求还原目标库与备份库为同一个库,且若还原目标库中SYSTEM表空间没有故障且还原目标表空间不是SYSTEM表空间的话,则要求目标库校验通过,比如加密校验和日志校验等;否则将使用备份集中信息与当前的进行校验。
3. 还原目标库不能为已经执行过restore,但是未指定过recover的库。
4. SYSTEM表空间和ROLL表空间不允许指定UNTIL LSN或者UNTIL TIME还原;其他用户表空间可以。若未指定UNTIL TIME或者UNTIL LSN,则均还原到最新状态。使用UNTIL TIME(或者UNTIL LSN)的同时不能指定DATAFILE还原,否则报语法错误。
5. 处于RES_OFFLINE或CORRUPT状态的表空间不允许指定表空间中数据文件还原。
6. 整个还原过程中不会修改数据库本身状态或者调整CKPT_LSN。
7. 不管是RAC环境,还是单机环境,若异常退出,需手动指定各节点归档修复后,使用各节点完整的归档日志执行还原恢复;否则,将可能无法恢复到最新。
8. 异常退出库指定UNTIL TIME或者UNTIL LSN还原失效,因为库故障重启时会执行故障修复,UNTIL失效,表空间仍会恢复到最新状态。
9. 若目标库中SYSTEM表空间故障,则必须优先还原SYSTEM表空间。在DMRAC环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。对于两节点RAC01、RAC02,表空间的还原操作如下:

RMAN>backup database '/home/DMDBMS/rac/dm01.ini' backupset '/home/DMDBMS/bak/rman_dm01_01';
RMAN>restore database'/home/DMDBMS/rac/dm01.ini' tablespace main from backupset '/home/DMDBMS/bak/rman_dm01_01'
 with archivedir'/home/DMDBMS/rac/arch_dest1';

10. 如果SYSTEM表空间处于ONLINE/OFFLINE状态且文件丢失,则必须要通过库还原修复,不支持对其执行表空间还原。

下面的例子将对RAC环境中的TS_FOR_DBF表空间执行还原
1.对数据库执行备份

SQL> backup database full backupset '/dm7/backup/db_bak_for_tbs';
executed successfully
used time: 00:00:01.217. Execute id is 11.

2.在DMRAC环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。对于两节点RAC01、RAC02,表空间的还原操作如下:

[root@dmrac1 backup]# service DmServicerac1 stop
Stopping DmServicerac1: [ OK ]

[root@dmrac2 rac1_config]# service DmServicerac2 stop
Stopping DmServicerac2: [ OK ]



RMAN> restore database 'dm7/data/rac0_config/dm.ini' tablespace ts_for_dbf from backupset '/dm7/backup/db_bak_for_tbs' with archivedir '/dm7/data/rac0_arch','/dm7/data/rac1_arch' until;
restore database '/dm7/data/rac0_config/dm.ini' tablespace ts_for_dbf from backupset '/dm7/backup/db_bak_for_tbs' with archivedir '/dm7/data/rac0_arch' , '/dm7/data/rac1_arch' ;
file dm.key not found, use default license!
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
EP [1] is checking....
RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini] CHECK......
EP[0] max_lsn: 92312
RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], dbf collect......
RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], ts status and dbf refresh ......
RESTORE BACKUPSET [/dm7/backup/db_bak_for_tbs] START......
total 2 packages processed...
RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], UPDATE ctl file......
EP 0's ckpt_lsn = 90803
min_ckpt_lsn = 90803
The RAC redo archive log 1 ptx
The RAC redo archive log 2 ptx
The RAC redo archive log 3 ptx
The RAC redo archive log 4 ptx
The RAC redo archive log 5 ptx
The RAC redo archive log 6 ptx
The RAC redo archive log 7 ptx
The RAC redo archive log 8 ptx
The RAC redo archive log 9 ptx
The RAC redo archive log 10 ptx
The RAC redo archive log 11 ptx
The RAC redo archive log 12 ptx
The RAC redo archive log 13 ptx
The RAC redo archive log 14 ptx
The RAC redo archive log 15 ptx
The RAC redo archive log 16 ptx
The RAC redo archive log 17 ptx
The RAC redo archive log 18 ptx
The RAC recover total redo 18 ptx
EP[0] Recover LSN from 90803 to 92307.
EP[1] Recover LSN from 92310 to 92309.
Recover from archive log finished, time used:0.004s.
total 6 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 4423.437(ms)

3.启动RAC实例

[root@dmrac1 data]# service DmServicerac1 start
Starting DmServicerac1: [ OK ]

[root@dmrac2 rac1_config]# service DmServicerac2 start
Starting DmServicerac2: [ OK ]