DM8备份恢复的简单使用

  1. 打开归档

方法一:

alter database mount;

alter database archivelog;

alter database add archivelog 'dest=/opt/dmdbms/data/DAMENG/arch,type=local,file_size=1024,space_limit=2048';

Alter database open;

方法二:

修改配置文件

vim dm.ini

ARCH_INI = 1

vim dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch #本地归档文件存放路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

重启数据库

  1. DIsql备份
    1. 备份数据库

备份命令

BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<

基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份目录>']][TO <备份

>][BACKUPSET '<备份集路径>']

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

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

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

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

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

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

最简单的

SQL>backup database;

指定路径

SQL> backup database backupset 'db_bak_01';

指定备份集名称

backup database to test_bak_name;

指定备份片大小

backup database to test_bak_size_02 maxpiecesize 50;

指定并行度

backup database to test_bak_size_03 maxpiecesize 40 parallel 4;

基于db_bak_01完成增量备份

SQL> backup database increment with backupdir '/home/dmdba/dmdbms/data/DAMENG/bak/db_bak_01' backupset '/home/dmdba/dmdbms/data/DAMENG/bak/db_bak_01_incre';

    1. 备份表空间

备份命令

BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<

备份搜索目录>'{,'<基备份搜索目录>'}]| [BASE ON BACKUPSET '<基备份集目录>']][TO <备份

>] [BACKUPSET '<备份集路径>']

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

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

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

[COMPRESSED [LEVEL <压缩级别>]]

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

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

与库备份相同

    1. 备份表

备份命令

BACKUP TABLE <表名>

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

[BACKUPINFO '<备份描述>']

[MAXPIECESIZE <备份片限制大小>]

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

[COMPRESSED [LEVEL <压缩级别>]]

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

    1. 备份归档日志

备份命令

BACKUP <ARCHIVE LOG |ARCHIVELOG>

[ALL | [FROM LSN <lsn>]| [UNTIL LSN <lsn>]|[LSN BETWEEN <lsn> AND <lsn>] | [FROM

TIME '<time>']|[UNTIL TIME '<time>']|[TIME BETWEEN'<time>'> AND '<time>'

]][<notBackedUpSpec>][DELETE INPUT]

[TO <备份名>][<备份集子句>];

<备份集子句>::=BACKUPSET ['<备份集路径>'][DEVICE TYPE <介质类型> [PARMS '<介质参数>']]

[BACKUPINFO '<备份描述>']

[MAXPIECESIZE <备份片限制大小>]

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

[COMPRESSED [LEVEL <压缩级别>]]

[WITHOUT LOG]

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

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

<notBackedUpSpec>::=NOT BACKED UP [<num> TIMES]|[SINCE TIME '<datetime_string>']

备份某个时间段内的日志

backup archivelog time between '2022-03-08 09:00:00' and '2022-03-08 10:05';

    1. 打开trace

backup database trace level 2;

  1. DIsql备份管理
    1. 备份集操作

对备份集进行校验 

sf_bakset_check('DISK','db_bak_01');

删除备份集

sf_bakset_remove('DISK','DB_DAMENG_FULL_20220308_115724_805299');

sf_bakset_remove('DISK','db_bak_01',1);  --1 代表级联删除,将删除对应的增量备份

删除指定条件的备份集

SF_BAKSET_REMOVE_BATCH (

device_type varchar,

end_time datetime,

range int, --1 代表库级,2 代表表空间级,3 代表表级,4 代表归档备份

obj_name varchar(257) --待删除备份集中备份对象的名称,仅表空间级和表级有效

)

例:SQL>sf_DB_BAKSET_REMOVE_BATCH('DISK', NOW(),null,null);

SP_DB_BAKSET_REMOVE_BATCH (

device_type varchar, end_time datetime

)--库级

SP_TS_BAKSET_REMOVE_BATCH (

device_type varchar, end_time datetime, ts_name varchar(128)

)  --表空间级

