DM7使用DMRMAN工具查看备份集

使用DMRMAN工具查看备份集
1. 概述
DMRMAN中使用SHOW命令可以查看备份集的信息,包括:
1. 备份集的数据库信息
2. 备份集的元信息
3. 备份集中文件信息(如备份数据文件DBF和备份片文件)
4. 备份集中表信息(仅对表备份集有效)
若指定具体备份集目录,则会生成相应的备份集链表信息。
语法如下:

SHOW BACKUPSET '< 备份集目录>' [][RECURSIVE] [] []
[];
|SHOW BACKUPSETS [] 
[] [] [];
::= DATABASE '' |
WITH BACKUPDIR '< 备份集搜索目录>'{,'< 备份集搜索目录>'} |
DATABASE '' WITH BACKUPDIR '< 备份集搜索目录>'{, '< 备份集搜索目录>'}
::= DEVICE TYPE DISK|TAPE [PARMS '< 介质参数>']
::= INFO DB[,META][,FILE] [,TABLE]
::= USE DB_MAGIC 
::= TO '< 输出文件路径>' [FORMAT TXT | FORMAT XML]

BACKUPSET:指定显示目标备份集信息,若同时指定RECURSIVE,则显示以该备份集为最新备份集递归显示完整的备份集链表;否则,仅显示指定备份集本身信息。若为完全备份,则仅显示该备份集自身信息。

DATABASE:指定数据库dm.ini文件路径,若指定,则该数据库的默认备份目录作为备份集搜索目录之一。

WITH BACKUPDIR:备份集搜索目录,最大长度为256个字节。若查看完全备份的备份集信息且指定的备份集路径为相对路径可通过设置此参数搜索备份集;若查看的为增量备份集信息,设置该参数除上述功能外还用于搜索基备份集。

: 指定介质类型和介质参数,介质类型支持DISK和TAPE,默认DISK。

:指定显示备份集信息内容,可以组合指定,若未指定,则显示全部。具体说明如下:
1. DB 表示仅显示备份集的数据库信息;
2. META表示仅显示备份集的元信息;
3. FILE表示仅显示备份集中文件信息,如备份数据文件DBF和备份片文件;
4. TABLE 表示显示备份集中表信息,仅对表备份集有效。

:SHOW BACKUPSETS可以指定仅显示指定DB_MAGIC即指定数据库的备份集信息。

:指定备份集信息输出的目标文件路径,若不指定,仅控制台打印。文件格式有两种类型,TXT和XML格式,默认是TXT格式。不支持输出到DMASM文件系统中。指定的文件不能为已经存在的文件,否则报错。

2. 备份信息查看
SHOW命令支持查看单个备份集信息也支持批量查看多个备份集的信息。本节主要举例说明如何执行简单的常用的查看备份集信息操作,包括:
1. 查看指定的备份集信息
2. 批量显示备份集信息
3. 查看指定数据库所有备份集的信息
4. 指定显示部分备份集信息
5. 以xml格式输出备份信息到文件

1.查看指定的备份集信息
SHOW BACKUPSET…命令用于显示特定的备份集信息,每次只能显示一个备份集。当仅需要查看某个特定备份集信息时可以使用此命令。执行
步骤如下:

[dmdba@dmrac1 bin]$ dmrman
dmrman V7.1.6.46-Build(2018.02.08-89107)ENT
RMAN> show backupset '/dm7/backup/db_rac_bak';
show backupset '/dm7/backup/db_rac_bak';




system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK
backupset description:
backupset ID :         1109894076
parent backupset ID:     -1
META file size :       293376
compressed level:      0
encrypt type:          0
parallel num:          4
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51298
END_SEQ:               15673
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         51298
RAC end seq:         15673
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         51235
RAC end seq:         1869
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak
backupset name:        db_rac_bak
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |8         |db_rac_bak.bak                                          |LOG


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time
1         |                                 |3072                |51286               |15668               |8                   |51298               |15673               |0000-00-00 00:00:00 |0000-00-00 00:00:00




system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_2
backupset description:
backupset ID :         66095816
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_2
backupset name:        db_rac_bak_2
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |85        |db_rac_bak_2.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
3         |4         |MAIN                             |0         |+DMDATA/data/rac/main.dbf        |                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_3
backupset description:
backupset ID :         -1127735780
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_3
backupset name:        db_rac_bak_3
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |13        |db_rac_bak_3.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
4         |5         |TS_FOR_DBF                       |0         |+DMDATA/data/rac/ts_for_dbf_01.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_0
backupset description:
backupset ID :         -287144791
parent backupset ID:     1109894076
META file size :       61952
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_0
backupset name:        db_rac_bak_0
backup data file num:  2
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |5005      |db_rac_bak_0.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
1         |0         |SYSTEM                           |0         |+DMDATA/data/rac/system.dbf      |                                 |134217728
5         |5         |TS_FOR_DBF                       |1         |+DMDATA/data/rac/ts_for_dbf_02.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_1
backupset description:
backupset ID :         -1045365472
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_1
backupset name:        db_rac_bak_1
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |20997     |db_rac_bak_1.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
2         |1         |ROLL                             |0         |+DMDATA/data/rac/roll.dbf        |                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time




show backupsets successfully.
time used: 14.325(ms)

显示的备份集信息分为三类,依次是元数据信息(META INFO)、文件信息(FILE INFO)和数据库信息(DB INFO)。用户可根据自身需要只显示部分备份集信息,本节下文中会有介绍。

2.批量显示备份集信息
SHOW BACKUPSETS…命令用于批量显示指定搜索目录下的备份集信息。如需要查看的多个备份集不在同一个目录下,可通过多次指定WITH BACKUPDIR参数同时查看所有的备份集。操作如下:

RMAN> backup database '/dm7/data/rac0_config/dm.ini';
backup database '/dm7/data/rac0_config/dm.ini';
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
EP [1] is checking....
EP[0] max_lsn: 58852
EP[0] adjust cur_lsn from [58852] to [58867]
BACKUP DATABASE [rac], execute......
CMD CHECK LSN......
BACKUP DATABASE [rac], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
DBF BACKUP MAIN......
BACKUPSET [+DMDATA/data/rac/bak/DB_rac_FULL_20200608_160009_000828] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 16303.415(ms)
RMAN> backup database '/dm7/data/rac0_config/dm.ini' full backupset '/dm7/backup/db_rac_full_bak_2020060801';
backup database '/dm7/data/rac0_config/dm.ini' full backupset '/dm7/backup/db_rac_full_bak_2020060801';
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
EP [1] is checking....
EP[0] max_lsn: 58852
EP[0] adjust cur_lsn from [58852] to [58867]
BACKUP DATABASE [rac], execute......
CMD CHECK LSN......
BACKUP DATABASE [rac], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm7/backup/db_rac_full_bak_2020060801] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 3570.343(ms)


RMAN> show backupsets with backupdir '+DMDATA/data/rac/bak','/dm7/backup';
show backupsets with backupdir '+DMDATA/data/rac/bak' , '/dm7/backup';
CMD END.CODE:[0]








system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_FULL_rac_20200608_160623_000096
backupset description:
backupset ID :         186522112
parent backupset ID:     -1
META file size :       74240
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1591603580
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          offline
backup type:           full
without log:           FALSE
START_LSN:             58853
START_SEQ:             16611
END_LSN:               58867
END_SEQ:               16610
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-06-08 16:06:24
min trx start lsn:     58853
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       58853
RAC begin seq:       16611
RAC end lsn:         58867
RAC end seq:         16610
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       58868
RAC begin seq:       2492
RAC end lsn:         58867
RAC end seq:         2491
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_full_bak_2020060801
backupset name:        db_rac_full_bak_2020060801
backup data file num:  5
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |26103     |db_rac_full_bak_2020060801.bak                          |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
1         |0         |SYSTEM                           |0         |+DMDATA/data/rac/system.dbf      |                                 |134217728
2         |1         |ROLL                             |0         |+DMDATA/data/rac/roll.dbf        |                                 |134217728
3         |4         |MAIN                             |0         |+DMDATA/data/rac/main.dbf        |                                 |134217728
4         |5         |TS_FOR_DBF                       |0         |+DMDATA/data/rac/ts_for_dbf_01.dbf|                                 |134217728
5         |5         |TS_FOR_DBF                       |1         |+DMDATA/data/rac/ts_for_dbf_02.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_FULL_rac_20200608_160009_000828
backupset description:
backupset ID :         1835676274
parent backupset ID:     -1
META file size :       74240
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1591603207
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          offline
backup type:           full
without log:           FALSE
START_LSN:             58853
START_SEQ:             16611
END_LSN:               58867
END_SEQ:               16610
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-06-08 16:00:17
min trx start lsn:     58853
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       58853
RAC begin seq:       16611
RAC end lsn:         58867
RAC end seq:         16610
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       58868
RAC begin seq:       2492
RAC end lsn:         58867
RAC end seq:         2491
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: +DMDATA/data/rac/bak/DB_rac_FULL_20200608_160009_000828
backupset name:        DB_rac_FULL_20200608_160009_000828
backup data file num:  5
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |26103     |DB_rac_FULL_20200608_160009_000828.bak                  |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
1         |0         |SYSTEM                           |0         |+DMDATA/data/rac/system.dbf      |                                 |134217728
2         |1         |ROLL                             |0         |+DMDATA/data/rac/roll.dbf        |                                 |134217728
3         |4         |MAIN                             |0         |+DMDATA/data/rac/main.dbf        |                                 |134217728
4         |5         |TS_FOR_DBF                       |0         |+DMDATA/data/rac/ts_for_dbf_01.dbf|                                 |134217728
5         |5         |TS_FOR_DBF                       |1         |+DMDATA/data/rac/ts_for_dbf_02.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK
backupset description:
backupset ID :         1109894076
parent backupset ID:     -1
META file size :       293376
compressed level:      0
encrypt type:          0
parallel num:          4
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51298
END_SEQ:               15673
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         51298
RAC end seq:         15673
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         51235
RAC end seq:         1869
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak
backupset name:        db_rac_bak
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |8         |db_rac_bak.bak                                          |LOG


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time
1         |                                 |3072                |51286               |15668               |8                   |51298               |15673               |0000-00-00 00:00:00 |0000-00-00 00:00:00




system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_2
backupset description:
backupset ID :         66095816
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_2
backupset name:        db_rac_bak_2
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |85        |db_rac_bak_2.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
3         |4         |MAIN                             |0         |+DMDATA/data/rac/main.dbf        |                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_3
backupset description:
backupset ID :         -1127735780
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_3
backupset name:        db_rac_bak_3
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |13        |db_rac_bak_3.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
4         |5         |TS_FOR_DBF                       |0         |+DMDATA/data/rac/ts_for_dbf_01.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_0
backupset description:
backupset ID :         -287144791
parent backupset ID:     1109894076
META file size :       61952
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_0
backupset name:        db_rac_bak_0
backup data file num:  2
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |5005      |db_rac_bak_0.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
1         |0         |SYSTEM                           |0         |+DMDATA/data/rac/system.dbf      |                                 |134217728
5         |5         |TS_FOR_DBF                       |1         |+DMDATA/data/rac/ts_for_dbf_02.dbf|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time






system path:           +DMDATA/data/rac
db magic:              -991931850
permanent magic:       450923536
rac node:              2
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         rac
backup name:           DB_RAC_BAK_1
backupset description:
backupset ID :         -1045365472
parent backupset ID:     1109894076
META file size :       57856
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1590824489
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
START_LSN:             51236
START_SEQ:             1870
END_LSN:               51235
END_SEQ:               1869
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-05-30 15:41:35
min trx start lsn:     49398
min exec ver:          0x0701060C
pkg size:              0x02000000



RAC EP:            0
RAC status:          OK
RAC begin lsn:       51287
RAC begin seq:       15668
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1

RAC EP:            1
RAC status:          OK
RAC begin lsn:       51236
RAC begin seq:       1870
RAC end lsn:         -1
RAC end seq:         -1
RAC base begin lsn:  -1
RAC base begin seq:  -1
RAC base end lsn:    -1
RAC base end seq:    -1


backupset directory: /dm7/backup/db_rac_bak/db_rac_bak_1
backupset name:        db_rac_bak_1
backup data file num:  1
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |20997     |db_rac_bak_1.bak                                        |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
2         |1         |ROLL                             |0         |+DMDATA/data/rac/roll.dbf        |                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time








show backupsets successfully.
time used: 18.070(ms)

3.查看指定数据库所有备份集的信息
如果指定的备份搜索目录下包含不同数据库的备份集,而我们只想查看某个特定数据库的所有备份集信息,此时可以使用SHOW BACKUPSETS…USE DB_MAGIC命令实现。具体操作如下:

1)备份不同的数据库到不同的目录下。

