达梦数据库 物理备份还原

news2024/9/23 11:27:51

达梦的物理备份还原

  • 1.背景
  • 2.要求
  • 3.实验步骤
    • 3.1 相关术语
    • 3.2 准备工作
    • 3.3 联机备份还原
      • 3.3.1 数据备份
        • 3.3.1.1 手动备份
        • 3.3.1.2 定时备份
      • 3.3.2 管理备份
        • 3.3.2.1 备份目录管理
        • 3.3.2.2 备份集校验与删除
      • 3.3.3 数据还原
    • 3.4 脱机备份还原
      • 3.4.1 DMRMAN工具
      • 3.4.2 数据备份
        • 3.4.2.1 数据库备份
        • 3.4.2.2 归档备份
      • 3.4.3 备份管理
        • 3.4.3.1 备份信息查看
        • 3.4.3.2 备份集校验
        • 3.4.3.3 备份集删除
        • 3.4.3.4 备份集导出
        • 3.4.3.5 备份集映射文件导出
      • 3.4.4 数据还原恢复
        • 3.4.4.1 数据库还原与恢复
        • 3.4.4.2 表空间还原与恢复
        • 3.4.4.3 归档还原与恢复
  • 4.实验结论

1.背景

物理备份是找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

2.要求

学习物理备份还原的机制原理

3.实验步骤

3.1 相关术语

  • 联机备份还原:联机备份还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份还原。
  • 脱机备份还原:脱机还原指数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。
  • 备份集:备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。

3.2 准备工作

联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档处于开启状态。

脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档。

归档配置有两种方式:一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;二是手动配置归档,数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明这两种归档如何配置。

方式一:联机配置归档

##修改数据库为 Mount 状态
ALTER  DATABASE  MOUNT;

##开启归档模式
ALTER  DATABASE  ARCHIVELOG;

##配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';

##修改数据库为 Open 状态
ALTER  DATABASE  OPEN;

方式二:手动配置归档

##关闭数据库
##在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dm_arch/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048

##编辑 dm.ini 文件,设置参数ARCH_INI=1
##启动数据库实例,数据库已运行于归档模式。

3.3 联机备份还原

联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。

3.3.1 数据备份

3.3.1.1 手动备份

1、数据库备份
在 disql 工具或图形化管理工具 SQL 编辑区中使用 BACKUP 语句可以备份整个数据库,执行以下命令:

##全备
BACKUP  DATABASE  FULL  BACKUPSET '/opt/dmdbms/BAK/db_full_bak_01';

设置联机数据库备份集路径

##指定备份集路径为 /home/dm_bak/db_bak_3_01
##BACKUPSET 参数用于指定备份集的输出路径
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';

设置备份名

##创建备份集,备份名设置为“WEEKLY_FULL_BAK”
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';

##备份名的设置不可以使用特殊格式,例如%NAME。

添加备份描述

##创建备份为备份集添加描述信息为“完全备份”。
##描述信息可以更详细地对备份类型、用途等进行说明
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO  '完全备份';

限制备份片大小

##MAXPIECESIZE 参数用于控制单个备份片的大小
##MAXPIECESIZE 不能大于磁盘剩余空间大小,否则报错磁盘空间不足。

##创建备份限制备份片大小为300M
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;

备份压缩

##执行备份压缩,压缩级别设置为 5。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;

##压缩选项有不同的压缩级别可以选择,取值范围为 0~9。
##应根据存储空间、数据文件大小等确定合适地压缩级别

设置并行备份

##可通过关键字 PARALLEL 指定是否执行并行备份,以及执行并行备份的并行数。

##创建并行备份,指定并行数为8
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;

2、表空间备份
在 disql 工具中使用 BACKUP 语句可以备份单个表空间。同备份数据库一样,执行表空间备份数据库实例也必须运行在归档模式下,启动 disql 输入以下语句即可备份表空间:

BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';

增量备份指定基备份路径

##以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份

BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET  'ts_increment_bak_02';

完全备份

BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';

增量备份

BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET  '/home/dm_bak/ts_increment_bak_02';

3、表备份
与备份数据库与表空间不同,备份表不需要服务器配置归档,disql 输入以下命令即可备份用户表

BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
##备份集“tab_bak_01”会生成到默认的备份路径下

4、归档备份
在 disql 工具中使用 BACKUP 语句可以备份归档日志。归档备份的前提:

  • 数据库必须配置归档;
  • 归档文件的 db_magic、permanent_magic 值和数据库的 db_magic、permanent_magic 值必须一样;
  • 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。
    disql 输入以下命令即可备份归档:
SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01'; 
##备份集“arch_bak_01”会生成到默认的备份路径下。

归档备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,详细设置方式可参考设置数据库备份选项。

3.3.1.2 定时备份

1、图形化方式创建定时备份
右击管理工具-【代理】-【作业】-【新建作业】。
在这里插入图片描述
出现如下图所示界面,在作业名称和作业描述中填写备份名称和描述
在这里插入图片描述
在作业步骤中选择具体的备份方式,如下图所示
在这里插入图片描述
执行完上述步骤后点击【确定】
2、定时日志备份查看
右击管理工具,选择【代理】-【作业】-【job 名称】,点击【查看历史作业信息】,即可查看定时备份日志。
在这里插入图片描述

3.3.2 管理备份

3.3.2.1 备份目录管理

添加备份目录

--函数 SF_BAKSET_BACKUP_DIR_ADD (device_type,backup_dir) 用于添加备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

删除备份目录

--函数 SF_BAKSET_BACKUP_DIR_REMOVE (device_type,backup_dir) 用于删除备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');

清理全部备份目录

--函数 SF_BAKSET_BACKUP_DIR_REMOVE_ALL () 用于清理全部备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
3.3.2.2 备份集校验与删除

备份集校验

--SF_BAKSET_CHECK (device_type,backup_dir)
SELECT  SF_BAKSET_CHECK ('DISK','/home/dm_bak/db_bak_for_check');

备份集删除
备份集删除相关函数参考如下,相关函数具体使用方法可参考数据库安装目录下 doc 目录中《DM8 备份与还原》手册

--删除指定设备类型和指定备份集目录地备份集
SF_BAKSET_REMOVE

--批量删除满足指定条件的所有备份集
SF_BAKSET_REMOVE_BATCH

--批量删除指定时间之前的数据库备份集
SP_DB_BAKSET_REMOVE_BATCH

--批量删除指定表空间对象及指定时间之前的表空间备份集
SP_TS_BAKSET_REMOVE_BATCH

--批量删除指定表对象及指定时间之前的表备份集。
SP_TAB_BAKSET_REMOVE_BATCH

--批量删除指定时间之前的归档备份集。
SP_ARCH_BAKSET_REMOVE_BATCH

3.3.3 数据还原

达梦数据库仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。
表还原的具体操作如下,表还原之后不需要恢复操作。disql 中输入以下 RESTORE 语句即可还原表:

SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01'; 

3.4 脱机备份还原

3.4.1 DMRMAN工具

DMRMAN(DM RECOVERY MANAGER)是脱机备份还原命令行工具,无需额外安装,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低用户的操作难度。
启动和退出 DMRMAN。进入数据库安装目录的 bin 目录下,例如 /dm8/bin,执行以下命令:

##启动DMRMAN
./dmrman

##退出DMRMAN
##启动后控制台中输入 exit 命令
RMAN>exit;

3.4.2 数据备份

因表空间备份和表备份都只能在联机状态下进行,因此脱机状态下的数据备份只包括数据库备份和归档备份。

3.4.2.1 数据库备份

1、创建完全备份
创建一个完整的数据库脱机备份的步骤如下:

##保证数据库处于脱机状态
##启动DMRMAN命令行工具
./dmrman

##DMRMAN中输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini ' FULL BACKUPSET  '/home/dm_bak/db_full_bak_01'; 

##FULL参数表示执行的备份为完全备份

2、创建增量备份
增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。
创建脱机增量备份数据库的步骤如下:

##保证数据库处于脱机状态
##启动DMRMAN命令行工具
./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参数表示执行的备份为增量备份
3.4.2.2 归档备份

使用 DMRMAN 备份归档需要设置归档,否则会报错。同时,归档备份得是归档日志,防止归档日志的丢失导致重要数据缺失。
执行归档备份要求数据库处于脱机状态,完整的创建脱机归档备份的过程如下:

##配置归档,请参考归档配置;
##保证数据库处于脱机状态;
##启动 DMRMAN 命令行工具;

##DMRMAN 中输入以下命令:
RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET  '/home/dm_bak/arch_all_bak_01'; 

3.4.3 备份管理

管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导出备份集。

3.4.3.1 备份信息查看

DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。使用方法如下:

##查看单个备份集信息
RMAN> show backupset '/home/test/yy/dm_bak/db_full_bak_01' 

