DM8备份恢复

一、备份还原基本概念

1、表空间与数据文件

DM8的表空间类型分为:

  1. SYSTEM
  2. ROLL
  3. TEMP
  4. MAIN
  5. HMAIN(不支持对HMAIN表空间备份还原)
  6. 用户自定义表空间

2、重做日志

  1. REDO 日志,记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。
  2. 数据库中INSERT、DELETE、UPDATE 等DML操作以及CREATE TABLE等DDL操作最终都会转化为对某些数据文件、某些数据页的修改。
  3. DM8默认的两个联机重做日志:DAMENG01.log,DAMENG02.log

3、归档日志

  1. 在归档模式下,联机REDO 日志被连续拷贝到归档日志后就生成了归档日志文件。
  2. 归档日志文件以归档时间命名。例如: ARCHIVE_LOCAL1_20160217171507968.log
  3. 开启归档模式会对系统性能产生一定影响,但更安全

4、PWR记录

  1. REDO 日志中包含有一种特殊的记录,称为PWR(Page Written Record)日志。
  2. PWR 日志包含表空间ID、文件ID、数据在文件中的页号和页的当前LSN信息。
  3. 每次数据页刷盘时,系统都会生成一条对应的PWR日志。
  4. 可用来提升系统故障恢复速度。在引入PWR记录之前,数据库故障重启时需要重做所有有效的REDO 日志记录。根据PWR记录可以快速判断数据页是否已刷盘,有效避免无用IO。

5、检查点与日志序列号

  1. 检查点的功能是按照数据页第一次被修改的顺序,依次将BUFFER缓冲区中的脏页写入磁盘,并在这个过程中动态调整CKPT_LSN值,释放日志空间。
  2. LSN (LOG SEQUENCE NUMBER),即日志序列号,表示REDO 日志产生的顺序,系统为每个REDO 日志分配一个LSN值。

6、备份集

一个备份集对应一次完整备份,为一个目录,由一个或多个备份片和一个元数据文件组成。

备份片(后缀为.bak)是用来存储备份数据的文件。备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到这些备份片文件中。

元数据文件(后缀为.meta)用来存储备份信息。包括:

  1. 备份集本身相关的信息
  2. 备份源库的建库参数信息
  3. 备份集中备份数据文件信息
  4. 备份集中备份片的信息

7、备份

将待备份的数据经过处理如加密、压缩等后,写到备份片文件中,并将相关备份信息写到元数据文件中的过程。

DM8中对备份的划分标准有如下几种:

  1. 备份组织形式:物理备份和逻辑备份
  2. 备份时,数据库是否运行:联机备份和脱机备份
  3. 备份的粒度大小:库备份、表空间备份、归档备份和表备份,归档备份支持联机和脱机;归档备份会把收集到的归档文件,备份到备份集中的每一个备份片。必要的时候可以使用归档备份集,还原归档。
  4. 备份数据的一致性:一致性备份和非一致性备份
  5. 备份数据的完整性:完全备份和增量备份

8、还原

把备份集中的备份数据经过处理后,写回到还原目标库中相应的数据文件中的过程。

还原回来的数据通常是处于非一致性状态,需要执行恢复操作,使得目标数据库数据一致,才能对外提供服务。

与备份的分类类似,还原也可按照以下标准进行划分:

  1. 还原组织形式:物理还原和逻辑还原
  2. 还原时,数据库是否运行:联机还原和脱机还原
  3. 还原的粒度大小:库还原、表空间还原、归档还原和表还原
  4. 还原数据的完整性:完全备份还原和增量备份还原

9、恢复

  1. 恢复是重做本地归档日志或者备份集中备份的归档日志的过程。
  2. 没有经过恢复的还原数据库是不允许启动的。
  3. 表空间和表还原均为联机执行,都不需要再执行恢复操作。此处恢复是指数据库恢复操作。

根据恢复过程中是否重做归档,及重做归档日志的来源,可将恢复分三类:

(1)更新DB_MAGIC

DB_MAGIC记录数据库的变化,当数据库经过备份还原并恢复后,DB_MAGIC就会改变(SELECT DB_MAGIC FROM V$RLOG;)

在不需要重做归档日志恢复数据的情况下,可以直接更新DB_MAGIC来完成最后的恢复工作。

(2)从备份集恢复

利用备份集中备份日志的恢复过程。

(3)从归档恢复

利用重做本地归档日志来恢复数据的过程。

从归档恢复可恢复到最新状态,或指定的时间点、指定的LSN值