RMAN> backup database '/dm_home/dmdbms/data/dmks1/dm.ini' backupset '/dm_home/dmdbms/data/bak/db_dmks1_bak_2020060801';
backup database '/dm_home/dmdbms/data/dmks1/dm.ini' backupset '/dm_home/dmdbms/data/bak/db_dmks1_bak_2020060801';
file dm.key not found, use default license!
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running...[4].
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running...[3].
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running...[2].
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running...[1].
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running...[0].
checking if the database under system path [/dm_home/dmdbms/data/dmks1] is running, write dmrman info.
EP[0] max_lsn: 61665
BACKUP DATABASE [dmks1], execute......
CMD CHECK LSN......
BACKUP DATABASE [dmks1], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm_home/dmdbms/data/bak/db_dmks1_bak_2020060801] END, CODE [0]......
META GENERATING......
total 7 packages processed...
total 7 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8043.221(ms)


RMAN> backup database '/dm_home/dmdbms/data/dmks2/dm.ini' backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801';
backup database '/dm_home/dmdbms/data/dmks2/dm.ini' backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801';
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running...[4].
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running...[3].
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running...[2].
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running...[1].
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running...[0].
checking if the database under system path [/dm_home/dmdbms/data/dmks2] is running, write dmrman info.
EP[0] max_lsn: 33904
BACKUP DATABASE [dmks2], execute......
CMD CHECK LSN......
BACKUP DATABASE [dmks2], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm_home/dmdbms/backup/db_dmks2_bak_2020060801] END, CODE [0]......
META GENERATING......
total 7 packages processed...
total 7 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8047.711(ms)

2) 查看指定数据库备份集的信息,获取DB_MAGIC信息。

RMAN> show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801';
show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801';




system path:           /dm_home/dmdbms/data/dmks2
db magic:              1486708862
permanent magic:       1155586847
rac node:              1
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             8 KB
extent size:           16
case sensitive:        1
log page size:         512 B
unicode_flag/charset:  0
data version:          0x7000A
sys version:           V7.1.6.46-Build(2018.02.08-89107)ENT
enable policy:         0
archive flag:          0
blank_pad_mode:        0
crc_check:             TRUE


backupset sig:         BA
backupset version:     4009
database name:         dmks2
backup name:           DB_FULL_dmks2_20200608_165451_000348
backupset description:
backupset ID :         -479813328
parent backupset ID:     -1
META file size :       66048
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1591606486
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          offline
backup type:           full
without log:           FALSE
START_LSN:             33905
START_SEQ:             14010
END_LSN:               33904
END_SEQ:               14009
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-06-08 16:54:53
min trx start lsn:     33905
min exec ver:          0x0701060C
pkg size:              0x02000000


backupset directory: /dm_home/dmdbms/backup/db_dmks2_bak_2020060801
backupset name:        db_dmks2_bak_2020060801
backup data file num:  3
backup piece num:      1


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |5606      |db_dmks2_bak_2020060801.bak                             |DATA


$file_seq |$group_id |$group_name                      |$file_id  |$file_path                       |$mirror_path                     |$file_len
1         |0         |SYSTEM                           |0         |/dm_home/dmdbms/data/dmks2/SYSTEM.DBF|                                 |22020096
2         |1         |ROLL                             |0         |/dm_home/dmdbms/data/dmks2/ROLL.DBF|                                 |134217728
3         |4         |MAIN                             |0         |/dm_home/dmdbms/data/dmks2/MAIN.DBF|                                 |134217728


$file_seq |$file_path                       |$file_len           |$begin_lsn          |$begin_seqno        |$begin_rpag_off     |$end_lsn            |$end_seqno          |$create_time        |$close_time


show backupsets successfully.
time used: 6.251(ms)

通过查看备份集信息可知,数据库/dm_home/dmdbms/data/dmks2的DB_MAGIC值为-1486708862

3) 查看指定目录下数据库/dm_home/dmdbms/data/dmks2的所有备份集信息。

RMAN> show backupsets with backupdir '/dm_home/dmdbms/backup' use db_magic 1486708862;
show backupsets with backupdir '/dm_home/dmdbms/backup' use db_magic 1486708862;
CMD END.CODE:[0]
[602]:no backupsets searched in specified directories

4.指定查看备份集的元数据信息

SHOW BACKUPSET...INFO META命令用于查看备份集的元数据信息。操作步骤如下:
RMAN> show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801' info meta;
show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801' info meta;




backupset sig:         BA
backupset version:     4009
database name:         dmks2
backup name:           DB_FULL_dmks2_20200608_165451_000348
backupset description:
backupset ID :         -479813328
parent backupset ID:     -1
META file size :       66048
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1591606486
ddl_clone:             FALSE
mpp_flag:              FALSE
backup level:          offline
backup type:           full
without log:           FALSE
START_LSN:             33905
START_SEQ:             14010
END_LSN:               33904
END_SEQ:               14009
base START_LSN:        -1
base END_LSN:          -1
base name:
base backupset:
backup time:           2020-06-08 16:54:53
min trx start lsn:     33905
min exec ver:          0x0701060C
pkg size:              0x02000000


show backupsets successfully.
time used: 5.915(ms)

这里获取的是单个备份集的元数据信息,也可以使用SHOW BACKUPSETS…INFO META命令批量获取元数据信息。同样地,我们可以使用类似的命令指定获取备份集的数据库信息、文件信息和表信息,或这些信息的任意组合。

5.以xml格式输出备份信息到文件
DMRMAN可以将显示的备份集信息输出到文件,目前支持的格式包括TXT和XML,默认为TXT文件格式。使用SHOW BACKUPSETS…TO ‘file_path’ FORMAT XML命令可将备份信息以XML格式显示并输出到文件,如下所示:

RMAN> show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801' to '/home/dmdba/db_dmks2.txt' format xml;
show backupset '/dm_home/dmdbms/backup/db_dmks2_bak_2020060801' to '/home/dmdba/db_dmks2.txt' format xml;
< ?xml version="1.0" encoding="UTF-8"?>

        
                
                /dm_home/dmdbms/backup/db_dmks2_bak_2020060801
                DISK
                
                        BA
                        4009
                        dmks2
                        DB_FULL_dmks2_20200608_165451_000348
                        
                        -479813328
                        -1
                        66048
                        0
                        0
                        1
                        database
                        1591606486
                        FALSE
                        FALSE
                        offline
                        full
                        FALSE
                        33905
                        14010
                        33904
                        14009
                        -1
                        -1
                        
                        
                        2020-06-08 16:54:53
                        33905
                        0x0701060C
                        0x02000000
                
                
                        /dm_home/dmdbms/backup/db_dmks2_bak_2020060801
                        db_dmks2_bak_2020060801
                        3
                        1
                        
                                0
                                5740032
                                db_dmks2_bak_2020060801.bak
                                DATA
                        
                        
                                1
                                0
                                SYSTEM
                                0
                                /dm_home/dmdbms/data/dmks2/SYSTEM.DBF
                                
                                22020096
                        
                        
                                2
                                1
                                ROLL
                                0
                                /dm_home/dmdbms/data/dmks2/ROLL.DBF
                                
                                134217728
                        
                        
                                3
                                4
                                MAIN
                                0
                                /dm_home/dmdbms/data/dmks2/MAIN.DBF
                                
                                134217728
                        
                
                
                        /dm_home/dmdbms/data/dmks2
                        -1486708862
                        -1155586847
                        1
                        0
                        0
                        0
                        
                        0
                        
                        0
                        1
                        8192
                        16
                        TRUE
                        512
                        0
                        0
                        0x7000A
                        V7.1.6.46-Build(2018.02.08-89107)ENT 
                        FALSE
                        FALSE
                        0
                        TRUE
                
                
        

show backupsets successfully.
time used: 7.438(ms)

DM7使用DMRMAN工具执行加密备份与设置跟踪日志

使用DMRMAN工具执行加密备份与设置跟踪日志
下面介绍使用DMRMAN工具执行加密备份与设置跟踪日志
1.加密备份
DMRMAN同DIsql工具一样可使用加密的方式备份数据库,没有权限的用户无法访问加密的备份集。

DMRMAN备份命令中通过指定IDENTIFIED BY…WITH ENCRYPTION…ENCRYPT WITH…命令执行加密备份。

加密备份过程中参数IDENTIFIED BY必须指定,参数WITH ENCRYPTION和参数ENCRYPT WITH可不指定。加密备份时不指定WITH ENCRYPTION参数,该参数默认为1,不指定ENCRYPT WITH参数,该参数默认值为AES256_CFB。例如,以下两种加密备份命令都是合法的:

RMAN> backup  database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_01' identified by "abcd123456";
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_01' identified by ******;
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_jydm_bak_for_encrypt_01] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8271.759(ms)

RMAN> backup  database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_02' identified by "abcd123456" encrypt with rc4;
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_02' identified by ****** encrypt with ******;
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_jydm_bak_for_encrypt_02] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7166.572(ms)

若指定了加密密码,但加密类型WITH ENCRYPTION参数指定为0,则为非加密备份,如下所示:

RMAN> backup  database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_03' identified by "abcd123456" with encryption 0;
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_03' identified by ****** with encryption *;
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_jydm_bak_for_encrypt_03] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7278.945(ms)

下面以数据库完全备份为例,创建加密密码为“abcd123456”,加密算法为“rc4”的复杂加密类型的数据库加密备份,完整步骤如下:
1) 保证数据库处于关闭状态。
2) 备份数据库。启动DMRMAN工具并输入以下命令。

RMAN> backup  database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_04' identified by "abcd123456" with encryption 2 encrypt with rc4
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_jydm_bak_for_encrypt_04' identified by ****** with encryption * encrypt with ******;
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_jydm_bak_for_encrypt_04] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7280.960(ms)

对于增量备份加密,如果基备份存在加密,则使用的加密算法和加密密码必须与基备份中一致;如果基备份未进行加密处理,则对增量备份使用的加密密码和算法没有特殊要求。

RMAN> backup  database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_jydm_bak_incr_for_encrypt_01' identified by "abcd123456" with encryption 2 encrypt with rc4;
backup database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_jydm_bak_incr_for_encrypt_01' identified by ****** with encryption * encrypt with ******;
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_jydm_bak_incr_for_encrypt_01] END, CODE [0]......
META GENERATING......
total 0 packages processed...
total 9 packages processed!
CMD END.CODE:[-8088],DESC:[无任何数据更新或者日志产生,无需备份]
[-8088]:无任何数据更新或者日志产生,无需备份
RMAN>

2.设置跟踪日志文件
DMRMAN备份时可选择生成跟踪日志文件,跟踪日志记录了SBT接口的调用过程,用户通过查看日志可跟踪备份还原过程。

与生成跟踪日志文件相关的参数有两个,TRACE FILE和TRACE LEVEL。TRACE FILE用于指定生成的跟踪日志文件路径。与DIsql工具不同的是,DMRMAN不可在备份时指定参数生成跟踪文件,只能使用CONFIGURE命令进行事先配置。

使用CONFIGURE DEFAULT…TRACE FILE…TRACE LEVEL命令启用TRACE功能并设TRACE文件路径,以下命令生成TRACE文件到E:\dmdbms\trace目录:

RMAN> configure
configure
THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:
        MEDIA : DISK
DEFAULT TRACE :
        FILE  : ..\dm_SBTTRACE_202005.log
        LEVEL : 1
DEFAULT BACKUP DIRECTORY:
        TOTAL COUNT  :1

        E:\dmdbms\backup
DEFAULT ARCHIVE DIRECTORY:
        TOTAL COUNT  :1

                        E:\dmdbms\data\arch
time used: 37.758(ms)
RMAN> configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 2;
configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 2;
configure default trace successfully!
time used: 3.387(ms)
RMAN> configure
configure
THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:
        MEDIA : DISK
DEFAULT TRACE :
        FILE  : E:\dmdbms\trace\db_jydm_trace.log
        LEVEL : 2
DEFAULT BACKUP DIRECTORY:
        TOTAL COUNT  :1

        E:\dmdbms\backup
DEFAULT ARCHIVE DIRECTORY:
        TOTAL COUNT  :1

                        E:\dmdbms\data\arch
time used: 40.347(ms)

指定参数TRACE FILE但TRACE LEVEL值设置为1即不启用TRACE功能,会生成TRACE文件,但不会写入TRACE信息。如下所示:

RMAN> configure default trace clear;
configure default trace clear;
configure default trace clear successfully!
time used: 2.183(ms)
RMAN> configure
configure
THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:
        MEDIA : DISK
DEFAULT TRACE :
        FILE  :
        LEVEL : 1
DEFAULT BACKUP DIRECTORY:
        TOTAL COUNT  :1

        E:\dmdbms\backup
DEFAULT ARCHIVE DIRECTORY:
        TOTAL COUNT  :1

                        E:\dmdbms\data\arch
time used: 46.771(ms)