##批量显示备份集信息
##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.4.3.2 备份集校验

DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法。

##语法:CHECK BACKUPSET '<备份集目录>' ;
##CHECK BACKUPSET...命令用于校验特定备份集,每次只能检验一个备份集。
RMAN>CHECK BACKUPSET '/home/dmbak/dbbakforcheck01';
3.4.3.3 备份集删除

DMRMAN 中使用 REMOVE 命令删除备份集,可删除单个备份集,也可批量删除备份集。单个备份集删除时并行备份中的子备份集不允许单独删除;在指定备份集搜集目录中,发现存在引用待删除备份集作为基备份的需要执行级联删除,默认报错。批量删除备份集时,跳过收集到的单独的子备份集。

RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' 
BACKUPSET'/home/dm_bak/db_bak_for_remove_01'; 
RMAN>REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01'
3.4.3.4 备份集导出

DMRMAN 中使用 LOAD 命令导出备份集。

##导出磁带/dev/nst0 上所有备份集的 meta 文件到目录/mnt/hgfs/dmsrc/bak_ dir中。直接输##入导出语句将报错,如下所示:
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir'; 
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/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 
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir'; 
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir'; 
load meta file [SBT_TEST_T-20140909192629000000-4966] to path 
[/mnt/hgfs/dmsrc/bak_dir/0/0.meta]... 
load meta file [SBT_TEST_T-20140909192629000000-4966] to path 
[/mnt/hgfs/dmsrc/bak_dir/0/0.meta]...success 
load meta file [SBT_TEST_T2-20140909192746000000-9983] to path 
[/mnt/hgfs/dmsrc/bak_dir/1/1.meta]... 
load meta file [SBT_TEST_T2-20140909192746000000-9983] to path 
[/mnt/hgfs/dmsrc/bak_dir/1/1.meta]...success 
load backupsets successfully.

##退出 dmrman,查看本地磁盘目录/mnt/hgfs/dmsrc/bak_dir: 
[root@192 debug]# ls -1 /mnt/hgfs/dmsrc/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/dmsrc/bak_dir/0  total 12 
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 0.meta 
[root@192 debug]# ls -1 /mnt/hgfs/dmsrc/bak_dir/1 
total 12 
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 1.meta 
3.4.3.5 备份集映射文件导出

备份集映射文件,又称为 mapped file。备份集映射文件导出,是将备份集中各数据文件的原始路径或者调整后的路径生成到一个本地文件中,可通过关键字 MAPPED FILE 应用于表空间和库的还原操作中。
DMRMAN 中使用 DUMP 命令导出映射文件。不支持导出到 DMASM 文件系统中。

##导出备份集中数据文件的原始路径
RMAN>DUMP  BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK MAPPED FILE  '/mnt/dmsrc/db_bak_mapped.txt';

##指定 ini_path,导出调整后的数据文件路径到映射文件:
RMAN>DUMP  BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'
MAPPED  FILE '/mnt/dmsrc/db_bak_mapped.txt';

3.4.4 数据还原恢复

3.4.4.1 数据库还原与恢复

1、数据库还原
使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。
以联机数据库备份说明使用 DMRMAN 如何执行数据库还原操作:

##联机备份数据库,保证数据库运行在归档模式及 OPEN 状态; 
SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore'; 

##准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示: 
./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE 

##校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验; 
RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

##还原数据库。启动 DMRMAN,输入以下命令: 
RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM 
BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

2、数据库恢复
使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;或从归档恢复,即重做归档中的 REDO 日志。
方式一:从备份集恢复

##执行还原数据库的命令之后,可以直接执行恢复数据库的命令,如下:
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM  BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

方式二:从归档恢复

##通过使用 WITH ARCHIVEDIR 关键字进行归档恢复,如下:
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' 

3、数据库更新
数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后。

3.4.4.2 表空间还原与恢复

1、表空间还原
使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先设置目标表空间为 OFFLINE 状态。
表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。表空间还原命令如下:

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE  MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';

2、表空间恢复
表空间恢复通过重做 REDO 日志,以将数据更新到一致状态。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,可能导致缓冲区中的数据页无法写入磁盘,造成数据的不一致,数据库启动时校验失败,所以表空间恢复过程中不允许异常中断。
恢复完成后,表空间状态置为 ONLINE,并设置数据标记为 FIL_TS_RECV_STAT_RECOVERED,表示数据已恢复到一致状态。恢复表空间命令如下:

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE  MAIN;
3.4.4.3 归档还原与恢复