二、逻辑备份还原

DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原。逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。

逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原 dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录 /dmdbms/bin 中找到。

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

  1. 数据库级(FULL):导出或导入整个数据库中的所有对象。
  2. 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
  3. 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
  4. 表级(TABLES):导出或导入一个或多个指定的表或表分区。

物理备份与逻辑备份的区别:

逻辑备份:利用导出工具,将用户的表、数据记录导出到.dmp文件中。

物理备份:直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。

三、备份还原场景选择

1、库级

理论上无论出现哪种损坏都可以采用库级备份还原修复,建议物理损坏情况下使用;

逻辑损坏导致库数据丢失比较严重或者表空间已经被删除,也可采用库级备份还原;

要求还原的目标库脱机且正常退出。需借助DMRMAN工具完成。

2、表空间级

若逻辑损坏导致某个表空间中多个表数据丢失时,可以考虑采用表空间级备份还原。

DM8支持从库级备份中还原表空间。

3、归档

归档还原仅能恢复归档文件。

很多时候可以利用归档文件修复数据,若条件允许,最好保留尽量多的归档文件。

4、表级

因逻辑损坏导致个别表数据丢失, 可以采用表级备份还原。建议对数据库中频繁操作的重要表进行表级备份。

将指定表数据从一个表迁移到另外一个表中,也可使用表级备份还原。

表级备份还原过程中,其他表可以正常工作。

5、完全,还是增量

当库或表空间的基础数据量很大而数据修改操作不太频繁时,强烈建议使用增量备份(前提是至少有一个完全备份)建议当进行一定次数的增量备份后,应重新做一个完全备份。

表空间还原后的恢复操作由DM8自动执行;表还原后已经是一致性状态,不需要进行恢复操作。

提供三种库级恢复方式:

(1)若还原时指定备份集为脱机库备份集(LEVEL=1)或者联机库备份集(LEVEL=0), 但过程中无日志(START_LSN = END_LSN+1),且仅需将库恢复到备份时状态,建议选择更新DB_MAGIC恢复方式;

(2)若还原时指定的备份集为联机备份集(LEVEL=0)且备份了日志(备份时不指定 WITHOUT LOG 参数),且仅需要库恢复到备份时状态,可以选择从备份集恢复;

(3)除以上情况外,均可以采用从本地归档恢复。可指定想要恢复到的 LSN(大于备份结束END_LSN)和时间点(大于备份时间BACKUP_TIME)。不指定则恢复到最新状态。

四、备份恢复方法

4.1 相关工具

Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原;

DMRMAN 工具:脱机数据库备份还原与恢复;

客户端工具 MANAGER和CONSOLE:对应命令行工具DIsql和DMRMAN的功能,分别用于联机和脱机备份还原数据。

4.2 归档配置

DM 数据库开启归档方式:

1、SQL 方式开启归档

alter database mount;

alter database add  archivelog 'dest=/d07,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=200000';

alter database archivelog;

alter database open;

2、编辑配置文件方式开启归档

首先修改 dm.ini 文件的 arch_ini 参数为 1,然后在 dm.ini 文件目录新建 dmarch.ini 文件,添加以下内容:

ARCH_WAIT_APPLY   = 1

[ARCHIVE_LOCAL1]

ARCH_TYPE         = LOCAL

ARCH_DEST         = /d07

ARCH_FILE_SIZE       = 64

ARCH_SPACE_LIMIT     = 0

重启数据库即可开启归档模式。

注意:需要注意配置 ARCH_SPACE_LIMIT 参数,为 0 是不限制归档大小,其它数值为限制归档量大小,单位是 MB。

4.3 联机备份

进行联机备份,数据库必须保持在联机状态

4.3.1 数据库备份

1、完全备份

进行全库备份,备份名为fullback1,备份描述信息为‘完全备份‘,压缩等级为8 。

backup database to fullback1 backupset '/dm8/dmback/full1' backupinfo'完全备份' compressed level 8;

 指定压缩等级,等级越高压缩比越大,备份时间越长,仅指定COMPRESSED,默认为1’

2、增量备份(差异备份)

指定基备份的搜索目录为:/dm8/dmback/full

backup database increment with backupdir '/dm8/dmback/full' backupset '/dm8/dmbak/db_increment_bak_01';

4.3.2 表空间备份

backup tablespace main backupset '/dm8/dmback/tablespace1';

注:备机状态/MOUNT状态/MPP和RAC环境均不允许表空间备份。

4.3.3 表备份

backup table lcz backupset '/dm8/dmback/lcz';