RMAN> configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 1;
configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 1;
configure default trace successfully!
time used: 4.799(ms)

TRACE LEVEL值设置为2即启用TRACE功能,但若TRACE FILE没有指定,系统默认在执行码路径的log目录下生成DM_SBTTRACE_年月.log文件。
如下所示:

RMAN> configure default trace level 2;
configure default trace level 2;
configure default trace successfully!
time used: 3.124(ms)

若TRACE FILE使用相对路径,日志文件则生成在执行码同级目录下。
为数据库脱机备份设置跟踪日志文件的操作步骤如下:
1) 保证数据库处于关闭状态。
2) 使用CONFIGURE命令配置生成跟踪日志文件。

RMAN> configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 2;
configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 2;
configure default trace successfully!
time used: 2.705(ms)

查看E:\dmdbms\trace\db_jydm_trace.log文件即可跟踪本次备份的SBT接口调用过程。
如果指定的TRACE文件已存在,服务器不会覆盖已存在的文件而是在已有文件基础上继续记录日志。

RMAN> configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 1;
configure default trace file 'E:\dmdbms\trace\db_jydm_trace.log' trace level 1;
[-8086]:无效的TRACE文件[E:\dmdbms\trace\db_jydm_trace.log]

DM7使用DMRMAN执行归档备份

使用脱机工具DMRMAN执行归档备份
1. 概述
在DMRMAN工具中使用BACKUP命令你可以备份数据库的归档。关闭服务器在DMRMAN中输入以下命令即可备份归档:

RMAN> backup archive log database 'E:\dmdbms\data\jydm\dm.ini';
backup archive log database 'E:\dmdbms\data\jydm\dm.ini';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 901685
BACKUP ARCHIVE LOG ALL, execute......
CMD CHECK LSN......
BACKUP ARCHIVE LOG ALL, collect dbf......
CMD CHECK ......
ARCH BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
ARCH BACKUP MAIN......
BACKUPSET [E:\dmdbms\data\jydm\bak\ARCH_LOG_20200531_193129_000908] END, CODE [0]......
META GENERATING......
total 5 packages processed...
total 5 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7252.182(ms)

命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为dm.ini中BAK_PATH的配置值,若未配置,则使用SYSTEM_PATH下的bak目录。这是最简单的脱机归档备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。

语法如下:

BACKUP
[ALL | [FROM LSN ]|[UNTIL LSN ] | [LSN BETWEEN < lsn值> AND < lsn值>] | [FROM TIME '时间串'] |
[UNTIL TIME '时间串'] | [TIME BETWEEN '时间串' AND '时间串']] [][DELETE INPUT]
DATABASE ''
[TO < 备份名>] [BACKUPSET '< 备份集目录>'] [DEVICE TYPE < 介质类型>[PARMS '< 介质参数>']
[BACKUPINFO '< 备份描述>'] [MAXPIECESIZE < 备份片限制大小>]
[IDENTIFIED BY < 加密密码>[WITH ENCRYPTION][ENCRYPT WITH < 加密算法>]]
[COMPRESSED [LEVEL < 压缩级别>]][TASK THREAD < 线程数>][PARALLEL [< 并行数>]];
::=NOT BACKED UP
| NOT BACKED UP numTIMES
| NOT BACKED UP SINCE TIME 'datetime_string'

ALL:备份所有的归档;
FROM LSN ,UNTIL LSN:备份的起始和截止lsn。请参考3.2.2.4归档备份
FROM TIME:指定备份的开始时间点。例如,’2015-12-10’。
UNTIL TIME:指定备份的截止时间点。
BETWEEN …AND …:指定备份的区间,仅仅指备份区间内的归档文件。
:搜索过滤。搜索过滤仅限于根据备份指定条件能找到的所有归档备份集。1) num TIMES,指若归档文件已经备份了num次,则不再备份;否则备份。如num=3,则认为已经备份了3次的归档文件就不再备份。若num=0,则认为所有都不需要备份。2)SINCE TIME ‘datetime_String’,指定时间开始没有备份的归档文件进行备份。3)若以上两种均未指定,则备份所有未备份过的归档日志文件。
DELETE INPUT:用于指定备份完,是否删除归档操作。
DATABASE:必选参数。指定备份目标库的INI文件路径。
TO: 指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:ARCH_备份时间。
BACKUPSET: 指定当前备份集生成目录。若指定为相对路径,则在默认备份路径中生成备份集。
DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认DISK。DISK表示存储备份集到磁盘,TAPE表示存储到磁带。
PARMS:只对介质类型为TAPE时有效。
BACKUPINFO:备份的描述信息。最大不超过256个字节。
MAXPIECESIZE:最大备份片文件大小上限,以M为单位,最小128M,32位系统最大2G,64位系统最大128G。
IDENTIFIED BY:指定备份时的加密密码。密码应用双引号括起来,这样避免一些特殊字符通不过语法检测。密码的设置规则遵行ini参数pwd_policy指定的口令策略。
WITH ENCRYPTION:指定加密类型,0表示不加密,不对备份文件进行加密处理;1表示简单加密,对备份文件设置口令,但文件内容仍以明文存;2表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。
ENCRYPT WITH:加密算法。缺省情况下,算法为AES256_CFB。具体可以使用的加密算法参考联机数据库备份章节的参数说明。
COMPRESSED:取值范围0~9。0表示不压缩,1表示1级压缩,9表示9级压缩。压缩级别越高,压缩越慢,但压缩比越高。若未指定,但指定COMPRESSED,则默认1;否则,默认0。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围0~64,默认为4。若指定为0,则调整为1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。
PARALLEL:指定并行备份的并行数,取值范围0~128。若不指定,则默认为4,指定0或者1均认为为非并行备份。若未指定关键PARALLEL,则认为非并行备份。并行备份不支持介质为TAPE的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。

2. 备份归档
本节主要描述使用DMRMAN如何执行基本的脱机归档备份及实施一些备份策略,包括:
1. 设置备份选项
2. 创建归档备份
3. 创建设置条件的归档备份

1.设置备份选项
备份命令如果仅指定了必选参数如“BACKUP ARCHIVE LOG DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’”,那么DMRMAN会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。用户备份时也可以指定这些参数来覆盖默认值,常见的备份选项有设置备份集路径、指定备份名、限制备份片大小、添加描述信息、并行备份等。DMRMAN脱机备份归档的语法与使用DIsql联机备份类似,关于备份选项的详细介绍及使用参见3.2.2.3.2 设置备份选项。

2.创建归档备份
执行归档备份要求数据库处于脱机状态。与联机备份数据库一样,脱机归档备份需要配置归档。一个完整的创建脱机数据库备份的示例如下:
1) 启动DMRMAN命令行工具。
2) 保证数据库处于脱机状态。
3) DMRMAN中输入以下命令:

RMAN> backup archive log all database 'E:\dmdbms\data\jydm\dm.ini' backupset 'E:\dmdbms\backup\arch_all_bak_01';
backup archive log all database 'E:\dmdbms\data\jydm\dm.ini' backupset 'E:\dmdbms\backup\arch_all_bak_01';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 901685
BACKUP ARCHIVE LOG ALL, execute......
CMD CHECK LSN......
BACKUP ARCHIVE LOG ALL, collect dbf......
CMD CHECK ......
ARCH BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
ARCH BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\arch_all_bak_01] END, CODE [0]......
META GENERATING......
total 5 packages processed...
total 5 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8221.506(ms)

命令中的ALL参数表示执行的备份为备份所有的归档,也可以不指定该参数,DMRMAN默认执行的备份类型为ALL类型归档备份。

3.创建设置条件的归档备份
设置条件的归档备份指通过设置LSN或者时间点,控制归档需要备份归档的范围。脱机设置条件归档备份。增量备份示例如下:

D:\>net start DmServicejydm
DmServicejydm 服务正在启动 ....
DmServicejydm 服务已经启动成功。


D:\>disql sysdba/xxzx7817600

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 10.068(毫秒)
disql V7.1.6.48-Build(2018.03.01-89507)ENT
Connected to: DM 7.1.6.48
SQL> select * from v$arch_file;

行号       DB_MAGIC    STATUS   LEN                  FREE                 ARCH_LSN             CLSN                 ARCH_SEQ             NEXT_SEQ             CREATE_TIME                 CLOSE_TIME                  PATH
---------- ----------- -------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------------- --------------------------- ----------------------------------------------------------
1          -430050549  INACTIVE 225792               225792               892254               894139               161798               162230               2020-05-31 10:17:40.810000  2020-05-31 11:52:15.732000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531101740800_0.log
2          -430050549  INACTIVE 282112               282112               894139               896221               162231               162773               2020-05-31 11:52:15.732000  2020-05-31 18:10:29.344000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531115215733_0.log
3          -430050549  INACTIVE 198656               198656               896222               898933               162774               163153               2020-05-31 18:10:29.344000  2020-05-31 18:11:41.803000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531181130589_0.log
4          -430050549  INACTIVE 202752               202752               898934               901685               163154               163541               2020-05-31 18:11:41.803000  2020-05-31 19:22:33.194000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531192047977_0.log
5          -430050549  ACTIVE   1073741824           4608                 901686               901686               163542               163542               2020-05-31 19:22:33.194000  2020-05-31 19:41:37.396000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194137390_0.log

已用时间: 7.243(毫秒). 执行号:3.
SQL> begin
2   for i in 11 .. 20 loop
3   insert into t2 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 3.688(毫秒). 执行号:4.
SQL> alter system switch logfile;
操作已执行
已用时间: 15.692(毫秒). 执行号:0.
SQL> select * from v$arch_file;

行号       DB_MAGIC    STATUS   LEN                  FREE                 ARCH_LSN             CLSN                 ARCH_SEQ             NEXT_SEQ             CREATE_TIME                 CLOSE_TIME                  PATH
---------- ----------- -------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------------- --------------------------- ----------------------------------------------------------
1          -430050549  ACTIVE   1073741824           4096                 0                    0                    0                    0                    2020-05-31 19:43:28.792000  2020-05-31 19:43:28.797000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194328794_0.log
2          -430050549  INACTIVE 225792               225792               892254               894139               161798               162230               2020-05-31 10:17:40.810000  2020-05-31 11:52:15.732000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531101740800_0.log
3          -430050549  INACTIVE 282112               282112               894139               896221               162231               162773               2020-05-31 11:52:15.732000  2020-05-31 18:10:29.344000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531115215733_0.log
4          -430050549  INACTIVE 198656               198656               896222               898933               162774               163153               2020-05-31 18:10:29.344000  2020-05-31 18:11:41.803000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531181130589_0.log
5          -430050549  INACTIVE 202752               202752               898934               901685               163154               163541               2020-05-31 18:11:41.803000  2020-05-31 19:22:33.194000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531192047977_0.log
6          -430050549  INACTIVE 143872               143872               901686               903130               163542               163814               2020-05-31 19:22:33.194000  2020-05-31 19:43:28.792000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194137390_0.log

6 rows got

已用时间: 8.257(毫秒). 执行号:5.
SQL> checkpoint(100);
DMSQL 过程已成功完成
已用时间: 19.634(毫秒). 执行号:6.
SQL> alter database archivelog current;
操作已执行
已用时间: 15.156(毫秒). 执行号:0.
SQL> select * from v$arch_file;

行号       DB_MAGIC    STATUS   LEN                  FREE                 ARCH_LSN             CLSN                 ARCH_SEQ             NEXT_SEQ             CREATE_TIME                 CLOSE_TIME                  PATH
---------- ----------- -------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------------- --------------------------- ----------------------------------------------------------
1          -430050549  ACTIVE   1073741824           4096                 0                    0                    0                    0                    2020-05-31 19:44:15.929000  2020-05-31 19:44:15.934000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194415931_0.log
2          -430050549  INACTIVE 225792               225792               892254               894139               161798               162230               2020-05-31 10:17:40.810000  2020-05-31 11:52:15.732000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531101740800_0.log
3          -430050549  INACTIVE 282112               282112               894139               896221               162231               162773               2020-05-31 11:52:15.732000  2020-05-31 18:10:29.344000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531115215733_0.log
4          -430050549  INACTIVE 198656               198656               896222               898933               162774               163153               2020-05-31 18:10:29.344000  2020-05-31 18:11:41.803000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531181130589_0.log
5          -430050549  INACTIVE 202752               202752               898934               901685               163154               163541               2020-05-31 18:11:41.803000  2020-05-31 19:22:33.194000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531192047977_0.log
6          -430050549  INACTIVE 143872               143872               901686               903130               163542               163814               2020-05-31 19:22:33.194000  2020-05-31 19:43:28.792000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194137390_0.log
7          -430050549  INACTIVE 9728                 9728                 903130               903130               163815               163825               2020-05-31 19:43:28.792000  2020-05-31 19:44:15.929000  E:\dmdbms\data\arch\ARCHIVE_LOCAL1_20200531194328794_0.log