1、归档还原
使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集,也可以是联机归档备份集。归档还原的命令如下:

##还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。 
##1、指定还原的目标归档日志目录:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2; 

##2、指定还原目标库的 dm.ini 文件路径:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO  DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2; 

2、归档修复
使用 REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的所有本地归档日志目录执行修复。若目标库没有配置本地归档,则不执行修复。执行修复时,目标库一定不能处于运行状态。一般建议在数据库故障后,应立即执行归档修复,否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志中而丢失,届时再利用本地归档恢复将无法恢复到故障前的最新状态。归档恢复的命令如下:

##单机环境下,确保目标库已经停止工作后,执行归档修复;
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini'; 

##DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;
##对于两节点 DSC01、DSC02 执行修复如下: 
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini'; 
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini'

4.实验结论

数据库备份是 DBA 日常最重要的工作内容,数据库备份可以提高系统的高可用性和灾难可恢复性,当数据库系统崩溃时,没有备份就无法恢复,数据库备份可以减少数据丢失的风险,数据库备份是一种防范灾难于未然的强力手段,没有数据就没有一切,合适的备份恢复方案可以最小化数据丢失,最短的时间内恢复数据。

达梦社区地址 https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

https://ffmpeg.org/

https://ffmpeg.org/ https://www.gyan.dev/ffmpeg/builds/ https://github.com/BtbN/FFmpeg-Builds/releases F:\Document_ffmpeg F:\Document_ffmpeg\ffmpeg-master-latest-win64-gpl-shared\bin

python模式设计代码之观察者模式

1、观察者模式 话题订阅模式。观察者模式有两个角色&#xff0c;分别是话题发布者和话题订阅者&#xff08;即观察者&#xff09;。发布者就是把消息发送给话题&#xff0c;观察者就是订阅这个话题从而得到最新的资讯。这个模式的作用就拿手机的消息推送来说&#xff0c;app身…

深入C# .NET核心:委托与事件机制全解析

摘要&#xff1a; 在C# .NET编程中&#xff0c;委托和事件是实现异步编程和对象间通信的关键机制。理解它们的工作原理对于编写高效、响应式的应用程序至关重要。本文将深入探讨C# .NET中的委托与事件&#xff0c;从基础概念到高级应用&#xff0c;为读者提供全面的指导。 正文…

如何提高游戏的可玩性和趣味性?

提高游戏的可玩性和趣味性是吸引玩家并保持他们长期参与的关键。以下是一些策略和建议&#xff0c;可以帮助您增强游戏的吸引力和娱乐价值&#xff1a; 1. 独特的游戏机制 创新玩法&#xff1a;开发新颖、独特的游戏机制&#xff0c;让玩家在体验中感受到前所未有的乐趣。避免…

【网络编程】字节序,IP地址、点分十进制、TCP与UDP的异同

记录学习&#xff0c;思维导图绘制 目录 1、字节序​编辑 2、IP地址 3、点分十进制 4、TCP与UDP的异同 1、字节序 2、IP地址 3、点分十进制 4、TCP与UDP的异同

STL源码刨析:红黑树(RB-tree)

目录 1.前言 2.RB-tree的简单介绍 3.RB-tree的插入节点操作 4.RB-tree的删除节点操作 5.RB-tree的节点设计 6.RB-tree的迭代器设计 7.RB-tree的数据结构 8.RB-tree的构造与内存管理 9.RB-treed的元素操作 前言 在文章《STL源码刨析&#xff1a;树的导览》中&#xff0c;曾简单的…

使用 MongoDB 构建 AI:Flagler Health 的 AI 旅程如何彻底改变患者护理

Flagler Health 致力于为慢性病患者提供支持&#xff0c;为其匹配合适的医生以提供合适的护理。 通常&#xff0c;身患严重病痛的患者面临的选择有限&#xff0c;他们往往需要长期服用阿片类药物&#xff0c;或寻求成本高昂的侵入性外科手术干预。遗憾的是&#xff0c;后一种方…

linux小组件:git

git是什么&#xff1f; git是版本控制器&#xff08;去中心化的分布式系统&#xff09;可以快速高效地处理从小型到大型的各种项目。易于学习&#xff0c;占地面积小&#xff0c;性能极快。它具有廉价的本地库&#xff0c;方便的暂存区域和多个工作流分支等特性。 什么叫版本…

【数据结构七夕专属版】单链表及单链表的实现【附源码和源码讲解】

