1 概述
本篇主要了解如何使用 DMRMAN 工具管理数据库备份、表空间备份及表备份。
管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导入备份集。下文将对这些命令进行详细介绍。
若命令中指定了 dm.ini,则要求 dm.ini 配置正确。
2 备份集查看
2.1 概述
DMRMAN 中使用 SHOW 命令可以查看备份集的信息,包括:
备份集的数据库信息
备份集的元信息
备份集中文件信息(如备份数据文件 DBF 和备份片文件)
备份集中表信息(仅对表备份集有效)
若指定具体备份集目录,则会生成相应的备份集链表信息。
语法如下:/dave/article/3600
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。
:指定显示备份集信息内容,可以组合指定,若未指定,则显示全部。具体说明如下:
DB 表示仅显示备份集的数据库信息;
META 表示仅显示备份集的元信息;
FILE 表示仅显示备份集中文件信息,如备份数据文件 DBF 和备份片文件;
TABLE 表示显示备份集中表信息,仅对表备份集有效。
:SHOW BACKUPSETS 可以指定仅显示指定 DB_MAGIC 即指定数据库的备份集信息。
:指定备份集信息输出的目标文件路径,若不指定,仅控制台打印。
文件格式有两种类型,TXT 和 XML 格式,默认是 TXT 格式。不支持输出到 DMASN 文件系统中。指定的文件不能为已经存在的文件,否则报错。
2.2 备份信息查看
SHOW 命令支持查看单个备份集信息也支持批量查看多个备份集的信息。常用的查看备份集信息操作有:/dave/article/3600/dave/article/3600
查看指定的备份集信息
批量显示备份集信息
查看指定数据库所有备份集的信息
指定显示部分备份集信息
以 xml 格式输出备份信息到文件
2.2.1 查看指定的备份集信息
SHOW BACKUPSET…命令用于显示特定的备份集信息,每次只能显示一个备份集。
当仅需要查看某个特定备份集信息时可以使用此命令。/dave/article/3600
#备份数据库:
RMAN> BACKUP DATABASE '/dm/dmdbms/data/cndba/dm.ini'
BACKUP DATABASE '/dm/dmdbms/data/cndba/dm.ini'
file dm.key not found, use default license!
……
BACKUPSET [/dm/dmdbms/data/cndba/bak/DB_cndba_FULL_20290305_230108_000258] END, CODE [0]......
META GENERATING......
……
backup successfully!
time used: 7030.297(ms)
RMAN>
查看备份集信息:
RMAN> show backupset '/dm/dmdbms/data/cndba/bak/DB_cndba_FULL_20290305_230108_000258'
show backupset '/dm/dmdbms/data/cndba/bak/DB_cndba_FULL_20290305_230108_000258'
system path: /dm/dmdbms/data/cndba
db magic: 1232911348
permanent magic: 1196983552
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.95-Build(.09.13-97108)ENT
enable policy: 0
archive flag: 0
blank_pad_mode: 0
crc_check: TRUE
backupset sig: BA
backupset version: 4009
database name: cndba
backup name: DB_FULL_cndba_20290305_230108_000258
backupset description:
backupset ID : -918008994
parent backupset ID: -1
META file size : 70144
compressed level: 0
encrypt type: 0
parallel num: 1
backup range: database
mpp_timestamp: 1867417263
ddl_clone: FALSE
mpp_flag: FALSE
backup level: offline
backup type: full
without log: FALSE
START_LSN: 131164
START_SEQ: 46200
END_LSN: 131163
END_SEQ: 46199
base START_LSN: -1
base END_LSN: -1
base name:
base backupset:
backup time: 2029-03-05 23:01:09
min trx start lsn: 131164
min exec ver: 0x0701060C
pkg size: 0x02000000
backupset directory: /dm/dmdbms/data/cndba/bak/DB_cndba_FULL_20290305_230108_000258
backupset name: DB_cndba_FULL_20290305_230108_000258
backup data file num: 3
backup piece num: 1
$file_seq |$size(KB) |$pos_desc |$content_type
0 |10358 |DB_cndba_FULL_20290305_230108_000258.bak |DATA
$file_seq |$group_id |$group_name |$file_id |$file_path |$mirror_path |$file_len
1 |0 |SYSTEM |0 |/dm/dmdbms/data/cndba/SYSTEM.DBF | |25165824
2 |1 |ROLL |0 |/dm/dmdbms/data/cndba/ROLL.DBF | |134217728
3 |4 |MAIN |0 |/dm/dmdbms/data/cndba/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: 10.422(ms)
RMAN>
显示的备份集信息分为三类,依次是元数据信息(META INFO)、文件信息(FILE INFO)和数据库信息(DB INFO)。用户可根据自身需要只显示部分备份集信息,本节下文中会有介绍。/dave/article/3600
2.2.2 批量显示备份集信息
SHOW BACKUPSETS…命令用于批量显示指定搜索目录下的备份集信息。如需要查看的多个备份集不在同一个目录下,可通过多次指定 WITH BACKUPDIR 参数同时查看所有的备份集。
操作如下:
RMAN> show backupsets with backupdir '/dm/dm_bak1','/dm/dmdbms/data/cndba/bak/';
show backupsets with backupdir '/dm/dm_bak1' , '/dm/dmdbms/data/cndba/bak/';
CMD END.CODE:[0]
……
2.2.3 查看指定数据库所有备份集的信息
如果指定的备份搜索目录下包含不同数据库的备份集,而我们只想查看某个特定数据库的所有备份集信息,此时可以使用 SHOW BACKUPSETS…USE DB_MAGIC 命令实现。
1) 备份不同数据库至同一目录下。
RMAN>BACKUP DATABASE '/dm/dmdbms/data/cndba/dm.ini' BACKUPSET'/dm/dm_bak/db_bak_for_show_db_magic_01';
RMAN>BACKUP DATABASE '/dm/dmdbms/data/cndba/dm.ini' BACKUPSET'/dm/dm_bak/db_bak_for_show_db_magic_02';
2) 查看指定数据库备份集的信息,获取 DB_MAGIC 信息。
RMAN> SHOW BACKUPSET'/dm/dm_bak/db_bak_for_show_db_magic_01';
SHOW BACKUPSET '/dm/dm_bak/db_bak_for_show_db_magic_01';
system path: /dm/dmdbms/data/cndba
db magic: 1232911348
permanent magic: 1196983552
……
通过查看备份集信息可知,数据库的 DB_MAGIC 值为1232911348。
3) 查看指定目录下数据库的所有备份集信息。
RMAN>show backupsets with backupdir '/dm/dm_bak' use db_magic 1232911348;
2.2.4指定查看备份集的元数据信息
SHOW BACKUPSET…INFO META命令用于查看备份集的元数据信息。
操作步骤如下:
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_full_0902';
RMAN> show backupset '/dm/dm_bak/db_full_0902' info meta;
show backupset '/dm/dm_bak/db_full_0902' info meta;
backupset sig: BA
backupset version: 4009
database name: cndba
backup name: DB_FULL_cndba_20290305_231415_000237
backupset description:
backupset ID : -1992516816
parent backupset ID: -1
META file size : 70144
compressed level: 0
encrypt type: 0
parallel num: 1
backup range: database
……
这里获取的是单个备份集的元数据信息,也可以使用 SHOW BACKUPSETS…INFO META 命令批量获取元数据信息。同样地,我们可以使用类似的命令指定获取备份集的数据库信息、文件信息和表信息,或这些信息的任意组合。
2.2.5 以 xml 格式输出备份信息到文件
DMRMAN 可以将显示的备份集信息输出到文件,目前支持的格式包括 TXT 和 XML,默认为 TXT 文件格式。使用 SHOW BACKUPSETS…TO ‘file_path’ FORMAT XML 命令可将备份信息以 XML 格式显示并输出到文件。
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_xml_0902';
RMAN> show backupset '/dm/dm_bak/db_xml_0902' to '/dm/dm_bak/bkp_info.txt' format xml;
show backupset '/dm/dm_bak/db_xml_0902' to '/dm/dm_bak/bkp_info.txt' format xml;
/dm/dm_bak/db_xml_0902
DISK
BA
4009
cndba
DB_FULL_cndba_20290305_231607_000332
1030217448
-1
……
3备份集校验
DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法。
语法如下:
CHECK BACKUPSET ''
[DEVICE TYPE [PARMS '']][DATABASE '']
校验特定的备份集
CHECK BACKUPSET…命令用于校验特定备份集,每次只能检验一个备份集。
RMAN> backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_bak_for_check_01';
RMAN> check backupset '/dm/dm_bak/db_bak_for_check_01';
check backupset '/dm/dm_bak/db_bak_for_check_01';
CMD END.CODE:[0]
check backupset successfully.
time used: 7.573(ms)
4 备份集删除
4.1 概述
DMRMAN 中使用 REMOVE 命令删除备份集,可删除指定备份集,也可批量删除备份集。
单个备份集删除时并行备份中的子备份集不允许单独删除;在指定备份集搜集目录中,发现存在引用目标备份集作为基备份的需要执行级联删除,默认报错。批量删除备份集时,跳过收集到的单独的子备份集。
语法如下:
/dave/article/3600
REMOVE BACKUPSET ''
[DEVICE TYPE< 介质类型 > [PARMS '< 介质参数 >']][<
database_bakdir_lst_stmt>][CASCADE];
REMOVE [DATABASE | TABLESPACE[] | TABLE "".""
| ARCHIVELOG|ARCHIVE LOG] BACKUPSETS
[] {[UNTIL TIME ''] | [BEFOREn]}
::= DEVICE TYPE [PARMS '']
::= DATABASE '' |
WITH BACKUPDIR '' {, '' } |
DATABASE '' WITH BACKUPDIR '' {, '' }
BACKUPSET:指定待删除的备份集目录。
DATABASE:指定数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录作为备份集搜索目录之一。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。DISK
表示备份集存储介质磁盘,TAPE 表示存储介质为磁带。若未指定,则 DISK 和 TAPE 介质上满足条件备份集均会删除。
PARMS:介质类型为 TAPE 时,第三方介质管理实现所需的参数字符串。
CASCADE:当目标备份集已经被其他备份集引用为基备份集,默认不允许删除,若指定 CASCADE,则递归删除所有引用的增量备份。
DATABASE|TABLESPACE|TABLE|ARCHIVELOG|ARCHIVE LOG:指定删除备份集的类型,分别为库级、表空间级、表级备份,以及归档级别,其中 ARCHVELOG 和 ARCHIVE LOG等价。若不指定,全部删除。指定 TABLESPACE 时,若指定目标表空间名,则仅会删除满足条件的指定表空间名称的表空间备份集,否则,删除所有满足条件的表空间级备份集;指定 TABLE 时,若指定目标表名,则仅会删除满足条件的指定表名的表备份集;否则,删除所有满足条件的表备份集。
UNTIL TIME:删除备份集生成的最大时间,即删除指定时间之前的备份集,若未指定,则删除所有备份集。
BEFOREn:删除距离当前时间前 n 天产生的备份集;n 取值范围 0~365,单位:天。
WITH BACKUPDIR:备份集搜索目录,用于搜索指定目录下的所有备份集。
4.2 删除备份集
4.2.1 删除特定的备份集
使用 REMOVE BACKUPSET…命令可删除特定备份集,每次只能删除一个备份集。若删除备份集已经被引用为其他备份集的基备份且未指定 CASCADE,则报错。
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_bak_for_remove_01';
RMAN> remove backupset '/dm/dm_bak/db_bak_for_remove_01';
remove backupset '/dm/dm_bak/db_bak_for_remove_01';
CMD END.CODE:[0]
remove backupset successfully.
time used: 35.444(ms)
如果备份集为其他备份集的基备份且备份集都在数据库默认备份目录下还可使用以下方式删除备份集:
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_bak_for_remove_01';
--增量备份之前,启动数据库,进行一些事物操作,以便成功生成增量备份,在关闭数据库
RMAN>BACKUP DATABASE '/dm/dmdbms/data/cndba/dm.ini' INCREMENT BACKUPSET 'db_bak_for_remove_01_incr';
RMAN>remove backupset 'db_bak_for_remove_01_incr' database '/dm/dmdbms/data/cndba/dm.ini' cascade;
4.2.2 批量删除所有备份集
使用 REMOVE BACKUPSETS…命令可批量删除备份集。批量删除可选择删除的备份类型,数据库备份、表空间备份、表备份,以及归档备份,不指定则全部删除。
/dave/article/3600
下面示例为删除/dm/dm_bak 目录下的所有备份集,可以是联机生成的备份集,也可以脱机 DMRMAN工具生成的备份集。
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_bak_for_remove_02';
RMAN> remove backupsets with backupdir '/dm/dm_bak';
remove backupsets with backupdir '/dm/dm_bak';
CMD END.CODE:[-10000],DESC:[Fail in mml(-10000)]
CMD END.CODE:[0]
remove backupset successfully.
time used: 1058.835(ms)
RMAN>
4.2.3 批量删除指定时间之前的备份集
REMOVE BACKUPSETS…UNTIL TIME 命令用来批量删除指定时间的备份集。通常情况下,用户并不想删除指定目录下所有的备份集,这时可以选择只删除指定时间之前的备份。
若用户每周做一次完全备份,每天进行增量备份,那么删除的时间可指定为 7 天前的某个特定时间。
假设今天的日期为 -09-02,要删除 1 天前/dm/dm_bak 目录下的所有备份在 DMRMAN 中输入以下命令:
RMAN>remove backupsets with backupdir ‘/dm/dm_bak’ until time’-09-01 00:00:00’;
5 备份集导入
5.1 概述
DMRMAN 中使用 LOAD 命令导入备份集。
语法如下:
LOAD BACKUPSETSFROM DEVICE TYPE [PARMS ''][WITH BACKUPDIR ''{,''}]TO BACKUPDIR '';
5.2 导入备份集
5.2.1 导出磁盘上备份集
导出磁盘上备份集的 meta 文件:
RMAN>load backupsets from device type disk to backupdir ‘/dm/dm_bak_dave’;
5.2.2导出磁带上所有的备份集
导出磁带 /dev/nst0 上所有备份集的 meta 文件到目录/mnt/hgfs/dm7src/bak_dir。
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dm7src/bak_dir';
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dm7src/bak_dir';
load backupsets failed.error code:-10000
[-10000]:[错误码:-20022]磁带打开失败
退出 dmrman,设置环境变量 TAPE,值为/dev/nst0。
[root@192 debug]# export TAPE=/dev/nst0
[root@192 debug]#echo $TAPE
/dev/nst0
启动 dmrman,再次执行:
[root@192 debug]# ./dmrman
dmrman V7.1.3.141-Build(.09.09-48301trunc)
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dm7src/bak_dir';
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dm7src/bak_dir';
load meta file [SBT_TEST_T-0909192629000000-4966] to path [/mnt/hgfs/dm7src/bak_dir/0/0.meta]...
load meta file [SBT_TEST_T-0909192629000000-4966] to path [/mnt/hgfs/dm7src/bak_dir/0/0.meta]...success
load meta file [SBT_TEST_T2-0909192746000000-9983] to path [/mnt/hgfs/dm7src/bak_dir/1/1.meta]...
load meta file [SBT_TEST_T2-0909192746000000-9983] to path [/mnt/hgfs/dm7src/bak_dir/1/1.meta]...success
load backupsets successfully.
退出 dmrman,查看本地磁盘目录/mnt/hgfs/dm7src/bak_dir:
[root@192 debug]# ls -1 /mnt/hgfs/dm7src/bak_dir
total 0
drwxrwxrwx 1 root root 0 Sep 11 00:23 0
drwxrwxrwx 1 root root 0 Sep 11 00:23 1
[root@192 debug]# ls -1 /mnt/hgfs/dm7src/bak_dir/0
total 12
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 0.meta
[root@192 debug]# ls -1 /mnt/hgfs/dm7src/bak_dir/1
total 12
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 1.meta
6 备份集映射文件导出
备份集映射文件,又称为 mapped file。备份集映射文件导出,是备份管理的主要功能,是将备份集中各数据文件的原始路径或者调整后的路径生成到一个本地文件中,可通过关键字 MAPPED FILE 应用于表空间和库的还原操作中。
6.1 概述
DMRMAN 中使用 DUMP 命令导出映射文件。不支持导出到 DMASM 文件系统中。
语法如下:
DUMP BACKUPSET ''
[DEVICE TYPE [PARMS '']]
[DATABASE ''|TO'']
MAPPED FILE '';
参数说明:
备份集目录:待导出映射文件的目标备份集,仅支持库级和表空间级备份。
介质类型:指存储备份集的设备类型,暂支持 DISK 和 TAPE。
介质参数:介质类型为 TAPE 时,第三方介质管理实现所需的参数字符串。
INI_PATH:备份集还原到目标库的 INI 路径。若指定,则根据 INI 对应库的系统目录调整数据文件路径;若不指定,则保持备份集中数据文件的原始路径。
SYSTEM_DIR:数据库目录中 SYSTEM.DBF 数据文件所在目录,作为数据库系统目录处理。
数据文件路径指定 INI_PATH 或者 SYSTEM_DIR 调整策略:若指定INI_PATH,则取出配置中 SYSTEM_PATH 作为数据库系统目录,若指定SYSTEM_DIR,则直接作为数据库系统目录。对于表空间级备份集仅支持原库还原,若指定 INI_PATH 或者 SYSTEM_DIR,则认为需要构造,构造策略与库备份集中数据文件路径构造策略一致。
映射文件路径:输出到本地的目标映射文件路径。用户指定的文件不能为已经存在的文件,否则报错。文件生成之后,允许手动调整数据文件路径到其他路径,真正使用映射文件时,会再次校验。不支持导出到 DMASM 文件系统中。
6.2 导出备份集映射文件
6.2.1 导出原始路径
导出备份集中数据文件的原始路径。
RMAN>backup database '/dm/dmdbms/data/cndba/dm.ini' backupset '/dm/dm_bak/db_bak_for_remove_01';
RMAN>dump backupset '/dm/dm_bak/db_bak_for_remove_01' device type disk mapped file '/tmp/db_bak_mapped.txt';
[dave@ log]$ cat /tmp/db_bak_mapped.txt
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[cndba_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = SYSTEM
data_path = /dm/dmdbms/data/cndba/SYSTEM.DBF
mirror_path =
/**=============================================================**/
/*[cndba_ROLL_FIL_0]*/
fil_id = 0
ts_id = 1
ts_name = ROLL
data_path = /dm/dmdbms/data/cndba/ROLL.DBF
mirror_path =
/**=============================================================**/
/*[cndba_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = MAIN
data_path = /dm/dmdbms/data/cndba/MAIN.DBF
mirror_path =
/***************************** END ****************************/
[dave@ log]$
6.2.2 导出指定 INI_PATH 调整后的路径
指定 INI_PATH,导出调整后的数据文件路径到映射文件。
RMAN> dump backupset '/dm/dm_bak/db_bak_for_remove_01' device type disk database '/dm/dmdbms/data/cndba/dm.ini' mapped file '/dm/dm_bak/db_bak_mapped.txt';
dump backupset '/dm/dm_bak/db_bak_for_remove_01' device type disk database '/dm/dmdbms/data/cndba/dm.ini' mapped file '/dm/dm_bak/db_bak_mapped.txt';
file dm.key not found, use default license!
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
dump mapped file successfully.
time used: 16.661(ms)
RMAN>
[dave@ log]$ cat /dm/dm_bak/db_bak_mapped.txt
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[cndba_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = SYSTEM
data_path = /dm/dmdbms/data/cndba/SYSTEM.DBF
mirror_path =
/**=============================================================**/
/*[cndba_ROLL_FIL_0]*/
fil_id = 0
ts_id = 1
ts_name = ROLL
data_path = /dm/dmdbms/data/cndba/ROLL.DBF
mirror_path =
/**=============================================================**/
/*[cndba_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = MAIN
data_path = /dm/dmdbms/data/cndba/MAIN.DBF
mirror_path =
/***************************** END ****************************/
[dave@ log]$
版权声明:本文为博主原创文章,未经博主允许。