7 rows got

1) 启动DMRMAN命令行工具。
2) 保证数据库处于脱机状态。

D:\>net stop DmServicejydm
DmServicejydm 服务正在停止...
DmServicejydm 服务已成功停止。

3) DMRMAN中输入以下命令:

RMAN> backup archive log lsn between 901686 and 903130 database 'E:\dmdbms\data\jydm\dm.ini' backupset 'E:\dmdbms\backup\arch_lsn_bak_01';
backup archive log lsn between 901686 and 903130 database 'E:\dmdbms\data\jydm\dm.ini' backupset 'E:\dmdbms\backup\arch_lsn_bak_01';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 904411
BACKUP ARCHIVE LOG FROM LSN 901686 TO LSN 903130, execute......
CMD CHECK LSN......
BACKUP ARCHIVE LOG FROM LSN 901686 TO LSN 903130, collect dbf......
CMD CHECK ......
ARCH BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
ARCH BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\arch_lsn_bak_01] END, CODE [0]......
META GENERATING......
total 3 packages processed...
total 3 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7313.615(ms)

命令中的LSN BETEEWN start AND end参数表示执行的备份为执行备份的区间,或者设置FROM LSN(TIME)以及UNTIL LSN(TIME)。

DM7使用脱机工具DMRMAN执行数据库备份

脱机工具DMRMAN执行数据库备份
1. 概述
在DMRMAN工具中使用BACKUP命令你可以备份整个数据库。使用DMRMAN备份数据库不需要设置归档,关闭服务器在DMRMAN中输入以下命令即可备份数据库:

C:\Users\Administrator>net stop DmServicejydm
DmServicejydm 服务正在停止..
DmServicejydm 服务已成功停止。

RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini';
backup database 'E:\dmdbms\data\jydm\dm.ini';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 898933
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\data\jydm\bak\DB_jydm_FULL_20200531_181250_000528] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8302.098(ms)

命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为dm.ini中BAK_PATH的配置值,若未配置,则为SYSTEM_PATH下的bak目录。这是最简单的脱机数据库备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。语法如下:

BACKUP DATABASE '<INI文件路径>' [[[FULL][DDL_CLONE]] |INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份集目录>']]
[TO <备份名>] [BACKUPSET '<备份集目录>'][DEVICE TYPE <介质类型>[PARMS '<介质参数>']
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <加密密码>[WITH ENCRYPTION][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG]
[TASK THREAD <线程数>][PARALLEL [<并行数>]];

DATABASE:必选参数。指定还原目标库的INI文件路径。

FULL:备份类型。FULL表示完全备份,可不指定,DMRMAN会默认为完全备份。

DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。

INCREMENT:备份类型。INCREMENT表示增量备份,若要执行增量备份必须指定该参数。

WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为256个字节。若不指定,服务器自动在默认备份目录下搜索基备份。如果基备份不在默认的备份目录下,增量备份必须指定该参数。

CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。

BASE ON BACKUPSET:用于增量备份中,为增量备份指定基备份集目录。,如果没有指定基备份集,则会自动搜索一个最近可用的备份集作为基备份集

TO:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_备份类型_数据库名_备份时间。

BACKUPSET:指定当前备份集生成目录。若指定为相对路径,则在默认备份路径中生成备份集。

DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认DISK。DISK表示存储备份集到磁盘,TAPE表示存储到磁带。

PARMS:只对介质类型为TAPE时有效。

BACKUPINFO:备份的描述信息。最大不超过256个字节。

MAXPIECESIZE:最大备份片文件大小上限,以M为单位,最小128M,32位系统最大2G,64位系统最大128G。

IDENTIFIED BY:指定备份时的加密密码。密码应用双引号括起来,这样避免一些特殊字符通不过语法检测。密码的设置规则遵行ini参数pwd_policy指定的口令策略。

WITH ENCRYPTION:指定加密类型,0表示不加密,不对备份文件进行加密处理;1表示简单加密,对备份文件设置口令,但文件内容仍以明文存;2表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。

ENCRYPT WITH:加密算法。缺省情况下,算法为AES256_CFB。具体可以使用的加密算法参考联机数据库备份章节的参数说明。

COMPRESSED:取值范围0~9。0表示不压缩,1表示1级压缩,9表示9级压缩。压缩级别越高,压缩越慢,但压缩比越高。若未指定,但指定COMPRESSED,则默认1;否则,默认0。

WITHOUT LOG:脱机数据库备份是否备份日志。如果使用,则表示不备份,否则表示备份。如果使用了WITHOUT LOG参数,则使用DMRMAN工具还原时,必须指定WITH ARCHIVEDIR参数。

TASK THREAD:备份过程中数据处理过程线程的个数,取值范围0~64,默认为4。若指定为0,则调整为1;若指定大于当前系统主机核数,则调整为当前主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。

PARALLEL:指定并行备份的并行数,取值范围0~128。若不指定,则默认为4,指定0或者1均认为为非并行备份。若未指定关键PARALLEL,则认为非并行备份。并行备份不支持介质为TAPE的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。

使用说明:
1. 备份成功后会在<备份集目录>或者备份默认目录下生成备份集。备份集中包括一个备份元数据文件,后缀.meta,一个或多个备份片文件,后缀.bak。

2. 对于并行备份的备份集,备份集中还包括其他子备份集目录,但每个子备份集目录中也都包含一个meta文件,0个或者多个备份片文件。

3. DDL_CLONE库备份集不能作为增量备份的基备份,仅能用于库级还原。

4.脱机备份的数据库可以正常退出库,也可以是故障退出的数据库。若是故障退出的数据库,则备份前,需先进行归档修复。

5. 在执行脱机数据库备份过程中,如果报错归档不完整,则需要检查库是不是异常退出。如果库是异常退出,则需要先进行归档修复。

2. 备份数据库
本节主要描述使用DMRMAN如何执行基本的脱机数据库备份及实施一些备份策略,包括:
1. 设置备份选项
2. 创建完全备份
3. 创建增量备份

1.设置备份选项
备份命令如果仅指定了必选参数如“BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’”,那么DMRMAN会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。用户备份时也可以指定这些参数来覆盖默认值,常见的备份选项有设置备份集路径、指定备份名、限制备份片大小、添加描述信息、并行备份等。DMRMAN脱机备份数据库的语法与使用DIsql联机备份类似。

2.创建完全备份
执行数据库备份要求数据库处于脱机状态。与联机备份数据库不同的是,脱机备份不需要配置归档。一个完整的创建脱机数据库备份的示例如下:
1) 启动DMRMAN命令行工具。
2) 保证数据库处于脱机状态。
3) DMRMAN中输入以下命令:

RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_full_bak_01';
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_full_bak_01';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 898933
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_full_bak_01] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7256.870(ms)

RAC使用dmrman执行备份

[dmdba@dmrac1 bin]$ dmrman
dmrman V7.1.6.46-Build(2018.02.08-89107)ENT
RMAN> backup database '/dm7/data/rac0_config/dm.ini' backupset '/dm7/backup/bak/db_rac_full_bak_2020060801';
backup database '/dm7/data/rac0_config/dm.ini' backupset '/dm7/backup/bak/db_rac_full_bak_2020060801';
file dm.key not found, use default license!
Read ini warning, default backup path [/dm7data/bak] does not exist.
[-105]:Invalid control file

报错是因为对于rac环境来说在启动dmrman时需要指定dcr_ini参数

[dmdba@dmrac1 bin]$ dmrman dcr_ini=/dm7/data/dmdcr.ini
dmrman V7.1.6.46-Build(2018.02.08-89107)ENT
RMAN> backup database '/dm7/data/rac0_config/dm.ini';
backup database '/dm7/data/rac0_config/dm.ini';
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....
[-12000]:The specified instance has been started

报错是因为指定的数据库实例已经启动了,dmrman是用于脱机备份,所以需要停止数据库

RMAN> backup database '/dm7/data/rac0_config/dm.ini';
backup database '/dm7/data/rac0_config/dm.ini';
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
EP [1] is checking....
EP[0] max_lsn: 58852
EP[0] adjust cur_lsn from [58852] to [58867]
BACKUP DATABASE [rac], execute......
CMD CHECK LSN......
BACKUP DATABASE [rac], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
DBF BACKUP MAIN......
BACKUPSET [+DMDATA/data/rac/bak/DB_rac_FULL_20200608_160009_000828] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 16303.415(ms)

命令中的FULL参数表示执行的备份为完全备份,也可以不指定该参数,DMRMAN默认执行的备份类型为完全备份。

3.创建增量备份
增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。增量备份示例如下:
首先启动数据库执行一些操作

C:\Users\Administrator>net start DmServicejydm
DmServicejydm 服务正在启动 ....
DmServicejydm 服务已经启动成功。

SQL> create table t2(id int);
操作已执行
已用时间: 8.250(毫秒). 执行号:5.
SQL> begin
2   for i in 1 .. 10 loop
3   insert into t2 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 2.845(毫秒). 执行号:6.
SQL> exit

1) 启动DMRMAN命令行工具。
2) 保证数据库处于脱机状态。

C:\Users\Administrator>net stop DmServicejydm
DmServicejydm 服务正在停止..
DmServicejydm 服务已成功停止。

3) DMRMAN中输入以下命令:

RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_full_bak_02';
backup database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_full_bak_02';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 901685
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_full_bak_02] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8219.138(ms)

命令中的INCREMENT参数表示执行的备份为增量备份,增量备份该参数不可省略。如果增量备份的基备份不在默认备份目录,必须指定WITH BACKUPDIR参数用于搜索基备份集,或者使用CONFIGURE…BACKUPDIR命令配置默认的基备份集搜索目录

达梦DMRMAN备份还原工具的介绍与配置

DMRMAN(DM RECOVERY MANEGER)是DM7的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

通过DMRMAN工具执行脱机操作过程中,仅会使用通过关键字DATABASE指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。例如:DATABASE指定目标库/opt/dmdbms/data/dm.ini,为单机环境且配置参数ARCH_INI为1,那么只会相应的读取dmarch.ini中本地归档日志信息。此时,即使dmarch.ini中配置了REALTIME、MARCH、TIMELY等其他类型的归档日志,也不会去校验dmmal.ini、dmtimer.ini等是否有效。

1. DMRMAN概述
DMRMAN是DM7提供的命令行工具,无需额外地安装。DMRMAN的结构比较复杂,为了更好地使用它我们需要了解它的结构。接下来将对DMRMAN的重要组成部分进行介绍。

源库
源库是待备份的数据库。使用DMRMAN工具只可对数据库进行脱机备份,联机备份需要通过DIsql工具实现。DMRMAN可以针对整个数据库执行脱机完全备份和增量备份,数据库可以配置归档也可以不配置。

目标库
目标库是待还原的数据库,即是用来做还原的库,也称为目标还原库。目标库可以是通过dm.ini文件指定的数据库,也可以是目标文件目录。通过dm.ini指定库时,dm.ini及其配置中的CTL_PATH必须有效,且库必须处于关闭状态;指定文件目录时,指定目录作为SYSTEM_PATH处理,可以存在,也可以不存在,但必须有效。目前目标库的还原仅支持脱机还原,可通过DMRMAN和CONSOLE工具实现。

DMRMAN客户端
DMRMAN客户端是DM7软件的一部分,用来执行目标数据库的备份和恢复操作。DMRMAN客户端是一个命令行工具,命令行的好处是管理员可以编写复杂的脚本,将DMRMAN和操作系统的任务调度结合起来可以实现备份的自动化。

备份集
利用DMRMAN工具将数据库中的一个或多个数据文件、数据库信息等备份到一个称为“备份集”的逻辑结构中,备份集的格式是特定的只能由DMRMAN创建和访问。一个备份集中会包含一个或多个二进制文件,这个二进制文件被称为备份片。备份数据库会产生一个备份集,这个备份集可能包含一个或者多个备份片。备份片的个数由数据库中数据文件的大小和文件系统对文件大小的限制共同决定。如果备份的数据文件大小超过了文件系统对文件大小的限制就会产生多个备份片。

在对数据库进行备份时可以指定备份片的大小来适应存储设备的容量。例如,一个数据库的产生的备份集大小约为40GB,一盘磁带的容量为10GB,这时可以指定备份片大小为10G,备份后备份集将包含4个备份片,正好使用4盘磁带。

2. 启动和配置DMRMAN
下面将介绍如何启动命令行工具DMRMAN并进行交互。主要内容包括:
1. 启动和退出DMRMAN
1.1 输入DMRMAN命令
1.2DMRMAN环境配置