SP_TAB_BAKSET_REMOVE_BATCH (

device_type varchar, end_time datetime,

sch_name varchar(128), tab_name varchar(128)

) --表级

SP_ARCH_BAKSET_REMOVE_BATCH (

device_type varchar, end_time datetime

) --归档日志

    1. 备份集查看

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');

 --添加备份集目录,如不添加,则只显示默认目录下的

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE(); ----删除内存中指定的备份目录

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL(); --删除内存中全部的备份目录

SQL> select * from v$backupset; --查看所有备份集

SQL> select * from v$backupset; -- 显示备份集的数据库相关信息

SQL> select * from v$backupset_arch;  --显示备份集中归档文件的信息

SQL> select * from v$backupset_bkp;  --显示备份集的备份片信息

SQL> select * from v$backupset_search_dirs;  --显示备份搜索路径

SQL> select * from v$backupset_table;  --显示备份集的备份信息

SQL> select * from v$backupset_subs;  --显示并行备份中生成的子备份集信息

    1. 备份监控

V$BACKUP_MONITOR 显示当前备份任务实时监控信息

V$BACKUP_FILES 显示当前备份任务待备份数据文件列表

V$BACKUP_HISTORY 显示最近 100 条备份监控信息,可以查看备份时长,读写速度 

  1. DIsql还原
    1. 表还原

RESTORE TABLE [<表名>] [STRUCT] [KEEP TRXID]

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

[IDENTIFIED BY <密码>|”<密码>” [ENCRYPT WITH <加密算法>]]

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

表还原之后不需要恢复操作。DIsql中就可以完成。

不能从库级或表空间级的备份中还原,只能从对应的表备份中还原

如果这个表已经不存在,需要先还原表结构,再进行表数据库还原

SQL> restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

[-2106]:Error in line: 1

Invalid table or view name [PRONEW].

used time: 0.252(ms). Execute id is 0.

SQL> restore table struct from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

executed successfully

used time: 25.016(ms). Execute id is 812.

SQL> restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

executed successfully

used time: 539.813(ms). Execute id is 813.

如果有二级索引,需要先带struct进行还原,且还原后二级索引消失,再进行表还原

SQL> select owner,index_name,status,num_rows from dba_indexes where table_name='PRONEW';

LINEID     OWNER      INDEX_NAME    STATUS NUM_ROWS

---------- ---------- ------------- ------ --------

1          SCOTT      INDEX33555597 VALID  NULL

2          PRODUCTION INDEX33555629 VALID  NULL

used time: 6.775(ms). Execute id is 837.

SQL> create index ind_pronew_name on production.pronew(name);

executed successfully

used time: 95.579(ms). Execute id is 838.

SQL> select owner,index_name,status,num_rows from dba_indexes where table_name='PRONEW';

LINEID     OWNER      INDEX_NAME      STATUS NUM_ROWS

---------- ---------- --------------- ------ --------

1          SCOTT      INDEX33555597   VALID  NULL

2          PRODUCTION INDEX33555629   VALID  NULL

3          PRODUCTION IND_PRONEW_NAME VALID  NULL

SQL> restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

[-8327]:the table to be restored has secondary indexes or extra constraints.

used time: 8.100(ms). Execute id is 0.

SQL> restore table production.pronew struct from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

executed successfully

used time: 19.741(ms). Execute id is 846.

SQL> select owner,index_name,status,num_rows from dba_indexes where table_name='PRONEW';

LINEID     OWNER      INDEX_NAME    STATUS NUM_ROWS

---------- ---------- ------------- ------ --------

1          SCOTT      INDEX33555597 VALID  NULL

2          PRODUCTION INDEX33555629 VALID  NULL

used time: 6.944(ms). Execute id is 847.SQL> restore table production.pronew from backupset 'TAB_PRONEW_BTREE_20220310_114821_794631';

executed successfully

used time: 469.777(ms). Execute id is 855.

  1. DMRMAN备份
    1. 配置