本篇是博主在学习数据结构时的心得&#xff0c;希望能够帮助到大家&#xff0c;也许有些许遗漏&#xff0c;但博主已经尽了最大努力打破信息差&#xff0c;如果有遗漏还请见谅&#xff0c;嘻嘻&#xff0c;前路漫漫&#xff0c;我们一起前进&#xff01;&#xff01;&#xff0…

微信小程序--19(.wxml 模板文件简单归纳)

类似HTML用来描述当前页面的结构 一、普通样式 1.<view> 内容 </view> 二、滚波样式 1.<swiper> 内容 </swiper> 2.<swiper-item>滚波内容 </swiper-item> 3.常用属性 纵向&#xff1a;scroll-y横向&#xff1a;scroll-x圆点颜色&am…

LinuxC高级day03(Shell脚本)

【1】Shell脚本 1》Shell脚本基础概念 1> 概念 Shell使用方式&#xff1a;手动在命令行下命令或用Shell脚本 Shell脚本本质&#xff1a;Shell命令的有序集合 扩展名最好以 .sh 结尾&#xff0c;见名知义 也可以没有 Shell既是应用程序&#xff0c;又是一种脚本语言 解…

迁移学习之基本概念

迁移学习 1、通俗定义 迁移学习是一种学习的思想和模式 迁移学习作为机器学习的一个重要分支&#xff0c;侧重于将已经学习过的知识迁移应用于新的问题中 迁移学习的核心问题是&#xff0c;找到新问题和原问题之间的相似性&#xff0c;才可以顺利地实现知识地迁移 定义&…

运行pytorch报异常处理

一、问题现象及初步定位&#xff1a; 找不到指定的模块。 Error loading "D:\software\python3\Lib\site-packages\torch\lib\fbgemm.dll 此处缺少.dll文件&#xff0c;首先下载文件依赖分析工具 Dependencies https://github.com/lucasg/Dependencies/tree/v1.11.1 之后下…

leetcode169. 多数元素,摩尔投票法附证明

leetcode169. 多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输…

C# winform 三层架构 增删改查 修改数据(修改篇)

ss一.留言 本专栏三层架构已经更新了 添加 登录 显示&#xff0c;还差修改以及删除&#xff0c;本篇更新修改&#xff0c;主要操作为点击修改某一条数据&#xff0c;然后跳转页面进行修改。 二.展示 我们先看DAL代码 /// <summary>/// 修改/// </summary>/// &l…

【RTOS面试题】什么是抢占?抢占的原理、抢占的好处、抢占有什么局限性?

&#x1f48c; 所属专栏&#xff1a;【RTOS-操作系统-面试题】 &#x1f600; 作  者&#xff1a; 于晓超 &#x1f680; 个人简介&#xff1a;嵌入式工程师&#xff0c;专注嵌入式领域基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大家&#xf…

大语言模型的模型量化(INT8/INT4)技术

目录 一、LLM.in8 的量化方案 1.1 模型量化的动机和原理1.2 LLM.int8 量化的精度和性能1.3 LLM.int8 量化的实践 二、SmoothQuant 量化方案 2.1 SmoothQuant 的基本原理2.2 SmoothQuant 的实践 三、GPTQ 量化训练方案 3.1 GPTQ 的基本原理3.2 GPTQ 的实践 参考资料 一、LLM.i…

让对话AI帮助你做程序架构设计,以及解决你的疑问

我想问下对话AI,本文采取的是chatgpt免费版 我问&#xff1a; 你说程序的设计&#xff0c;前后端分离的BS架构。比如工人基础档案1000条记录&#xff0c;工程项目基础档案10条记录&#xff0c;其他相关这两个基础档案的具体功能&#xff0c;比如打卡记录&#xff0c;宿舍记录&…

SD-WAN解决方案功能概述

SD-WAN&#xff08;软件定义广域网&#xff09;是一种前沿的网络技术&#xff0c;旨在为企业提供灵活、智能且高效的广域网连接。SD-WAN的主要功能可以分为四大类&#xff1a;路由、安全性、性能优化和管理控制。 路由功能 路由功能是SD-WAN解决方案的核心部分之一。传统的广域…

B站宋红康JAVA基础视频教程个人笔记chapter05

1.一维数组的定义方式 // 方式一(静态初始化) double[] prices; prices new double[]{20, 32, 43};// 方式二:&#xff08;动态初始化&#xff09; String[] foods; foods new String[4]; // 内部声明数组的长度 // String foods new String[4];// 其他方式 int[] prices …