表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说。

4.3.4 归档备份

backup archive log all backupset '/dm8/dmback/arch';

归档备份拷贝指定归档目录下的所有的归档文件到备份集中。

备份归档需要服务器配置归档。

4.3.5 备份语法及参数解释

BACKUP DATABASE[<备份类型>][TO <备份名>] [BACKUPSET '<备份集路径>'] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]

[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]

[LIMIT <read_limit>|<write_limit>]

[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]

[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG][WITHOUT MIRROR]

[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]

[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];

<备份类型>::= FULL|

[FULL] DDL_CLONE|

[FULL] SHADOW|

INCREMENT <increment_statement>

<increment_statement>::= [FROM LSN <lsn>] | <inc_sub_statement>

<inc_sub_statement>::= [CUMULATIVE][<指定基备份子句>]

<指定基备份子句>::= WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}|

                 BASE ON BACKUPSET '<基备份目录>'

<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]

<write_limit>::= WRITE SPEED <写速度上限>

备份类型:分为完全备份 FULL 和增量备份 INCREMENT 两种。缺省为 FULL。

完整参数详解参考:备份还原实战 | 达梦技术文档

 

4.3.6 备份管理

备份管理相关动态视图总结如下:

V$BACKUPSET:显示备份集基本信息。

V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。

V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。

V$BACKUPSET_ARCH:显示备份集的归档信息。

V$BACKUPSET_RLOG:显示备份集的日志信息。

V$BACKUPSET_BKP:显示备份集的备份片信息。

V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。

V$BACKUPSET_TABLE:显示表备份集中备份表信息。

V$BACKUPSET_INDEX:显示表备份集中备份索引信息。

V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。

4.4 联机恢复

DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。

4.4.1 表还原

表还原之后不需要恢复操作。DIsql 中输入以下简单的 RESTORE 语句就可还原表:

restore table lcz from backupset '/dm8/dmbak/lcz';

 

4.5 脱机备份