1. 启动和退出DMRMAN
安装DM数据库后,DMRMAN可执行程序与数据库其他可执行程序一样位于安装路径的执行码目录下。比如,LINUX上数据库的执行码目录为/opt/dmdbms/bin,转到执行码目录直接在操作系统的命令行中输入以下命令就可启动DMRMAN。若配置了环境变量DM_HOME,可直接命令行执行:
./dmrman
启动后控制台中输入exit命令即可退出DMRMAN环境:
RMAN>exit

2. 输入DMRMAN命令
DMRMAN工具支持控制台输入命令、命令行设置参数两种操作方式。下面分别对这两种操作方式进行介绍。
DMRMAN控制台输入命令
当DMRMAN客户端已经启动且可以输入命令时会显示命令提示符。如下所示:

RMAN>

输入以下用于执行的DMRMAN命令:

RMAN>HELP
RMAN>BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';

大多数的DMRMAN命令会设置多个参数,命令的结尾可以加分号结束,也可以不使用分号。

DMRMAN控制台还可以执行脚本。如创建一个名为cmd_file.txt的文件,文件中包含“BACKUP DATABASE’/opt/dmdbms/data/DAMENG/dm.ini’”命令,保存到/home/dm_cmd目录下,执行方式如下:

RMAN>`/home/dm_cmd/cmd_file.txt

DMRMAN是按行解析命令,如果输入一行不完整的命令执行会报错,如一条完整的命令分三行输入会导致报错:

BACKUP
DATABASE
'/opt/dmdbms/data/DAMENG/dm.ini';

RMAN> help
help
格式: dmrman.exe KEYWORD=value

例程: dmrman.exe CTLFILE=c:\dm7data\dameng\res_ctl.txt



必选参数:

关键字            说明
------------     -----------------------------------------------------------------
CTLFILE          指定执行语句所在的文件路径
CTLSTMT         指定待执行语句
DCR_INI         指定dmdcr.ini路径;若未指定且当前目录中dmdcr.ini存在,则使用当前目录中的dmdcr.ini。可单独使用,也可与其他参数配合使用USE_AP 指定备份、还原执行载体,1/2:DMAP/进程自身,默认是? DMAP。
HELP            打印帮助信息

DMRMAN命令行设置参数执行
DMRMAN命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。DMRMAN支持的参数如下所示。

CTLFILE:指定执行语句所在的文件路径,不能和CTLSTMT同时使用。脚本文件格式支持*.txt
CTLSTMT:指定待执行语句,不能和CTLFILE同时使用。如:CTLSTMT=”BACKUP DATABASE ‘/home/dmdbms/data/DAMENG/dm.ini'”DCR_INI:指定dmdcr.ini路径,用于ASM存储时访问ASM服务;若未指定,则认为不存在ASM存储使用。可单独使用,也可与其他参数配合使用。主要用于DMRAC环境

USE_AP:指定备份还原执行策略。取值1、2。默认为1。
1:使用DMAP插件方式执行备份还原;执行备份还原时要求先启动DMAP服务。
2:无插件方式,由DMSERVER进程自身完成备份还原,不再依赖DMAP服务;配置成2的情况下,不能执行第三方备份(指定DEVICE TYPE为TAPE)

命令行指定脚本执行,要求我们先创建一个包含DMRMAN命令的文件,然后设置CTLFILE参数,参数后面指定文件的路径。例如,创建一个名为cmd_rman.txt的文件,保存到/home/dm_cmd目录下,文件中包含一行如下所示的DMRMAN命令:

BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';

设置CTLFILE参数启动DMRMAN工具,指定脚本文件中的命令将被执行:

./dmrman CTLFILE=/home/dm_cmd/cmd_rman.txt

命令执行完后DMRMAN工具会自动退出。
命令行执行语句执行,是DMRMAN工具设置CTLSTMT参数,参数后面执行需要执行的DMRMAN命令,使用方法如下所示:

./dmrman CTLSTMT="BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';"

CTLFILE中存在多条语句或CTLSTMT中一次输入多条语句时,每条语句都必须以分号结尾;执行单条语句,语句结尾可以加分号也可以不加。

CTLSTMT中,待执行语句外层双引号一定要加。执行完毕后工具自动退出。CTLFILE和CTLSTMT不能同时指定。若使用DMASM文件系统,可通过DCR_INI指定目标联机的ASM服务器。

3. DMRMAN环境配置
使用CONFIGURE命令进行DMRMAN的默认参数配置,配置默认的存储介质类型、备份集搜集目录、归档日志搜集目录、跟踪日志文件。
1. 显示和清除现有参数的默认配置
2. 配置存储介质类型:DISK或TAPE
3. 配置备份集搜集目录
4. 配置归档日志搜集目录
5. 配置跟踪日志文件

语法如下:

CONFIGURE |
CONFIGURE CLEAR |
CONFIGURE DEFAULT 
::=
DEVICE [[TYPE<介质类型> [PARMS <第三方参数>]]|CLEAR] |
TRACE [[FILE <跟踪日志文件路径>][TRACE LEVEL <跟踪日志等级>]|CLEAR] |
BACKUPDIR [[ADD|DELETE] '<基备份搜索目录>'{,'<基备份搜索目录>' }|CLEAR] |
ARCHIVEDIR [[ADD|DELETE] '<归档日志目录>'{,'<归档日志目录>'}
{'<归档日志目录>'{,'<归档日志目录>'} }|CLEAR]

CONFIGURE:查看设置的默认值。
CLEAR:清理参数的默认值。
DEVICE TYPE:备份集存储的介质类型,DISK或者TAPE,默认DISK。DISK表示存储备份集到磁盘,TAPE表示存储到磁带。
PARMS:介质参数,供第三方存储介质(TAPE类型)管理使用。
BACKUPDIR:默认搜集备份的目录,可以设置为不存在但是在系统中是有效的路径。
ARCHIVEDIR :默认搜集归档的目录,可以设置为不存在但是在系统中是有效的路径。
ADD:添加默认备份集搜索目录或归档日志目录,若已经存在,则替换原来的。
DELETE:删除指定默认备份集搜索目录或者归档日志目录。
TRACE:介质存储过程中使用的跟踪日志配置,包括文件路径(TRACE FILE)和日志级别(TRACE LEVEL),其中日志级别有效值(1/2,不写/写;默认为1,不写)。不支持asm类型文件。若用户指定,则指定的文件不能为已经存在的文件,否则报错;也不可以为ASM文件。

使用说明:
1. 设置的参数默认值仅在此DMRMAN实例存活期间有效。
2. DMRMAN命令中如果指定了相同的参数,会覆盖CONFIGURE的默认设置。

1.显示和清除所有默认配置项
使用CONFIGURE命令就可显示DMRMAN配置项的当前值。示例如下:

RMAN> configure
configure
THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:
MEDIA : DISK
DEFAULT TRACE :
FILE : ..\log\dm_SBTTRACE_202005.log
LEVEL : 1
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :0

DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :0

time used: 18.563(ms)

使用CONFIGURE…CLEAR命令可恢复任意一个配置项到默认值。示例如下:

RMAN>CONFIGURE DEFAULT DEVICE CLEAR;

或使用CONFIGURE…CLEAR命令清除所有的默认配置。示例如下:

RMAN>CONFIGURE CLEAR;

2.配置存储介质类型:DISK或TAPE
备份时如果没指定备份介质类型参数,则会使用CONFIGURE中配置的默认介质类型。DMRMAN预先配置的介质类型为DISK,不需要特别指定。修改介质类型默认配置的步骤如下:
1) 启动DMRMAN。
2) 执行CONFIGURE命令查看介质类型当前的默认值。

RMAN>CONFIGURE;

3) 执行CONFIGURE DEFAULT DEVICE TYPE修改默认值。

RMAN>CONFIGURE DEFAULT DEVICE TYPE TAPE PARMS 'command';

3.配置备份集搜集目录
备份集搜索目录用于增量备份还原中搜索基备份。单个目录最大长度为256个字节,可配置的备份集搜索目录没有限制。如果不指定备份集搜集目录只会在库的默认备份目录和当前备份执行备份集目录的上级目录下搜索备份集。配置备份集搜索目录步骤如下:

RMAN>CONFIGURE DEFAULT BACKUPDIR;
RMAN>CONFIGURE DEFAULT BACKUPDIR '/home/dm_bak1' ,'/home/dm_bak2';

若要增加或删除部分备份集搜索目录,不需要对所有的目录重新进行配置,只要添加或删除指定的目录即可。

RMAN> configure default backupdir;
configure default backupdir;
THE DMRMAN DEFAULT BACKUP DIRECTORY SETTING:

DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :0

time used: 14.267(ms)
RMAN> configure default backupdir 'E:\dmdbms\backup','E:\dmdbms\backup1';
configure default backupdir 'E:\dmdbms\backup' , 'E:\dmdbms\backup1';
configure default backupdir update successfully!
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\backup
E:\dmdbms\backup1
time used: 11.640(ms)

若要增加或删除部分备份集搜索目录,不需要对所有的目录重新进行配置,只要添加或删除指定的目录即可。

RMAN> configure default backupdir add 'E:\dmdbms\backup2';
configure default backupdir add 'E:\dmdbms\backup2';
configure default backupdir add successfully!
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :3

E:\dmdbms\backup
E:\dmdbms\backup1
E:\dmdbms\backup2
time used: 11.426(ms)
RMAN> configure default backupdir delete 'E:\dmdbms\backup2';
configure default backupdir delete 'E:\dmdbms\backup2';
configure default backupdir delete successfully!
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\backup
E:\dmdbms\backup1
time used: 11.564(ms)

4.配置归档日志搜集目录
归档日志搜索目录用于增量备份还原中搜索归档日志。单个目录最大长度为256个字节,可配置的归档日志搜索目录没有限制。配置归档日志搜索目录步骤如下:

RMAN> configure default archivedir 'E:\dmdbms\data\arch','E:\dmdbms\data\arch1';
configure default archivedir 'E:\dmdbms\data\arch' , 'E:\dmdbms\data\arch1';
configure default archivedir update successfully!
DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\data\arch
E:\dmdbms\data\arch1
time used: 10.620(ms)

若要增加或删除部分归档日志搜索目录,不需要对所有的目录重新进行配置,只要添加或删除指定的目录即可。

RMAN> configure default archivedir add 'E:\dmdbms\data\arch2';
configure default archivedir add 'E:\dmdbms\data\arch2';
configure default archivedir add successfully!
DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :3

E:\dmdbms\data\arch
E:\dmdbms\data\arch1
E:\dmdbms\data\arch2
time used: 12.888(ms)
RMAN> configure default archivedir delete 'E:\dmdbms\data\arch2';
configure default archivedir delete 'E:\dmdbms\data\arch2';
configure default archivedir delete successfully!
DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\data\arch
E:\dmdbms\data\arch1
time used: 17.910(ms)

5.配置跟踪日志文件
跟踪日志文件记录了SBT接口的调用过程,用户通过查看日志可跟踪备份还原过程(见3.2.3 数据备份高级主题)。DMRMAN备份还原命令中不支持设置跟踪日志文件,只能用CONFIGURE命令配置,默认配置不记录跟踪日志。配置跟踪日志文件步骤如下:
1)显示TRACE文件的默认配置。

RMAN> configure ;
configure;
THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:
MEDIA : DISK
DEFAULT TRACE :
FILE : ..\log\dm_SBTTRACE_202005.log
LEVEL : 1
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\backup
E:\dmdbms\backup1
DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :2

E:\dmdbms\data\arch
E:\dmdbms\data\arch1
time used: 38.030(ms)

2) 配置默认TRACE文件。

RMAN> configure default trace file 'E:\dmdbms\log\dm_trace.log';
configure default trace file 'E:\dmdbms\log\dm_trace.log';
configure default trace successfully!
time used: 2.877(ms)

3) 配置默认TRACE级别。

RMAN> configure default trace file '..\dm_SBTTRACE_202005.log' trace level 1;
configure default trace file '..\dm_SBTTRACE_202005.log' trace level 1;
configure default trace successfully!
time used: 45.502(ms)

MySQL InnoDB的索引扩展

索引扩展,InnoDB通过将主键列附加到每个辅助索引中来自动扩展该索引。创建如下表结构:

mysql> CREATE TABLE t1 (
    -> i1 INT NOT NULL DEFAULT 0,
    -> i2 INT NOT NULL DEFAULT 0,
    -> d DATE DEFAULT NULL,
    -> PRIMARY KEY (i1, i2),
    -> INDEX k_d (d)
    -> ) ENGINE = InnoDB;

Query OK, 0 rows affected (0.14 sec)

表t1在列(i1,i2)上定义了主键。同时也在列(d)上定义了一个辅助索引,但InnoDB扩展了这个索引并且将它视为(d,i1,i2)来处理。

在决定如何使用以及是否使用该索引时,优化器会考虑扩展辅助索引的主键列。这可以产生更高效的查询执行计划和更好的性能。

优化器可以使用扩展的二级索引来进行ref、range和index_merge索引访问,进行松散索引扫描,进行连接和排序优化,以及进行MIN()/MAX()优化。

下面的示例将显示优化器是否使用扩展辅助索引来影响执行计划 向表t1插入以下数据:


mysql> INSERT INTO t1 VALUES (1, 1, '1998-01-01'), (1, 2, '1999-01-01'), (1, 3, '2000-01-01'), (1, 4, '2001-01-01'),
    ->(1, 5, '2002-01-01'), (2, 1, '1998-01-01'), (2, 2, '1999-01-01'), (2, 3, '2000-01-01'),  (2, 4, '2001-01-01'),
    ->(2, 5, '2002-01-01'), (3, 1, '1998-01-01'), (3, 2, '1999-01-01'), (3, 3, '2000-01-01'), (3, 4, '2001-01-01'),
    ->(3, 5, '2002-01-01'), (4, 1, '1998-01-01'), (4, 2, '1999-01-01'), (4, 3, '2000-01-01'), (4, 4, '2001-01-01'),
    ->(4, 5, '2002-01-01'), (5, 1, '1998-01-01'), (5, 2, '1999-01-01'),  (5, 3, '2000-01-01'), (5, 4, '2001-01-01'),
    ->(5, 5, '2002-01-01');
Query OK, 25 rows affected (0.05 sec)
Records: 25  Duplicates: 0  Warnings: 0

假设执行下面的查询:

SET optimizer_switch = 'use_index_extensions=off';
explain select count(*) from t1 where i1=3 and d= '2000-01-01' ;

在这种情况下,优化器不能使用主键,因为主键包含列(i1、i2),并且查询没有引用i2。相反,优化器可以使用列(d)上的辅助索引k_d,执行计划取决于是否使用扩展索引。

当优化器不考虑索引扩展时,它将索引k_d仅视为(d)

mysql> SET optimizer_switch = 'use_index_extensions=off';
Query OK, 0 rows affected (0.00 sec)

mysql> explain select count(*) from t1 where i1=3 and d= '2000-01-01' \G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
   partitions: NULL
         type: ref
possible_keys: PRIMARY,k_d
          key: PRIMARY
      key_len: 4
          ref: const
         rows: 5
     filtered: 20.00
        Extra: Using where
1 row in set, 1 warning (0.00 sec)

当优化器考虑到索引扩展时,它将k_d视为(d, i1, i2)。在这种情况下,它可以使用最左边的索引前缀(d, i1)来生成更好的执行计划

mysql> SET optimizer_switch = 'use_index_extensions=on';
Query OK, 0 rows affected (0.00 sec)

mysql> explain select count(*) from t1 where i1=3 and d= '2000-01-01' \G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
   partitions: NULL
         type: ref
possible_keys: PRIMARY,k_d
          key: k_d
      key_len: 8
          ref: const,const
         rows: 1
     filtered: 100.00
        Extra: Using index
1 row in set, 1 warning (0.00 sec)

在这两种情况下,key表示优化器将使用辅助索引k_d,但是EXPLAIN输出显示了使用扩展索引所带来的这些改进:
.key_len从4字节变成了8字节,指示键查找使用了列d和i1,不仅仅是d。
.ref的值从const变成了const,const,因为键查找使用两个键的列而不是一个。
.rows:从5减到1,指示InnoDB将会检查更少的行来生成查询结果。
.Extra值从Using where;Using index变成了Using index。这意味着查询记录只需要使用索引而不用查询数据行记录。

可以使用show status来查看优化器在使用与不使用扩展索引时的差异:

mysql> flush table t1;
Query OK, 0 rows affected (0.01 sec)

mysql> flush status;
Query OK, 0 rows affected (0.03 sec)

上面的flush table和flush status语句用来清除表的缓存和清除状数据统计数据。

不使用索引扩展时show status产生的结果如下:

mysql> SET optimizer_switch = 'use_index_extensions=off';
Query OK, 0 rows affected (0.01 sec)

mysql> select count(*) from t1 where i1=3 and d= '2000-01-01';
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

mysql> show status like 'handler_read%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Handler_read_first    | 0     |
| Handler_read_key      | 1     |
| Handler_read_last     | 0     |
| Handler_read_next     | 5     |
| Handler_read_prev     | 0     |
| Handler_read_rnd      | 0     |
| Handler_read_rnd_next | 0     |
+-----------------------+-------+
7 rows in set (0.00 sec)

使用索引扩展时,show status产生的结果如下,其中handler_read_next的值从5减到1,指示使用这个索引更有效率:

mysql> flush table t1;
Query OK, 0 rows affected (0.01 sec)

mysql> flush status
    -> ;
Query OK, 0 rows affected (0.02 sec)

mysql> SET optimizer_switch = 'use_index_extensions=on';
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t1 where i1=3 and d= '2000-01-01';
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

mysql> show status like 'handler_read%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Handler_read_first    | 0     |
| Handler_read_key      | 1     |
| Handler_read_last     | 0     |
| Handler_read_next     | 1     |
| Handler_read_prev     | 0     |
| Handler_read_rnd      | 0     |
| Handler_read_rnd_next | 0     |
+-----------------------+-------+
7 rows in set (0.01 sec)

系统变量optimizer_switch的use_index_extensions标志允许优化器在决定如何使用InnoDB表的辅助索引时使不使用主键列。默认情况下,use_index_extensions是启用的。为了检查禁用索引扩展是否可以提高性能可以执行以下语句:

mysql> SET optimizer_switch = 'use_index_extensions=off';
Query OK, 0 rows affected (0.01 sec)

使用Disql执行表还原的复杂用法

下面介绍一些表还原操作中复杂的还原场景。主要内容包括:
1. 指定还原时不重建索引
2. 指定还原时不重建约束

1.指定还原时不重建索引
表备份时会默认备份表中的索引,还原时使用RESTORE TABLE…WITHOUT INDEX…语句可选择不还原索引。完整示例如下:
1) 保证数据库为OPEN状态。
2) 准备数据。创建待备份的表及索引。

SQL> create table tab_for_idx_01(c1 int);
操作已执行
已用时间: 6.323(毫秒). 执行号:108.
SQL> begin
2   for i in 1 .. 10 loop
3   insert into tab_for_idx_01 values(i);
4   end loop;
5   end;
6   /
DMSQL 过程已成功完成
已用时间: 1.236(毫秒). 执行号:109.

SQL> create index i_tab_for_idx_01 on tab_for_idx_01(c1);
操作已执行
已用时间: 11.300(毫秒). 执行号:110.

3) 备份表数据。

SQL> backup table tab_for_idx_01 backupset 'E:\dmdbms\backup\tab_for_idx_01_bak';
操作已执行
已用时间: 00:00:01.099. 执行号:111.

4) 校验备份。此步骤为可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_idx_01_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_idx_01_bak')
---------- -------------------------------------------------------------
1          1

已用时间: 20.171(毫秒). 执行号:112.

5) 还原表数据,但不重建索引。

SQL> restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak';
restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak';
[-8327]:还原表中存在二级索引或冗余约束.
已用时间: 31.373(毫秒). 执行号:0.
SQL> restore table tab_for_idx_01 struct from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak';
操作已执行
已用时间: 44.737(毫秒). 执行号:125.
SQL> restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak';
操作已执行
已用时间: 78.096(毫秒). 执行号:126.
SQL> select * from tab_for_idx_01;

行号       C1
---------- -----------
1          1
2          2
3          3
4          4
5          5
6          6
7          7
8          8
9          9
10         10

SQL> select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_IDX_01';

行号       OWNER  TABLE_NAME     INDEX_NAME
---------- ------ -------------- -------------
1          SYSDBA TAB_FOR_IDX_01 INDEX33555549

已用时间: 35.494(毫秒). 执行号:132.

2.指定还原时不重建约束
表备份时会默认备份表中的索引定义,还原时使用RESTORE TABLE…WITHOUT CONSTRAINT…语句可选择还原时不重建约束。完整示例如下:
1) 保证数据库为OPEN状态。
2) 准备数据。创建待备份的表及索引。

SQL> create table tab_for_cons_01(c1 int);
操作已执行
已用时间: 4.824(毫秒). 执行号:134.
SQL> alter table tab_for_cons_01 add constraint unique_cons1 unique(c1);
操作已执行
已用时间: 7.979(毫秒). 执行号:135.
SQL> select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_CONS_01';

行号       OWNER  TABLE_NAME      INDEX_NAME
---------- ------ --------------- -------------
1          SYSDBA TAB_FOR_CONS_01 INDEX33555551
2          SYSDBA TAB_FOR_CONS_01 INDEX33555552

已用时间: 32.121(毫秒). 执行号:136.

SQL> select owner,constraint_name,constraint_type,table_name from dba_constraints where owner='SYSDBA' and table_name='TAB_FOR_CONS_01';

行号       OWNER  CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
---------- ------ --------------- --------------- ---------------
1          SYSDBA UNIQUE_CONS1    U               TAB_FOR_CONS_01

已用时间: 17.818(毫秒). 执行号:138.
SQL> begin
2   for i in 1 .. 10 loop
3   insert into tab_for_cons_01 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 3.485(毫秒). 执行号:143.

3) 备份表数据。

SQL> backup table tab_for_cons_01 backupset 'E:\dmdbms\backup\tab_for_cons_01_bak';
操作已执行
已用时间: 00:00:01.128. 执行号:144.

4) 校验备份。此步骤为可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_cons_01_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_cons_01_bak')
---------- --------------------------------------------------------------
1          1

已用时间: 33.044(毫秒). 执行号:145.

5) 还原表数据,但不还原约束。

SQL> truncate table tab_for_cons_01;
操作已执行
已用时间: 5.036(毫秒). 执行号:146.
SQL> select * from tab_for_cons_01;
未选定行

已用时间: 1.542(毫秒). 执行号:147.
SQL> restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak';
restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak';
[-8327]:还原表中存在二级索引或冗余约束.
已用时间: 33.927(毫秒). 执行号:0.
SQL> restore table tab_for_cons_01 struct from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak';
操作已执行
已用时间: 38.765(毫秒). 执行号:149.
SQL> restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak';
操作已执行
已用时间: 75.178(毫秒). 执行号:150.
SQL> select * from tab_for_cons_01;

行号       C1
---------- -----------
1          1
2          2
3          3
4          4
5          5
6          6
7          7
8          8
9          9
10         10

10 rows got

已用时间: 2.870(毫秒). 执行号:151.
SQL>  select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_CONS_01';

行号       OWNER  TABLE_NAME      INDEX_NAME
---------- ------ --------------- -------------
1          SYSDBA TAB_FOR_CONS_01 INDEX33555551

已用时间: 21.005(毫秒). 执行号:152.

查询约束发现确实没有被还原

SQL> select owner,constraint_name,constraint_type,table_name from dba_constraints where owner='SYSDBA' and table_name='TAB_FOR_CONS_01';
未选定行

已用时间: 9.087(毫秒). 执行号:153.

使用Disql执行表空间还原的复杂用法

下面将介绍一些不常用且较复杂的还原场景。主要内容包括:
1. 指定归档目录还原
2. 还原表空间中指定的数据文件
3. 指定映射文件还原

1.指定归档目录还原
由于磁盘空间的影响,服务器归档可能出现分布在多个目录的情况。出现这种情况时就需要指定归档目录还原。还原时指定多个归档目录的操作步骤如下:
1) 备份用户表空间MAIN。

SQL> backup tablespace main to ts_main_bak_for_arch backupset 'E:\dmdbms\backup\ts_main_bak_for_arch';
操作已执行
已用时间: 00:00:01.116. 执行号:80.

2) 校验备份。此步骤可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_main_bak_for_arch');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_main_bak_for_arch')
---------- ---------------------------------------------------------------
1          1

已用时间: 18.229(毫秒). 执行号:81.

3) 还原用户表空间MAIN。假设归档日志分布在目录为E:\dmdbms\data\arch和E:\dmdbms\data\arch1两个目录下。

SQL> alter tablespace main offline;
操作已执行
已用时间: 111.415(毫秒). 执行号:82.
SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_main_bak_for_arch' with backupdir 'E:\dmdbms\data\arch','E:\dmdbms\data\arch1';
操作已执行
已用时间: 414.930(毫秒). 执行号:83.
SQL> alter tablespace main online;
操作已执行
已用时间: 27.742(毫秒). 执行号:84.

2.还原表空间中指定的数据文件
DM7不仅支持从数据库备份和表空间备份中还原表空间,还支持还原表空间中特定的数据文件。若表空间已经被破坏,则不允许执行特定数据文件的还原。使用数据库备份还原表空间或表空间中的数据文件与使用表空间备份操作类似,区别在于RESTORE语句中指定的备份集为数据库备份集。因此,本节仅以使用表空间备份为例说明还原数据文件的操作步骤。
1) 创建待备份的表空间TS_FOR_RES_01, 并在库目录下创建3个数据文件。

SQL> create tablespace ts_for_res_01 datafile 'ts_for_res_01_01.dbf' size 128;
操作已执行
已用时间: 83.275(毫秒). 执行号:87.
SQL> alter tablespace ts_for_res_01 add datafile 'ts_for_res_01_02.dbf' size 128;
操作已执行
已用时间: 38.806(毫秒). 执行号:88.
SQL> alter tablespace ts_for_res_01 add datafile 'ts_for_res_01_03.dbf' size 128;
操作已执行
已用时间: 42.169(毫秒). 执行号:89.

2) 备份表空间。

SQL> backup tablespace ts_for_res_01 backupset 'E:\dmdbms\backup\ts_for_res_01_bak';
操作已执行
已用时间: 00:00:01.161. 执行号:93.

3) 查询数据文件的文件编号或路径。还原指定的数据文件需知道数据文件对应的文件编号或路径,相关信息可通过查询动态视图V$DATAFILE获取。

SQL> select group_id,id,path from v$datafile;

行号       GROUP_ID    ID          PATH
---------- ----------- ----------- ----------------------------------------
1          0           0           E:\dmdbms\data\jydm\SYSTEM.DBF
2          1           0           E:\dmdbms\data\jydm\ROLL.DBF
3          3           0           E:\dmdbms\data\jydm\TEMP.DBF
4          4           0           E:\dmdbms\data\jydm\MAIN.DBF
5          5           0           E:\dmdbms\data\jydm\BOOKSHOP.DBF
6          6           0           E:\dmdbms\data\jydm\DMHR.DBF
7          7           0           E:\dmdbms\data\jydm\ts_for_res_01_01.dbf
8          7           1           E:\dmdbms\data\jydm\ts_for_res_01_02.dbf
9          7           2           E:\dmdbms\data\jydm\ts_for_res_01_03.dbf

9 rows got

已用时间: 1.655(毫秒). 执行号:94.

如果想还原ts_for_res_01_02.dbf和ts_for_res_01_03.dbf两个数据文件,通过查询结果可知它们的文件编号(1和2)以及相应的路径。

4) 校验备份。此步骤为可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_for_res_01_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_for_res_01_bak')
---------- ------------------------------------------------------------
1          1

已用时间: 32.108(毫秒). 执行号:95.

5) 通过文件编号还原表空间TS_FOR_RES_01中的数据文件ts_for_res_01_02.dbf和ts_for_res_01_03.dbf。

SQL> alter tablespace ts_for_res_01 offline;
操作已执行
已用时间: 105.157(毫秒). 执行号:96.
SQL> restore tablespace ts_for_res_01 datafile 1,2 from backupset 'E:\dmdbms\backup\ts_for_res_01_bak';
操作已执行
已用时间: 358.862(毫秒). 执行号:97.

如果不想使用文件编号还原,使用指定数据文件路径还原数据文件的语句如下:

SQL> restore tablespace ts_for_res_01 datafile 'E:\dmdbms\data\jydm\ts_for_res_01_02.dbf','E:\dmdbms\data\jydm\ts_for_res_01_03.dbf' from backupset 'E:\dmdbms\backup\ts_for_res_01_bak';
操作已执行
已用时间: 344.008(毫秒). 执行号:98.
SQL> alter tablespace ts_for_res_01 online;
操作已执行
已用时间: 24.644(毫秒). 执行号:99.

3.指定映射文件还原
映射文件用于指定存放还原目标路径,即备份集里面的数据文件路径。指定映射文件还原可以重新指定备份集中数据文件的路径。下面以MAIN表空间为例说明如何使用映射文件还原。
1) 备份MAIN表空间。

SQL>BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_map';

2) 使用DMRMAN的DUMP命令生成映射文件ts_bak_mapped.txt,存至’E:\dmdbms\backup\目录。文件中指定数据文件MAIN.DBF还原后的路径为E:\dmdbms\data\jydm\MAIN.DBF。

RMAN> dump backupset  'E:\dmdbms\backup\ts_main_bak_for_map'  device type disk mapped file  'E:\dmdbms\backup\ts_bak_mapped.txt';
dump backupset 'E:\dmdbms\backup\ts_main_bak_for_map' device type disk mapped file 'E:\dmdbms\backup\ts_bak_mapped.txt';
dump mapped file successfully.
time used: 28.360(ms)



/**************************************************************/
/***  Delete the unnecessary modified groups                 **/
/***  Modify the data_path or mirror_path only in one group  **/
/**************************************************************/

/**=============================================================**/
/*[jydm_MAIN_FIL_0]*/
fil_id         = 0
ts_id          = 4
ts_name        = MAIN
data_path      = E:\dmdbms\data\jydm\MAIN.DBF
mirror_path    =

/***************************** END ****************************/

3) 还原MAIN表空间。

SQL> alter tablespace main offline;
操作已执行
已用时间: 119.506(毫秒). 执行号:102.
SQL> select * from tab_for_res_2;
select * from tab_for_res_2;
[-3408]:表空间[MAIN]处于脱机状态.
已用时间: 1.372(毫秒). 执行号:0.
SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_main_bak_for_map' mapped file 'E:\dmdbms\backup\ts_bak_mapped.txt';
操作已执行
已用时间: 377.253(毫秒). 执行号:104.
SQL> alter tablespace main online;
操作已执行
已用时间: 17.211(毫秒). 执行号:105.
SQL> select * from tab_for_res_2;

行号       C1
---------- -----------
1          1
2          2
3          3
4          4
5          5
6          6
7          7
8          8
9          9
10         10

10 rows got

已用时间: 2.604(毫秒). 执行号:106.

DM7使用Disql执行表还原

DM7仅支持表空间和表的联机还原,数据库和归档日志的还原必须通过脱机工具DMRMAN执行。下面主要介绍如何使用DIsql工具还原表空间和表。
下面将介绍使用DIsql工具完成基本的表还原操作及实施一些还原策略。主要内容包括:
1. 概述
2. 表还原

1. 概述
表还原与表空间还原不同,不需要配置归档,DIsql中输入以下简单的RESTORE语句就可还原表:

SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
语法如下:
RESTORE TABLE [<表名>][STRUCT]
[WITH INDEX | WITHOUT INDEX] [WITH CONSTRAINT|WITHOUT CONSTRAINT]
FROM BACKUPSET'<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[IDENTIFIED BY <密码>] [ENCRYPT WITH <加密算法>]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];

TABLE:需要还原的表名称。

STRUCT:执行表结构还原,若未指定,则认为是表中数据还原;表数据还原要求还原目标表结构与备份集中完全一致,否则报错,所以表结构还原可以在表数据还原之前执行,减少报错。

WITH INDEX/WITHOUT INDEX:指定还原数据后是否重建二级索引,默认重建。

WITH CONSTRAINT/WITHOUT CONSTRAINT:指定还原数据后是否重建约束,默认重建。

BACKUPSET:表空间备份时指定的备份集路径。若指定为相对路径,会在默认备份目录下搜索备份集。

DEVICE TYPE:指存储备份集的介质类型,目前表还原暂时仅支持DISK,表示备份集存储介质为磁盘。

PARMS:介质参数,只对介质类型为TAPE时有效。

IDENTIFIED BY:加密备份表时,用户设置的密码。

ENCRYPT WITH:加密算法。缺省情况下,算法为AES256_CFB。

TRACE FILE:指定生成的TRACE文件名。

TRACE LEVEL:有效值1、2,默认为1表示不启用TRACE,为2表示启用TRACE。

使用说明:
1. 仅支持对普通用户表进行还原,包括堆表。其中,系统表、临时表、物化视图表、物化视图附属表和日志表、特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表不支持还原。表列类型为对象类型的表也不支持表还原。若还原表中存在位图连接索引和位图连接虚索引也不支持还原。

2. 备份集路径指备份集所在目录,其中应包含完整备份数据,包括元数据文件(.meta)和备份片文件(.bak)。仅支持从表备份集中还原表。

3. 表名设置为可选参数。若指定,则表必须存在且表定义必须与备份表严格一致;若不指定,则使用备份集中记录的备份表作为还原目标表。

4. 若指定WITHOUT INDEX,则还原后目标表中无索引信息,即使目标表本来存在,也会被删除;若未指定,则在数据还原后重新创建备份集中索引,目标表原来的索引信息会被删除。

5. 若指定WITHOUT CONSTRAINT,则还原后目标表中无约束信息,聚集主键除外,即使目标表本来存在,也会被删除;若未指定,则在数据还原后重新创建备份集中约束,目标表原来的约束信息会被删除。

6. 目标表所在的表空间必须处于联机状态。

7. 数据守护环境下,主库允许表备份还原,备库不允许。

8. MOUNT和SUSPEND状态下不允许进行表还原。

9. MPP环境不允许进行表还原。

10. 若在语句中指定STRUCT关键字,则执行表结构还原。表结构还原会根据备份集中备份表还原要求,对目标表定义进行校验,并删除目标表中已存在的二级索引和约束;若未指定WITHOUT CONSTRAINT,则会将备份集中的CHECK约束在目标表上重建。

11. 不指定STRUCT关键字,则执行表数据还原,表数据还原默认仅会将备份表中聚集索引上数据进行还原。表数据还原默认仅会在目标表定义与备份表一致且不存在二级索引和约束的情况下执行;若还原时未指定WITHOUT CONSTRAINT,也允许目标表中存在与备份表中相同的CHECK约束。

12. 若在未指定STRUCT的情况下,执行还原出现存在二级索引或冗余约束的错误;或者不指定目标表时,报目标不存在的情况,可先执行STRUCT还原后,再继续执行实际数据的还原。

13. WITH /WITHOUT INDEX用于指定还原数据后是否重建二级索引,默认重建;WITH/WITHOUT CONSTRAINT指定还原数据后是否在目标表上重建约束,默认重建。对于备份表中存在的无效索引和约束,若索引为无效或者不可见,则重建后,也保持无效或者不可见;若约束无效,则重建后,约束也保持无效状态。

14. TRACE FILE若用户指定,则指定的文件不能为已经存在的文件,否则报错;也不可以为ASM文件。

15. 若表中存在大字段列,表备份时INI参数BLOB_OUTROW_REC_STOR大于0,而建立还原目标表时INI参数BLOB_OUTROW_REC_STOR等于0,那么若大字段列存在行外数据,在执行表还原时会报错,且表数据会丢失。

16. 表还原不检查目标表的缺省表达式(default值)。

2. 表还原
执行表还原,数据库必须处于OPEN状态,MOUNT和SUSPEND状态下不允许执行表还原。与表空间还原不同,表还原不需要配置归档。表还原是联机完全备份还原,不需要借助本地归档日志,所以还原后不需要恢复。完整的表备份还原步骤如下:
1) 保证数据库为OPEN状态。
2) 创建待备份的表。

SQL> create table tab_for_res_1(c1 int);
操作已执行
已用时间: 3.498(毫秒). 执行号:57.
SQL> begin
2   for i in 1 .. 100 loop
3   insert into tab_for_res_1 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 2.710(毫秒). 执行号:58.

3) 备份表数据。

SQL> backup table tab_for_res_1 to tab_for_res_1_bak backupset 'E:\dmdbms\backup\tab_for_res_1_bak';
操作已执行
已用时间: 00:00:01.138. 执行号:59.

4) 校验备份。此步骤为可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_res_1_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_res_1_bak')
---------- ------------------------------------------------------------
1          1

已用时间: 21.435(毫秒). 执行号:60.

5) 还原表数据。

SQL> truncate table tab_for_res_1;
操作已执行
已用时间: 5.238(毫秒). 执行号:62.
SQL> select count(*) from tab_for_res_1;

行号       COUNT(*)
---------- --------------------
1          0

已用时间: 1.165(毫秒). 执行号:63.
SQL> restore table tab_for_res_1 from backupset 'E:\dmdbms\backup\tab_for_res_1_bak';
操作已执行
已用时间: 68.217(毫秒). 执行号:64.
SQL> select count(*) from tab_for_res_1;

行号       COUNT(*)
---------- --------------------
1          100

已用时间: 1.329(毫秒). 执行号:65.

表还原实质是表内数据的还原,以及索引和约束等的重建。如果备份文件与目标表中都包含索引或约束该如何还原呢?下面以表中包含索引为例说明如何还原表,具体步骤如下:
1) 保证数据库为OPEN状态。
2) 创建待备份的表。

SQL> create table tab_for_res_2(c1 int);
操作已执行
已用时间: 3.088(毫秒). 执行号:67.
SQL> begin
2   for i in 1 .. 10 loop
3   insert into tab_for_res_2 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 5.434(毫秒). 执行号:68.

3) 创建索引。

SQL> create index i_tab_for_res_2 on tab_for_res_2(c1);
操作已执行
已用时间: 6.720(毫秒). 执行号:69.

4) 备份表。

SQL> backup table tab_for_res_2 backupset 'E:\dmdbms\backup\tab_for_res_2_bak';
操作已执行
已用时间: 00:00:01.102. 执行号:70.

5) 校验备份。此步骤为可选。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_res_2_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_res_2_bak')
---------- ------------------------------------------------------------
1          1

已用时间: 38.046(毫秒). 执行号:71.

6) 执行表结构还原。表备份和表中都包含索引,如果直接执行表数据还原会报错:还原表中存在二级索引或冗余约束。

SQL> truncate table tab_for_res_2;
操作已执行
已用时间: 4.115(毫秒). 执行号:73.
SQL> select * from tab_for_res_2;
未选定行

已用时间: 1.113(毫秒). 执行号:74.
SQL> restore table tab_for_res_2 from backupset 'E:\dmdbms\backup\tab_for_res_2_bak';
restore table tab_for_res_2 from backupset 'E:\dmdbms\backup\tab_for_res_2_bak';
[-8327]:还原表中存在二级索引或冗余约束.
已用时间: 22.306(毫秒). 执行号:0.
SQL> restore table tab_for_res_2 struct from backupset 'E:\dmdbms\backup\tab_for_res_2_bak';
操作已执行
已用时间: 27.047(毫秒). 执行号:76.

7) 执行表数据还原。

SQL> restore table tab_for_res_2 from backupset 'E:\dmdbms\backup\tab_for_res_2_bak';
操作已执行
已用时间: 66.335(毫秒). 执行号:77.
SQL> select * from tab_for_res_2;

行号       C1
---------- -----------
1          1
2          2
3          3
4          4
5          5
6          6
7          7
8          8
9          9
10         10

10 rows got

已用时间: 1.491(毫秒). 执行号:78.

DM7使用Disql执行表空间还原

DM7仅支持表空间和表的联机还原,数据库和归档日志的还原必须通过脱机工具DMRMAN执行。本章节主要介绍如何使用DIsql工具还原表空间和表。
下面将介绍使用DIsql工具完成基本的表空间还原操作及实施一些还原策略。主要内容包括:
1. 概述
2. 表空间还原

1. 概述
在DIsql中使用RESTORE语句可以还原表空间,还原表空间需要服务器运行在归档模式下且还原之前需要将表空间脱机。启动DIsql输入以下语句即可还原表空间:

SQL> backup tablespace main to ts_main_bak backupset 'E:\dmdbms\backup\ts_main_bak';
操作已执行
已用时间: 00:00:01.066. 执行号:4.
SQL> alter tablespace main offline;
操作已执行
已用时间: 101.032(毫秒). 执行号:5.
SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_main_bak';
操作已执行
已用时间: 316.624(毫秒). 执行号:6.
SQL> alter tablespace main online;
操作已执行
已用时间: 9.330(毫秒). 执行号:7.

指定备份集“E:\dmdbms\backup\ts_main_bak”为绝对路径,如果指定相对路径,服务器自动会在默认备份路径下搜索备份集。

语法如下:

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

TABLESPACE:指定还原的表空间,除了temp表空间。

DATAFILE:还原指定的数据文件。可以指定数据文件编号或数据文件路径。文件编号,对应动态视图V$DATAFILE中ID列的值;文件路径,对应动态视图V$DATAFILE中PATH或者MIRROR_PATH列的值,也可以仅指定数据文件名称(相对路径),与表空间中数据文件匹配时,会使用SYSTEM目录补齐。

BACKUPSET:指定还原备份集的路径。若指定为相对路径,会在默认备份目录下搜索备份集。

DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认DISK。DISK表示备份集存储介质为磁盘,TAPE表示备份集存储介质为磁带。

PARMS:介质参数,只对介质类型为TAPE时有效。

IDENTIFIED BY:加密备份表空间时,用户设置的密码。

ENCRYPT WITH:加密算法。缺省情况下,算法为AES256_CFB。具体包含哪些加密算法请参考表空间备份的参数说明。

WITH BACKUPDIR:指定备份搜索目录,最大长度为256个字节。使用完全备份还原中,若指定的备份集路径为相对路径可通过设置此参数搜索备份集;增量备份还原中设置该参数除上述功能外还用于搜索基备份集。

WITH ARCHIVEDIR:归档日志搜索目录。如果归档日志不在配置文件中指定的目录下,或者归档日志分散在多个目录,此时就需要指定该参数用于搜索归档日志。

MAPPED FILE :指定存放还原目标路径的文件,参考3.3.5.2.1小节。

TRACE FILE: 指定生成的TRACE文件。启用TRACE,但不指定TRACE FILE时,默认在DM数据库系统的log目录下生成DM_SBTTRACE_年月.LOG文件;若使用相对路径,则生成在执行码同级目录下。若用户指定,则指定的文件不能为已经存在的文件,否则报错;也不可以为ASM文件。

TRACE LEVEL:有效值1、2,默认为1表示不启用TRACE,此时若指定了TRACE FILE,会生成TRACE文件,但不写入TRACE信息;为2启用TRACE并写入TRACE相关内容。

TASK THREAD:还原过程中数据处理过程线程的个数,取值范围0~64,默认为4,与备份过程中数据处理过程相对应。若指定为0,则调整为1;若指定超过当前系统主机核数,则调整为当前系统主机核数。

NOT PARALLEL:指定并行备份集使用非并行方式还原。对于非并行备份集,不论是否指定该关键字,均采用非并行还原。

UNTIL TIME:恢复表空间到指定的时间点。主备环境不支持。

UNTIL LSN:恢复表空间到指定的LSN。主备环境不支持。

表空间还原不建议使用UNTIL LSN或者UNTIL TIME,若要使用,则确保备份集生成之后未执行过DDL操作,否则将可能出现不可预知的后果。

使用说明:
1. 支持从非DDL_CLONE的库级备份集和表空间级备份集中还原出指定表空间,若还原目标表空间状态不是RES_OFFLINE或CORRUPT,还原指定表空间中指定数据文件。
2. 备份集路径是指备份集所在目录,其中应包含完整备份数据,包括元数据文件(.meta)和备份片文件(.bak)。
3. 还原前应该先将还原的表空间脱机,只能还原用户表空间。
4. 该功能在配置本地归档后才起作用,若为RAC库中表空间还原,则需要配置REMOTE归档。
5. MPP环境不允许进行表空间还原。
6. 若指定NOT PARALLEL,则认为并行备份不使用并行还原,默认并行备份执行并行还原。对于非并行备份集还原,则忽略。
7. 若未指定UNTIL TIME或者UNTIL LSN,则均还原到最新状态。使用UNTIL TIME(或者UNTIL LSN)的同时不能指定DATAFILE还原,否则报语法错误。
8. OPEN和MOUNT状态下支持表空间还原,SUSPEND状态下则不支持。

2. 表空间还原
本节介绍使用DIsql工具如何还原表空间。本节主要内容包括:
1. 使用表空间完全备份还原表空间
2. 使用表空间增量备份还原表空间
3. 使用数据库备份还原表空间

1.使用表空间完全备份还原表空间
表空间的还原、恢复操作是一次性完成,因此还原后不需要执行恢复操作。使用表空间完全备份还原表空间的完整步骤如下:
1) 配置归档。
2) 保证数据库处于OPEN或MOUNT状态。
3) 备份表空间。

SQL> backup tablespace main to ts_main_bak backupset 'E:\dmdbms\backup\ts_main_bak';
操作已执行
已用时间: 00:00:01.069. 执行号:9.

4) 校验表空间备份。此步骤为可选,如果确定备份文件合法可不进行备份校验。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_main_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_main_bak')
---------- ------------------------------------------------------
1          1

已用时间: 17.741(毫秒). 执行号:10.

5) 修改表空间为脱机。

SQL> alter tablespace main offline;
操作已执行
已用时间: 137.581(毫秒). 执行号:11.

6) 还原表空间。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_main_bak';
操作已执行
已用时间: 276.897(毫秒). 执行号:12.

7) 修改表空间为联机。

SQL> alter tablespace main online;
操作已执行
已用时间: 17.971(毫秒). 执行号:13.

2.使用表空间增量备份还原表空间
在增量备份与基备份同目录情况下,使用增量备份还原表空间步骤与完全备份一致。当增量备份与基备份不在同一个目录下时需要使用RESTORE TABLESPACE…WITH BACKUPDIR语句还原。这里以后面一种情况为例说明使用增量备份还原表空间。步骤如下:
1) 配置归档。
2) 保证数据库处于OPEN或MOUNT状态。
3) 完全备份表空间。

SQL> backup tablespace main to ts_main_full_bak backupset 'E:\dmdbms\backup\ts_main_full_bak';
操作已执行
已用时间: 00:00:01.095. 执行号:35.

4) 多次增量备份表空间。

SQL> begin
2   for i in 1 .. 100 loop
3    insert into t1 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 过程已成功完成
已用时间: 3.383(毫秒). 执行号:36.
SQL> backup tablespace main increment with backupdir 'E:\dmdbms\backup\ts_main_full_bak' backupset 'E:\dmdbms\backup1\ts_main_incr_bak_01';
操作已执行
已用时间: 00:00:01.079. 执行号:37.


SQL> begin
2   for i in 101 .. 200 loop
3   insert into t1 values(i);
4   end loop;
5   end;
6   /
DMSQL 过程已成功完成
已用时间: 1.274(毫秒). 执行号:38.
SQL> alter system switch logfile;
操作已执行
已用时间: 14.166(毫秒). 执行号:0.
SQL> backup tablespace main increment with backupdir 'E:\dmdbms\backup\ts_main_full_bak','E:\dmdbms\backup1\ts_main_incr_bak_01' backupset 'E:\dmdbms\backup2\ts_main_incr_bak_02';
操作已执行
已用时间: 00:00:01.081. 执行号:39.

5) 校验表空间备份。此步骤为可选,如果确定备份文件合法可不进行备份校验。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_main_full_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_main_full_bak')
---------- -----------------------------------------------------------
1          1

已用时间: 20.931(毫秒). 执行号:40.
SQL> select sf_bakset_check('disk','E:\dmdbms\backup1\ts_main_incr_bak_01');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup1\ts_main_incr_bak_01')
---------- ---------------------------------------------------------------
1          1

已用时间: 31.184(毫秒). 执行号:41.
SQL> select sf_bakset_check('disk','E:\dmdbms\backup2\ts_main_incr_bak_02');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup2\ts_main_incr_bak_02')
---------- ---------------------------------------------------------------
1          1

已用时间: 25.171(毫秒). 执行号:42.

6) 修改表空间为脱机

SQL> alter tablespace main offline;
操作已执行
已用时间: 98.420(毫秒). 执行号:43.

7) 使用增量备份E:\dmdbms\backup2\ts_main_incr_bak_02还原表空间。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup2\ts_main_incr_bak_02' with backupdir 'E:\dmdbms\backup\ts_main_full_bak','E:\dmdbms\backup1\ts_main_incr_bak_01';
操作已执行
已用时间: 370.046(毫秒). 执行号:44.

8) 修改表空间为联机。

SQL> alter tablespace main online;
操作已执行
已用时间: 15.717(毫秒). 执行号:45.
SQL> select count(*) from t1;

行号       COUNT(*)
---------- --------------------
1          200

已用时间: 1.345(毫秒). 执行号:46.

3.使用数据库备份还原表空间
使用数据库备份还原表空间可以快速还原一个或多个表空间,而不影响数据库中其他的表空间和对象。在数据库中仅有特定的表空间损坏且没有表空间备份的情况下,可以选择使用此种方式还原。
具体步骤如下:
1) 配置归档。
2) 保证数据库处于OPEN或MOUNT状态。
3) 创建数据库完全备份。

SQL> backup database full to db_jydm_full_bak backupset 'E:\dmdbms\backup\ts_jydm_full_bak';
操作已执行
已用时间: 00:00:01.198. 执行号:50.

4) 校验表空间备份。此步骤为可选,如果确定备份文件合法可不进行备份校验。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_jydm_full_bak');

行号       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_jydm_full_bak')
---------- -----------------------------------------------------------
1          1

已用时间: 46.115(毫秒). 执行号:51.

5) 修改表空间为脱机。

SQL> alter tablespace main offline;
操作已执行
已用时间: 96.596(毫秒). 执行号:52.

6) 还原表空间。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_jydm_full_bak';
操作已执行
已用时间: 326.842(毫秒). 执行号:53.

7) 修改表空间为联机。

SQL> alter tablespace main online;
操作已执行
已用时间: 17.338(毫秒). 执行号:54.
SQL> select count(*) from t1;

行号       COUNT(*)
---------- --------------------
1          200

已用时间: 1.969(毫秒). 执行号:55.