暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ASM元数据的备份与恢复

eygle 2019-09-19
1540

由于ASM的元数据存储在磁盘头上,所以其备份恢复需要区别于数据库独立进行。


在Oracle Database 10g中,如果ASM磁盘组彻底损坏,当需要从RMAN备份恢复的时候,我们必须先把以前的ASM磁盘组、需要的目录都手工创建好后才能执行恢复过程,这相当繁琐复杂。


在Oracle Database 11g里,Oracle新提供了md_backup命令来备份上述磁盘组、目录、模板等信息,恢复的时候只需要执行一下md_restore命令,那些以前需要手工创建的磁盘组、目录、模板等信息就全部创建好了。这样,用md_backup、md_restore来配合RMAN,整个备份恢复的过程将更为便捷、更为完善。


asmcmd提供了非常完善的帮助信息,在asmcmd中用help md_backup可以获得详细的输出提示。缺省的指定一个备份文件名,md_backup即可将所有元数据信息备份下来:


ASMCMD> md_backup /tmp/oradgbackup20110322
Disk group metadata to be backed up: ACFSG
Disk group metadata to be backed up: CRSDG
Disk group metadata to be backed up: ORADG
Current alias directory path: EYGLE/ONLINELOG
Current alias directory path: EYGLE
Current alias directory path: EYGLE/CONTROLFILE
Current alias directory path: ASM
Current alias directory path: EYGLE/PARAMETERFILE
Current alias directory path: EYGLE/CONTROLFILE
Current alias directory path: EYGLE/TEMPFILE
Current alias directory path: EYGLE/DATAFILE
Current alias directory path: EYGLE
Current alias directory path: EYGLE/ONLINELOG
Current alias directory path: ASM/ASMPARAMETERFILE


以下针对磁盘组ORADG执行md_backup:


ASMCMD> md_backup /tmp/oradgbackup20110323 -G ORADG
Disk group metadata to be backed up: ORADG


这个备份文件其实就是一个记录了磁盘组ORADG的一些具体配置信息(磁盘组、磁盘、目录、磁盘属性等)的XML格式的文本文件:


@diskgroup_set = (
                   {
                     'ATTRINFO' => {
                                     '_._DIRVERSION' => '11.2.0.0.0',
                                     'COMPATIBLE.ASM' => '11.2.0.0.0',
                                     'COMPATIBLE.RDBMS' => '10.1.0.0.0'
                                   },
                     'DISKSINFO' => {
                                      'VOL3' => {
                                                  'VOL3' => {
                                                              'TOTAL_MB' => '9687',
                                                              'FAILGROUP' => 'VOL3',
                                                              'NAME' => 'VOL3',
                                                              'DGNAME' => 'ORADG',
                                                              'PATH' => 'ORCL:VOL3'
                                                            }
                                                }
                                    },
                     'DGINFO' => {
                                   'DGTORESTORE' => 0,
                                   'DGCOMPAT' => '11.2.0.0.0',
                                   'DGNAME' => 'ORADG',
                                   'DGDBCOMPAT' => '10.1.0.0.0',
                                   'DGTYPE' => 'EXTERN',
                                   'DGAUSZ' => '1048576'
                                 },
                     'ALIASINFO' => {},
                     'TEMPLATEINFO' => {
                                         '6' => {
                                                  'DGNAME' => 'ORADG',
                                                  'STRIPE' => 'COARSE',
                                                  'TEMPNAME' => 'ONLINELOG',
                                                  'REDUNDANCY' => 'UNPROT',
                                                  'SYSTEM' => 'Y'
                                                },
                                         '11' => {
                                                   'DGNAME' => 'ORADG',
                                                   'STRIPE' => 'COARSE',
                                                   'TEMPNAME' => 'AUTOBACKUP',
                                                   'REDUNDANCY' => 'UNPROT',
                                                   'SYSTEM' => 'Y'
                                                 },


在磁盘组ORADG还存在的情况下是不能执行md_restore的:


ASMCMD> md_restore --full -G oradg /tmp/oradgbackup20110323
Current Diskgroup metadata being restored: ORADG
ASMCMD-09352: CREATE DISKGROUP failed
ORA-15018: diskgroup cannot be created
ORA-15030: diskgroup name "ORADG" is in use by another diskgroup (DBD ERROR: OCIStmtExecute)


当DROP掉ORADG后才可以执行md_restore:


SQL> drop diskgroup ORADG;  Diskgroup dropped.
ASMCMD> md_restore --full -G oradg /tmp/oradgbackup20110323
Current Diskgroup metadata being restored: ORADG
Diskgroup ORADG created!
System template ONLINELOG modified!
System template AUTOBACKUP modified!
System template CONTROLFILE modified!
System template DATAGUARDCONFIG modified!
System template CHANGETRACKING modified!
System template DUMPSET modified!
System template BACKUPSET modified!
System template ASMPARAMETERFILE modified!
System template DATAFILE modified!
System template FLASHBACK modified!
System template OCRFILE modified!
System template FLASHFILE modified!
System template PARAMETERFILE modified!
System template TEMPFILE modified!
System template XTRANSPORT modified!
System template ARCHIVELOG modified!


从结果里可以看到ORADG已经被成功重建:


SQL> select group_number,name,type from v$asm_diskgroup; 
GROUP_NUMBER NAME         TYPE  
------------ -------------------- ------  
1          ORADG         EXTERN


在恢复时,也可以通过-S参数只生成恢复脚本,不执行恢复动作:


ASMCMD> md_restore -S create_oradg.sql /tmp/oradgbackup20110323
Current Diskgroup metadata being restored: ORADG


得到的脚本内容如下:


[grid@enmou1 ~]$ more create_oradg.sql
create diskgroup ORADG EXTERNAL redundancy  disk 'ORCL:VOL3' name VOL3 size 9687M attribute 'compatible.asm' = '11.2.0.0.0', 'compatible.rdbms' = '10.1.0.0.0';
alter diskgroup /*ASMCMD AMBR*/ORADG set attribute '_._DIRVERSION' = '11.2.0.0.0';
alter diskgroup /*ASMCMD AMBR*/ORADG alter template ONLINELOG attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template AUTOBACKUP attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template CONTROLFILE attributes (UNPROTECTED FINE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template DATAGUARDCONFIG attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template CHANGETRACKING attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template DUMPSET attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template BACKUPSET attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template ASMPARAMETERFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template DATAFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template FLASHBACK attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template OCRFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template FLASHFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template PARAMETERFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template TEMPFILE attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template XTRANSPORT attributes (UNPROTECTED COARSE);
alter diskgroup /*ASMCMD AMBR*/ORADG alter template ARCHIVELOG attributes (UNPROTECTED COARSE)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论