DMRMAN(DM RECOVERY MANAGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行。

通过 DMRMAN 工具执行脱机操作过程中,仅会使用通过关键字 DATABASE 指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。例如:DATABASE 指定目标库为/opt/dmdbms/data/dm.ini,为单机环境且配置参数 ARCH_INI 为 1,那么只会相应的读取 dmarch.ini 中本地归档日志信息。此时,即使 dmarch.ini 中配置了 REALTIME、MARCH、TIMELY 等其他类型的归档日志,也不会去校验 dmmal.ini、dmtimer.ini 等是否有效。

4.5.1 数据库备份

在 DMRMAN 工具中使用 BACKUP 命令可以备份整个数据库。使用 DMRMAN 脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。在 DMRMAN 中输入以下命令即可备份数据库:

RMAN>backup database '/dm8/dmdata/DMDB/dm.ini';

 

命令执行完后会在默认的备份路径下生成备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。这是最简单的脱机数据库备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。

BACKUP DATABASE '<INI文件路径>' [<备份类型>][TO <备份名>] [BACKUPSET '<备份集路径>']

[DEVICE TYPE <介质类型>[PARMS '<介质参数>']

[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]

[LIMIT <read_limit>|<write_limit>]

[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]

[COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][WITHOUT MIRROR]

[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]

[USE BAK_MAGIC <备份集魔数>];

创建完全备份

RMAN>BACKUP DATABASE '/dm8/dmdata/DMDB/dm.ini' FULL BACKUPSET '/dm8/dmbak/db_full_bak_01';

命令中的 FULL 参数表示执行的备份为完全备份,也可以不指定该参数,DMRMAN 默认执行的备份类型为完全备份。

创建增量备份

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

BACKUP DATABASE '/dm8/dmdata/DMDB/dm.ini' increment with backupdir  '/dm8/dmbak/db_full_bak_01' backupset '/dm8/dmbak/db_increment_bak_02';

 

4.5.2 归档备份

执行归档备份要求数据库处于脱机状态。与联机归档备份一样,脱机归档备份需要配置归档。

RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/dm8/dmdata/DMDB/dm.ini' BACKUPSET '/dm8/dmbak/arch_all_bak_01';

 

4.6 脱机还原

4.6.1 数据库还原

使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。数据库的还原包括数据库配置文件还原和数据文件还原,目前可能需要还原的数据库配置文件包括 dm.ini、dm.ctl、服务器秘钥文件(dm_service.prikey 或者 dm_external.config,若备份库指定 usbkey 加密,则无秘钥文件)、联机日志文件。

数据库备份集分为联机和脱机两种类型。通常情况下,用户会在联机状态下备份数据库,因此下面以联机数据库备份为例说明使用 DMRMAN 如何执行数据库还原操作。

校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;

RMAN>CHECK BACKUPSET '/dm8/dmbak/db_full_bak_01';

还原数据库,可以直接指定还原目标库的 dm.ini 进行数据库还原,如下所示:

RMAN>RESTORE DATABASE '/dm8/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dm8/dmbak/db_full_bak_01';

也可指定 REUSE DMINI 子句进行数据库还原,此时会将备份集中备份的 dm.ini 中除路径相关的 INI 参数外,均拷贝到当前 dm.ini 上。如下所示:

RMAN>RESTORE DATABASE '/dm8/dmdata/DMDB/dm.ini' REUSE DMINI FROM BACKUPSET '/dm8/dmbak/db_full_bak_01';

 

4.6.2 数据库恢复

使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。

如果还原后,不需要重做日志,数据就已经处于一致性状态了(例如正常关闭库的脱机备份还原),则可以跳过这一步,直接进入数据库更新阶段。

数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;从归档恢复,即重做归档中的 REDO 日志。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,可能导致缓冲区中的数据页无法写入磁盘,造成数据的不一致,数据库启动时校验失败,所以数据库恢复过程中不允许异常中断。数据库恢复后,还需要执行数据库更新操作,将数据库调整为可正常工作的库才算完成。下面逐一进行说明。

从备份集恢复

如果备份集在备份过程中生成了日志,且这些日志在备份集中有完整备份(如联机数据库备份),在执行数据库还原后,可以重做备份集中备份的日志,将数据库恢复到备份时的状态,即从备份集恢复。

RMAN>RECOVER DATABASE '/dm8/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dm8/dmbak/db_full_bak_01';

从归档恢复

从归档恢复是利用重做本地归档日志来恢复数据的过程。从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。

使用DDL CLONE方式备份的数据库,不支持指定归档恢复。指定归档恢复时,不建议使用联机状态下源库的归档,此时无法保证归档的完整性。

由于从本地归档恢复允许使用 USE DB_MAGIC 指定待收集归档的 DB_MAGIC,那么就会存在跨库恢复情况,所以,归档日志的正确使用完全由用户保证。因此,为了保证用户能正确使用从归档恢复,除了下文这两种情况,其他情况(可能导致数据被破坏)不建议用户使用从本地归档恢复。

执行过从备份集还原,或者执行过从备份集还原恢复的库可以使用从归档进行恢复。此时本地归档日志属于生成备份集的源库,本地归档日志的 DB_MAGIC 与备份集中记录的 DB_MAGIC 值相同。

利用归档恢复数据库至最新状态的完整示例如下:

启动 DIsql 联机备份数据库,以及备份从检查点开始的本地归档日志;

BACKUP ARCHIVELOG FROM LSN 101352 BACKUPSET '/dm8/dmbak/arch_bak_lsn_101352';

BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_recover_arch';

查看动态视图V$RLOG中的CKPT_LSN列,可以得出当前检查点LSN。

准备目标库,可以使用备份库,也可以重新生成库;

如果使用原备份库,且备份库故障,需要先执行目标库归档修复:

RMAN>REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';

如果使用新生成的库,生成之后需要先重启一下数据库实例,才可以被还原。重新生成的库不需要执行归档修复(REPAIR)操作。重新生成库操作如下:

./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE auto_overwrite=1

启动 RMAN,校验备份;

RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_recover_arch';

还原数据库;

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

查看备份集的数据库信息,获取源库的 DB_MAGIC;

建议

若还原后,立即执行恢复,可以不用获取源库DB_MAGIC。因为DMRMAN执行库级备份集还原后,会将备份集中的DB_MAGIC刷入还原后的库中。

RMAN>SHOW BACKUPSET '/home/dm_bak/db_full_bak_for_recover_arch' INFO DB;

利用归档恢复数据库。由上步骤 显示的备份集信息可知,源库的 DB_MAGIC 值为 1935823972;

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1935823972;

若还原后,立即执行恢复,可以不用指定DB_MAGIC。

4.6.3更新 DB_MAGIC

数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后,或者目标库不需要执行重做日志已经处于一致状态的情况。

语法如下:

RECOVER DATABASE '<ini_path>' UPDATE DB_MAGIC;

RMAN>RECOVER DATABASE '/dm8/dmdata/DMDB/dm.ini' UPDATE DB_MAGIC;

4.6.4 表空间还原

使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为 OFFLINE 状态。

表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示已经还原但数据不完整。

使用说明:

表空间还原不能是 TEMP 表空间,指定文件还原也不能为 TEMP 表空间中文件。

表空间还原要求还原目标库与备份库为同一个库。

还原目标库不能为已经执行过 RESTORE 但未执行过 RECOVER 的库。

处于 RES_OFFLINE 或 CORRUPT 状态的表空间不允许指定表空间中数据文件还原。

整个还原过程中不会修改数据库本身状态或者调整 CKPT_LSN。

不管是 DSC 环境,还是单机环境,若异常退出,需手动指定各节点归档修复后,使用各节点完整的归档日志执行还原恢复;否则,将可能无法恢复到最新状态。

若目标库中 SYSTEM 表空间故障,则必须优先还原 SYSTEM 表空间。

在 DMDSC 环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。

如果 SYSTEM 表空间处于 ONLINE/OFFLINE 状态且文件丢失,则必须要通过库还原修复,不支持对其执行表空间还原。

以联机表空间备份集为例,展示 DMRMAN 如何完成表空间的还原:

1) 联机备份表空间,保证数据库运行在归档模式及 OPEN 状态;

BACKUP TABLESPACE MAIN BACKUPSET '/dm8/dmbak/ts_full_bak_for_restore';

2) 校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;

