本文主要介绍达梦数据库和oracle数据库备份和还原的对比,由于RMAN备份比较复杂,此文不能面面俱到,只能初步分析和对比DM和oracle中RMAN备份的不同。若文中出现错误,欢迎指正。
- 探索备份命令
- Oracle数据库
在oracle数据库中,RMAN可以备份以下内容:
- 数据库
- 表空间
- 数据文件
- 服务器参数文件
- 已归档的重做日志
- 控制文件
1.1.1 数据库
在操作系统提示符下调用RMAN后,可在RMAN提示符下发出以下命令来执行数据库全备份:
RMAN>backup database;
上述命令将备份数据库中所有的数据文件、控制文件和服务器参数文件。因为没有指定通道,因此RMAN将使用默认的通道来备份数据库。
1.1.2 表空间
只要在RMAN中,这项目活动的核心就类似于一下内容:
RMAN>backup tablespace system;
可以在同一时间执行多个表空间的备份。例如,下面的命令将备份三个表空间:SYSTEM、USERS和TBS1。
RMAN>backup tablespace system,users,tbs1;
1.1.3 数据文件
如果知道一个或多个数据库文件的唯一文件ID,就可以对其进行备份,如下所示:
RMAN>backup datafile 2,3,4;
上述命令备份标号为2至4的数据库文件,可以查看数据库中DBA_DATA_FILES的FILE_ID列来获取数据文件的编号。
1.1.4 控制文件
通过发出一下命令来开始控制文件的手动备份:
RMAN>backup current controlfile;
如果手动备份了控制文件,并且还配置了控制文件的自动备份,RMAN将会制作控制文件的两个副本,但控制文件的备份永远都不嫌多。
1.1.5 服务器参数文件
服务器参数文件会随着每一个备份而自动备份,并且可以在RMAN提示符下通过发出以下命令来手动备份:
RMAN>backup spfile;
1.1.6 归档重做日志
可以在RMAN提示符下通过发出以下命令来备份归档重做日志:
RMAN>backup archivelog all;
如果想在备份后删除归档日志,以腾出更多的磁盘空间,可以发出以下命令:
RMAN>backup archivelog all delete all input;
-
- DM达梦数据库
1.2.1 数据库
在DMRMAN工具中使用BACKUP命令你可以备份整个数据库。使用DMRMAN脱机备份数据库需要设置归档和关闭数据库实例。在DMRMAN中输入以下命令即可备份数据库:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为dm.ini中BAK_PATH的配置值,若未配置,则为SYSTEM_PATH下的bak目录。
2.1.2 表空间
达梦数据库DMRMAN中不能进行单独的数据库备份,但能在全备份中单独还原恢复表空间。
2.1.3 数据文件
达梦数据库DMRMAN中不能进行单独的数据文件备份。
2.1.4 控制文件
每个DM 数据库都有一个名为dm.ctl的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:
- 数据库名称;
- 数据库服务器模式;
- OGUID 唯一标识;
- 数据库服务器版本;
- 数据文件版本;
- 数据库的启动次数;
- 数据库最近一次启动时间;
- 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
- 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。
在服务器运行期间,执行表空间的DDL等操作后,服务器内部需要同步修改控制文件内容。如果在修改过程中服务器故障,可能会导致控制文件损坏,为了避免出现这种情况,在修改控制文件时系统内部会执行备份操作。备份策略如下: u 策略一:在修改dm.ctl之前,先执行一次备份,确定dm.ctl修改成功后,再将备份删除,如果dm.ctl修改失败或中途出现故障,则保留备份文件。
策略二 在修改dm.ctl成功之后,根据dm.ini中指定的CTL_BAK_PATH/CTL_BAK_NUM对最新的dm.ctl执行备份,如果用户指定的CTL_BAK_PATH是非法路径,则不再生成备份文件,在路径有效的情况下,生成备份文件时根据指定的CTL_BAK_NUM判断是否删除老的备份文件。
2.1.5 服务器参数文件
达梦数据库DMRMAN中不能进行单独的参数文件备份。达梦数据库的配置参数文件包含:dm.ini、dmmal.ini、dmarch.ini、dm_svc.conf、sqlllog.ini
配置文件是DM数据库用来设置功能选项的一些文本文件的集合,配置文件以ini为扩展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的目标:
- 启用/禁用特定功能项;
- 针对当前系统运行环境设置更优的参数值以提升系统性能。
2.1.6 归档备份
在DMRMAN工具中使用BACKUP命令你可以备份库的归档。使用DMRMAN备份归档需要设置归档,否则会报错。关闭数据库实例,在DMRMAN中输入以下命令即可备份归档:
RMAN>BACKUP ARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为dm.ini中BAK_PATH的配置值,若未配置,则使用SYSTEM_PATH下的bak目录。
1.3 RMAN备份命令对比
备份内容 | DM | ORACLE |
数据库 | 可以 | 可以 |
表空间 | 不可以单独备份 | 可以单独备份 |
数据文件 | 不可以单独备份 | 可以单独备份 |
服务器参数文件 | 不可以单独备份 | 可以单独备份 |
重做日志 | 可以单独备份 | 可以单独备份 |
控制文件 | 不可以单独备份 | 不可以单独备份 |
达梦数据库可以在DIsql工具中使用BACKUP语句也可以备份单个表空间。命令如下:
SQL> BACKUP TABLESPACE SYSTEM BACKUPSET 'SYSTEM_BAK_01';
操作已执行
已用时间: 00:00:01.761. 执行号:844.
同样控制文件的备份参照本文2.1.4
- 探索增量备份
- oracle增量备份
在oracle数据库中,第一次备份被称为0级备份,随后的备份都被称为1级备份。数据库的0级备份可以采用下面的命令执行:
RMAN>backup incremental level = 0 database;
数据库的1级备份可以采用下面的命令执行:
RMAN>backup incremental level = 1 database;
2.2 DM增量备份
在达梦数据库中增量备份是指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。
增量备份示例如下:
- 启动DMRMAN命令行工具。
- 保证数据库处于脱机状态。
- DMRMAN中输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET '/home/dm_bak/db_increment_bak_02';
命令中的INCREMENT参数表示执行的备份为增量备份,增量备份该参数不可省略。如果增量备份的基备份不在默认备份目录,必须指定WITH BACKUPDIR参数用于搜索基备份集,或者使用CONFIGURE...BACKUPDIR命令配置默认的基备份集搜索目录。
2.3增量备份对比
内容 | DM | Oracle |
增量备份 | 可以 | 可以 |
- 列出备份列表
3.1 oracle数据库
可以使用LIST命令帮助查看关于RMAN中备份和副本的信息。例如,为了查看有关数据库备份的信息,可以使用以下命令:
RMAN>list bakcup of database;
要查看有关各个备份的信息,请使用以下命令:
RMAN>list bakcup ;
3.2 DM达梦数据库
DMRMAN中使用SHOW命令可以查看备份集的信息,包括:
- 备份集的数据库信息 ü
- 备份集的元信息 ü
- 备份集中文件信息(如备份数据文件DBF和备份片文件)
- 备份与还原ü
- 备份集中表信息(仅对表备份集有效)
若指定具体备份集目录,则会生成相应的备份集链表信息。
SHOW BACKUPSET...命令用于显示特定的备份集信息,每次只能显示一个备份集。当仅需要查看某个特定备份集信息时可以使用此命令。执行步骤如下:
3.2.1查看指定的备份集信息:
RMAN> show backupset 'D:\DM8\BACKUP';
show backupset 'D:\DM8\BACKUP';
<backupset [DEVICE TYPE:DISK, BACKUP_PATH: D:\DM8\BACKUP] info start ..........>
<DB INFO>
system path: D:\DM8\dmdbms\data\DAMENG
pmnt_magic: 1354359236
src_db_magic: 913104458
db_magic: 913104458
dsc node: 1
sys mode: 0
page check: 2
rlog encrypt: 0
external cipher[id/name]: 0/
external hash[id/name]: 0/
length in char: 0
use new hash: 1
page size: 8KB
extent size: 16
case sensitive: 1
log page size: 512B
unicode_flag/charset: 0
data version: 0x7000C
sys version: V8
enable policy: 0
archive flag: 0
blank_pad_mode: 0
crc_check: TRUE
page_enc_slice_size: 4096
<META INFO>
backupset sig: BA
backupset version: 0x400A
database name: DAMENG
backup name: DMBAKUP1
backupset description:
n_magic: 0x5617AC49
parent n_magic: 0xFFFFFFFF
meta file size : 74240
compressed level: 0
encrypt type: 0
parallel num: 1
backup range: database
mpp_timestamp: 1626270102
with_huge: FALSE
backupset_type: NORMAL
mpp_flag: FALSE
backup level: offline
backup type: full
without log: FALSE
end_lsn: 24733
max_trxid: 23146
base begin_lsn: -1
base end_lsn: -1
base n_magic: 0xFFFFFFFF
base name:
base backupset:
backup time: 2021-07-14 21:41:44
min exec ver: 0x08010101
min dct ver: 4
pkg size: 0x02000000
<EP INFO>
EP[0]:
begin_pkg_seq: 4049
begin_lsn: 24733
end_pkg_seq: 4049
end_lsn: 24733
<FILE INFO>
backupset directory: D:\DM8\BACKUP
backupset name: BACKUP
backup data file num: 3
backup piece num: 1
backup huge file num: 0
<backup_piece_list>
$file_seq |$size(KB) |$pos_desc |$content_type
0 |5646 |BACKUP.bak |DATA
<data_file_list>
$file_seq |$group_id |$group_name |$file_id |$file_path |$mirror_path |$file_len |$copy_num |$size_flag
1 |0 |SYSTEM |0 |D:\DM8\dmdbms\data\DAMENG\SYSTEM.DBF| |23068672 |0 |0
2 |1 |ROLL |0 |D:\DM8\dmdbms\data\DAMENG\ROLL.DBF| |134217728 |0 |0
3 |4 |MAIN |0 |D:\DM8\dmdbms\data\DAMENG\MAIN.DBF| |134217728 |0 |0
<arch_file_list>
$file_seq |$dsc_seq |$file_len |$begin_seqno |$begin_lsn |$end_seqno |$end_lsn
<huge_file_list>
$group_id |$schema_id|$table_id |$column_id|$file_id |$file_len |$path
<backupset [DEVICE TYPE:DISK, BACKUP_PATH: D:\DM8\BACKUP] info end .>
show backupsets successfully.
time used: 356.832(ms)
RMAN>
显示的备份集信息分为三类,依次是元数据信息(META INFO)、文件信息(FILE INFO)和数据库信息(DB INFO)。用户可根据自身需要只显示部分备份集信息,本节下文中会有介绍。
3.2.2批量显示备份集信息
SHOW BACKUPSETS...命令用于批量显示指定搜索目录下的备份集信息。如需要查看的多个备份集不在同一个目录下,可通过多次指定WITH BACKUPDIR参数同时查看所有的备份集。操作如下:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET'/home/dm_bak1/db_bak_for_show_01';
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET'/home/dm_bak2/db_bak_for_show_01';
RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak1','/home/dm_bak2';
3.3 备份列表对比
内容 | DM | ORACLE |
备份列表对比 | 可以 | 可以 |
- 探索rman还原
4.1 oracle数据库
4.1.1数据库还原
Oracle数据库中可以使用RMAN的restore命令来还原备份。例如,为了还原数据库的备份,在RMAN提示符下使用如下命令:
RMAN>restore database;
可以使用下面的命令恢复一个或多个表空间;
RMAN>sql ‘altre tablespace sysaus offline’;
RMAN>restore tablespace sysaux;
RMAN>revover datafile 2;
RMAN>sql ‘altre tablespace sysaus online’;
4.1.2数据库恢复
Oracle数据库中一旦文件已经得到还原,RMAN就可以很容易的恢复他们。对于恢复,RMAN将数据从还原的备份应用到丢失或损坏数据的数据库中。可以恢复数据库、表空间或数据文件。例如,为了恢复数据库,可在RMAN提示符下使用以下命令:
RMAN>recover database;
4.2 dm达梦数据库
4.2.1数据库还原
使用RESTORE命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,或是联机库级备份集。数据库的还原包括数据库配置文件还原和数据文件还原,目前可能需要还原的数据库配置文件包括dm.ini、dm.ctl、服务器秘钥文件(dm_service.prikey或者dm_external.config,若备份库指定usbkey加密,则无秘钥文件)、联机日志文件。可以使用如下命令:
RMAN>RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup';
表空间还原:
4.2.2数据库恢复
使用RECOVER命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。如果还原后,数据已经处于一致性状态了,则可以使用更新DB_MAGIC方式恢复,前提是不需要重做日志。 可以使用如下命令:
RMAN>RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup';
4.2.3数据库更新
数据库更新是指更新数据库的DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用RECOVER命令完成。数据库更新发生在重做REDO日志恢复数据库后,或者目标库不需要执行重做日志已经处于一致状态的情况。可以使用如下命令:
RMAN>RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
4.2.4表空间还原
使用RESTORE命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集 。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为OFFLINE状态。 表空间还原后,表空间状态被置为RES_OFFLINE,并设置数据标记FIL_TS_RECV_STATE_RESTORED,表示已经过还原但数据不完整。
还原表空间,输入以下命令:
RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover'
恢复表空间,输入以下命令:
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN;
4.3还原对比
内容 | DM | Oracle |
还原数据库 | 可以 | 可以 |
还原表空间 | 可以 | 可以 |
参考文献:
《专业级ORACLE DATABASE 12C安装、配置与维护》
《临危不惧:oracle 11g数据库恢复技术》
《DM8系统管理员手册》
《达梦技术丛书-DM8备份与还原》
更多资讯请上达梦技术社区了解: https://eco.dameng.com
版权声明:本文为博主原创文章,未经博主允许不得转载。