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命令配置默认的基备份集搜索目录

Leave a Reply

Your email address will not be published.

Proudly powered by WordPress | Indrajeet by Sus Hill.