CONFIGURE |

CONFIGURE CLEAR |

CONFIGURE DEFAULT <sub_conf_stmt>

<sub_conf_stmt>::=

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

TRACE [[FILE '<跟踪日志文件路径>'][TRACE LEVEL <跟踪日志等级>]|CLEAR] |

BACKUPDIR [[ADD|DELETE] '<基备份搜索目录>'{,'<基备份搜索目录>' }|CLEAR] |

ARCHIVEDIR [[ADD|DELETE] '<归档日志目录>'{,'<归档日志目录>'}|CLEAR]

配置备份集搜集目录

备份集搜索目录用于增量备份还原中搜索基备份。如果不指定备份集搜集目录只会在库的默认备份目录和 当前备份执行备份集目录的上级目录下搜索备份集。

RMAN>CONFIGURE DEFAULT BACKUPDIR;

RMAN>CONFIGURE DEFAULT BACKUPDIR '/home/dm_bak1’,'/home/dm_bak2';

增加或删除部分备份集搜索目录

RMAN>CONFIGURE DEFAULT BACKUPDIR ADD '/home/dm_bak3';

RMAN>CONFIGURE DEFAULT BACKUPDIR DELETE '/home/dm_bak3';

配置归档日志搜集目录

归档日志搜索目录用于增量备份还原中搜索归档日志。

RMAN>CONFIGURE DEFAULT ARCHIVEDIR;

RMAN>CONFIGURE DEFAULT ARCHIVEDIR '/home/dm_arch1’,'/home/dm_arch2';

增加或删除部分归档日志搜索目录

RMAN>CONFIGURE DEFAULT ARCHIVEDIR ADD '/home/dm_arch3';

RMAN>CONFIGURE DEFAULT ARCHIVEDIR DELETE '/home/dm_arch3';

    1. 备份

使用控制文件进行备份

/dmrman CTLFILE=/home/dm_cmd/cmd_rman.txt

使用控制命令进行备份

/dmrman CTLSTMT="BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';"

脱机备份数据库

RMAN>BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';

BACKUP DATABASE '<INI 文件路径 >' [[[FULL][DDL_CLONE]] |INCREMENT

[CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON

BACKUPSET '<基备份集目录>']]

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

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

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

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

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

--DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不

拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据

脱机备份归档日志

BACKUP<ARCHIVE LOG | ARCHIVELOG>

[ALL | [FROM LSN <lsn>]|[UNTIL LSN <lsn>] | [LSN BETWEEN < lsn> AND < lsn>] |

[FROM TIME '<time>'] | [UNTIL TIME '<time>'] | [TIME BETWEEN '<time>' AND

'<time>']] [<notBackedUpSpec>][DELETE INPUT]

DATABASE '<INI 文件路径>'

[TO <备份名>][<备份集子句>];

<备份集子句>::= [BACKUPSET '<备份集路径>'] [DEVICE TYPE <介质类型>[PARMS '<介质参数>']

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

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

[COMPRESSED [LEVEL <压缩级别>]][TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE

<拆分块大小>]]

  1. DMRMAN备份管理
    1. 备份集查看

SHOW BACKUPSET '< 备份集目录 >' [<device_type_stmt>][RECURSIVE]

[<database_bakdir_lst_stmt>] [<info_type_stmt>] [<to_file_stmt>]; |

SHOW BACKUPSETS [<device_type_stmt>] <database_bakdir_lst_stmt>

[<info_type_stmt>] [<use_db_magic_stmt>] [<to_file_stmt>];

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

<database_bakdir_lst_stmt>::= DATABASE '<INI_PATH>' |

WITH BACKUPDIR '<备份集搜索目录>'{,'<备份集搜索目录>'} |

DATABASE '<INI_PATH>' WITH BACKUPDIR '<备份集搜索目录>'{, '<备份集搜索目录>'}

<info_type_stmt>::= INFO <信息类型>