RMAN>CHECK BACKUPSET '/dm8/dmbak/ts_full_bak_for_restore';

 

3) 还原表空间。需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。启动 DMRMAN,输入以下命令:

RMAN>RESTORE DATABASE '/dm8/dmdata/DMDB/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/dmbak/ts_full_bak_for_restore';

4.6.5 表空间恢复

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

恢复完成后,表空间状态置为 ONLINE,并设置数据标记为 FIL_TS_RECV_STAT_RECOVERED,表示数据已恢复到一致状态。

恢复表空间。启动 DMRMAN,输入以下命令:

RMAN>RECOVER DATABASE '/dm8/dmdata/DMDB/dm.ini' TABLESPACE MAIN;

 

4.7 逻辑备份方法

全库导出备份

./dexp USERID=SYSDBA/SYSDBA@192.168.23.88:5236 FILE=db_str.dmp DIRECTORY=/dm8/dmbak LOG=db_str.log FULL=Y

 

表备份

./dexp USERID=SYSDBA/SYSDBA@192.168.23.88:5236 FILE=db_str_tab.dmp DIRECTORY=/dm8/dmbak LOG=db_str_tab.log tables=lcz

用户备份

./dexp USERID=SYSDBA/SYSDBA@192.168.23.88:5236 FILE=db_str_user.dmp DIRECTORY=/dm8/dmbak LOG=db_str_user.log OWNER=SYSDBA

模式备份

./dexp USERID=SYSDBA/SYSDBA@192.168.23.88:5236 FILE=db_str_schema.dmp DIRECTORY=/dm8/dmbak LOG=db_str_schema.log SCHEMAS=SYSDBA

4.8 逻辑还原方法

dimp导入需要指定导入方式

当不指定时缺省为SCHEMAS。

导入和导出方式可以不一致,

比如当导出方式不是FULL时, 导入时也可以指定为FULL,这时会把dmp文件中的所有内容导入到指定的实例中

全库还原

./dimp USERID=SYSDBA/SYSDBA FILE=/dm8/dmbak/db_str.dmp LOG=db_str.log DIRECTORY=/dm8/dmbak  FULL=Y

模式还原

./dimp USERID=SYSDBA/SYSDBA FILE=/dm8/dmbak/db_str_schema.dmp LOG=db_str.log DIRECTORY=/dm8/dmbak  SCHEMAS=SYSDBA

表还原

./dimp USERID=SYSDBA/SYSDBA FILE=/dm8/dmbak/db_str_tab.dmp LOG=db_str.log DIRECTORY=/dm8/dmbak TABLES=lcz

用户还原

./dimp USERID=SYSDBA/SYSDBA FILE=/dm8/dmbak/db_str_user.dmp LOG=db_str.log DIRECTORY=/dm8/dmbak  OWNER=SYSDBA

导入到指定模式

./dimp USERID=SYSDBA/SYSDBA FILE=/dm8/dmbak/db_str.dmp LOG=db_str.log DIRECTORY=/dm8/dmbak  REMAP_SCHEMAS=TESTSCHEMAS:TESTCHEMA21

更多相关资料请参考达梦云适配技术社区

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值