达梦数据库和oracle数据库RMAN命令对比应用

本文主要介绍达梦数据库和oracle数据库备份和还原的对比,由于RMAN备份比较复杂,此文不能面面俱到,只能初步分析和对比DM和oracle中RMAN备份的不同。若文中出现错误,欢迎指正。

  • 探索备份命令
    1. Oracle数据库

在oracle数据库中,RMAN可以备份以下内容:

  1. 数据库
  2. 表空间
  3. 数据文件
  4. 服务器参数文件
  5. 已归档的重做日志
  6. 控制文件

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;

    1.  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的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:

  1. 数据库名称;
  2. 数据库服务器模式;
  3. OGUID 唯一标识;
  4. 数据库服务器版本;
  5. 数据文件版本;
  6. 数据库的启动次数;
  7. 数据库最近一次启动时间;
  8. 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
  9. 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。

在服务器运行期间,执行表空间的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为扩展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的目标:

  1. 启用/禁用特定功能项;
  2.  针对当前系统运行环境设置更优的参数值以提升系统性能。

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

  • 探索增量备份
    1.  oracle增量备份

在oracle数据库中,第一次备份被称为0级备份,随后的备份都被称为1级备份。数据库的0级备份可以采用下面的命令执行:

RMAN>backup incremental level = 0 database;

数据库的1级备份可以采用下面的命令执行:

RMAN>backup incremental level = 1 database;

2.2 DM增量备份

在达梦数据库中增量备份是指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。

增量备份示例如下:

  1. 启动DMRMAN命令行工具。
  2. 保证数据库处于脱机状态。
  3. 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命令可以查看备份集的信息,包括:

  1. 备份集的数据库信息 ü
  2. 备份集的元信息 ü
  3. 备份集中文件信息(如备份数据文件DBF和备份片文件)
  4. 备份与还原ü
  5. 备份集中表信息(仅对表备份集有效)

若指定具体备份集目录,则会生成相应的备份集链表信息。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值