<use_db_magic_stmt>::= USE DB_MAGIC <db_magic>

<to_file_stmt>::= TO '<输出文件路径>' [FORMAT TXT | XML]

例:show backupset '/home/dmdba/dmdbms/data/DAMENG/bak/full_db_01';

查看指定目录下所有的备份集

Show backupsets with backupdir '/home/dmdba/dmdbms/data/DAMENG/bak’

当目录下有多个数据库的备份时,使用db_magic指定数据库

RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak' USE DB_MAGIC 1447060265;

显示的备份集信息分为三类,依次是元数据信息(META INFO)、文件信息(FILE INFO

和数据库信息(DB INFO)。可只显示部分备份集信息

RMAN> show backupset '/home/dm_bak/DB_FULL_DAMENG_20190522_133248_000770' info

Meta

输出备份信息到文件

show backupsets with backupdir '/home/dmdba/dmdbms/data/DAMENG/bak' info meta to '/tmp/backupset_meta.txt' format txt;   --还可以输出xml

    1. 备份集检验

CHECK BACKUPSET '<备份集目录>'

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

    1. 备份集删除

REMOVE BACKUPSET '<备份集目录>'

[<device_type_stmt>]

[<database_bakdir_lst_stmt>][CASCADE]; |

REMOVE [<备份集类型>] BACKUPSETS [<device_type_stmt>] <database_bakdir_lst_stmt>

[[UNTIL TIME '<截止时间串>'] | [BEFORE <n_day>]];

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

<database_bakdir_lst_stmt>::=

DATABASE '<INI_PATH>' |

WITH BACKUPDIR '<备份集搜索目录>' {, '<备份集搜索目录>' } |

DATABASE '<INI_PATH>' WITH BACKUPDIR '<备份集搜索目录>' {, '<备份集搜索目录>' }

<备份集类型>::=

DATABASE |

TABLESPACE [<ts_name>] |

TABLE ["<schema_name>"."<tab_name>"] |

ARCHIVELOG|

ARCHIVE LOG

例:RMAN> remove backupset '/home/dmdba/dmdbms/data/DAMENG/bak/full_db_01';

全部删除

RMAN> remove backupsets with backupdir '/home/dmdba/dmdbms/data/DAMENG/bak';

    1. 备份集导出

  1. DMRMAN还原恢复
    1. 命令

库还原

RESTORE DATABASE <restore_type> FROM BACKUPSET '<备份集路径>'

[<device_type_stmt>]

[IDENTIFIED BY <密码>|”<密码>” [ENCRYPT WITH <加密算法>]]

[WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]

[MAPPED FILE '<映射文件路径>'][TASK THREAD <任务线程数>]

[RENAME TO '<数据库名>'];

<restore_type>::=<type1>|<type2>

<type1>::='<ini_path>' [WITH CHECK] [REUSE DMINI] [OVERWRITE] [FORCE]

<type2>::= TO '<system_dbf_dir>' [WITH CHECK] [OVERWRITE]

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

表空间还原

RESTORE DATABASE '<ini_path>' TABLESPACE <表空间名> [WITH CHECK]

[DATAFILE <文件编号> {,<文件编号>} | '<文件路径>' {,'<文件路径>'}]

FROM BACKUPSET '<备份集路径>' [<device_type_stmt>]

[IDENTIFIED BY <密码>|”<密码>”] [ENCRYPT WITH <加密算法>]

[WITH BACKUPDIR '<基备份搜索目录>' {,'<基备份搜索目录>'}]

[MAPPED FILE '<映射文件路径>']

[TASK THREAD <线程数>];

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

归档日志还原

RESTORE <ARCHIVE LOG | ARCHIVELOG> [WITH CHECK] FROM BACKUPSET '<备份集路径>'

[<device_type_stmt>]

[IDENTIFIED BY <密码>|”<密码>” [ENCRYPT WITH <加密算法>]]

[TASK THREAD <任务线程数>] [NOT PARALLEL]

[ALL | [FROM LSN <lsn>] | [UNTIL LSN <lsn>] | [LSN BETWEEN < lsn> AND < lsn>]

| [FROM TIME '<time>'] | [UNTIL TIME '<time>'] | [TIME BETWEEN '<time>' AND

'<time>'] ]

TO <还原目录> [OVERWRITE <level>];

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

<还原目录>::= ARCHIVEDIR '<归档日志目录>' | DATABASE '<ini_path>'

库恢复

RECOVER DATABASE '<ini_path>'[FORCE]

WITH ARCHIVEDIR '<归档日志目录>'{,'<归档日志目录>'}

[USE DB_MAGIC <db_magic>] [UNTIL TIME '<时间串>'] [UNTIL LSN <LSN>]; |

RECOVER DATABASE '<ini_path>' [FORCE] FROM BACKUPSET '< 备份集 路

>'[<device_type_stmt>] [IDENTIFIED BY <密码>|”<密码>” [ENCRYPT WITH <加密算法>]];

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

DATABASE:指定还原库目标的 dm.ini 文件路径。

表空间恢复

RECOVER DATABASE '<ini_path>' TABLESPACE <表空间名> [WITH ARCHIVEDIR '归档日志目

'{,'归档日志目录'}][USE DB_MAGIC <db_magic>];

    1. 还原恢复

数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO

日志;从归档恢复,即重做归档中的 REDO 日志。(注:恢复不会使用当前的redo log)

从备份集恢复

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM

BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM

BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

从归档恢复

SQL>BACKUP ARCHIVELOG FROM LSN 421401 BACKUPSET

'/home/dm_bak/arch_bak_lsn_421401';

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

RMAN>REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';  --如果使用原备份库,且备份库故障,需要先执行目标库归档修复(因为先写redo再写archive所以有可能故障时有数据还在redo没有写到archive里)

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';

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

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265;

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

--可以指定多个归档目录,用逗号分隔

归档校验

./dmrachk arch_path=/home/dm_arch/arch  --  若执行后归档恢复过程中,出现归档不足的错误,则利用归档校验工具 dmrachk, 查看归档目录中归档连续性情况,然后再利用备份的本地归档日志,还原到归档目录后,再次执行恢复操作

RMAN>RESTORE ARCHIVELOG FROM BACKUPSET '/home/dm_bak/arch_bak_lsn_421401' ALL

TO ARCHIVEDIR '/home/dm_arch/arch';

归档修复

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

使用 REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini

配置的所有本地归档日志目录执行修复。执行修复时,目标库一定不能处于运行状态。一般建议在数据库故障后,应立即执行归档修复, 否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志丢失,届时再利用本地归档恢复将无法恢复到故障前的最新状态

--一般的作用是将故障时写到redo但是没写到archive的写到archive

    1. 高级场景
      1. 指定映射文件还原

1. 生成映射文件

RMAN> DUMP BACKUPSET'/home/dm_bak/db_bak_for_map_01' DATABASE

'/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' MAPPED

FILE'/home/dm_mapfile/map_file_01.txt';

2. 手动编辑映射文件中表空间对应的 data_path 属性

3. 指定映射文件还原

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM

BACKUPSET '/home/dm_bak/db_bak_for_map_01' MAPPED FILE

'/home/dm_mapfile/map_file_01.txt';

      1. 恢复到指定时间点或LSN

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40';

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;

      1. 主备环境下指定 DB_MAGIC 收集归档

RMAN>RECOVER DATABASE '/opt/dmdbms/data0/DAMENG/dm.ini' WITH ARCHIVEDIR

'/opt/dmdbms/data1/arch' USE DB_MAGIC 1447060264;  --使用备库的db_magic

      1. 多次故障恢复后使用不同数据库归档恢复

与7.3.3一样,关键点在于PERMANNET_MAGIC 不变,只是db_magic发生变化

1. 先用第一次故障前的归档日志进行恢复

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RES/dm.ini' FROM BACKUPSET

'/home/dm_bak/B1';

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR

'/home/dm_arch/arch';

2. 查看第一次故障修复后的数据库的归档日志获取db_mgaic

./dmrachk arch_fil=/home/dm_arch/arch/ARCHIVE_LOCAL1_2019061208085947282.log

3. 使用第一次故障修复后生成的归档日志做恢复

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR

'/home/dm_arch/arch' USE DB_MAGIC 1449535319 ;

4. 更新数据库

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RES/dm.ini' UPDATE DB_MAGIC;

      1. 恢复表空间中的数据文件
  1. 根据v$datafile获取数据文件的ID

SQL>SELECT ID, PATH FROM V$DATAFILE;

  1. 还原数据文件

RMAN>RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE TS_FOR_RES_01

DATAFILE 1, 2 FROM BACKUPSET '/home/dm_bak/ts_bak_for_dbf';

也可以指定文件名

RMAN>RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE TS_FOR_RES_01

DATAFILE '/home/xm/DAMENG/ts_for_res_01_02.dbf',

'/home/xm/DAMENG/ts_for_res_01_03.dbf' FROM BACKUPSET

'/home/dm_bak/ts_bak_for_dbf';

  1. 联机拷贝数据库还原恢复

使用备份集进行还原恢复,在还原阶段,通过重建数据文件、联机日志文件以及更新控

制文件等操作重建了目标库的文件结构,并在恢复阶段重做日志将目标库恢复到最新状态。

理论上,拷贝源库得到的一个副本,相当于目标从备份集还原后的状态,利用归档日志应该

能将该副本恢复到最新状态。

1. 调 用 系 统 过 程 SP_BACKUP_COPY_BEGIN 记录当前系统BEGIN_LSN/BEGIN_SEQ信息

SQL>SP_BACKUP_COPY_BEGIN();

2. 开始拷贝数据库,使用常规方式拷贝数据库文件到新的目录。必须包含配置文件(dm.ini)、控 制文件(dm.ctl)、秘钥文件(dm_service.prikey)、联机日志文件(DAMENG01.log 和DAMENG02.log)以及数据文件(*.DBF)。

3. 调 用 系 统 过 程 SP_BACKUP_COPY_END , 记 录 系 统 各 节 点

END_LSN/END_SEQ信息,以在恢复结束后校验数据完整性

SQL>SP_BACKUP_COPY_END('/home/dm/bak/BAKSET_COPY');

  1. 修改文件路径位置

编辑dm.ini修改控制文件路径

将控制文件的格式转为文本,修改后再转换为控制文件格式

dmctlcvt TYPE=1 SRC=/home/dm/DB_COPY/dm.ctl DEST=/home/dm/DB_COPY/dmctl.txt

 dmctlcvt c2t /home/dm/DB_COPY/dm.ctl /home/dm/DB_COPY/dmctl.txt

dmctlcvt TYPE=2 SRC=/home/dm/DB_COPY/dmctl.txt DEST=/home/dm/DB_COPY/dm.ctl

dmctlvct t2c /home/dm/DB_COPY/dmctl.txt /home/dm/DB_COPY/dm.ctl

5. 还原恢复

启动DMRMAN,利用空备份集还原源库的副本;

RMAN>RESTORE DATABASE '/home/dm/DB_COPY/dm.ini' FROM BACKUPSET

'/home/dm/bak/BAKSET_COPY';

利用源库的归档日志将副本恢复到最新状态;

RMAN>RECOVER DATABASE '/home/dm/DB_COPY/dm.ini' WITH ARCHIVEDIR

'/home/dm/DB_FOR_COPY/DAMENG/arch';

恢复成功后更新副本DB_MAGIC。

RMAN>RECOVER DATABASE '/home/dm/DB_COPY/dm.ini' UPDATE DB_MAGIC;

参考:达梦技术丛书-DM8备份与还原

欢迎访问达梦社区:http://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值