asm备份元数据之md_backup和md_restore

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:asm备份元数据之md_backup和md_restore

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

在11g的asm中增加了md_backup和md_restore命令,用来备份和还原asm的元数据信息
当前磁盘组相关信息

SQL> select PATH,b.NAME from v$asm_disk a,v$asm_diskgroup b where a.GROUP_NUMBER=b.GROUP_NUMBER;

PATH                                     NAME
---------------------------------------- ----------
/dev/oracleasm/disks/VOL2                DATA
/dev/oracleasm/disks/VOL1                DATA
/dev/oracleasm/disks/VOL4                XIFENFEI
/dev/oracleasm/disks/VOL3                XIFENFEI

md_backup操作

--备份所有mount磁盘组
ASMCMD> md_backup /tmp/xifenfei.md    
Disk group metadata to be backed up: DATA
Disk group metadata to be backed up: XIFENFEI
Current alias directory path: XFF/ARCHIVELOG
Current alias directory path: XFF/ARCHIVELOG/2012_04_30
Current alias directory path: XFF/ONLINELOG
Current alias directory path: rac-cluster/OCRFILE
Current alias directory path: XFF/ARCHIVELOG/2012_05_01
Current alias directory path: XFF/CONTROLFILE
Current alias directory path: XFF/ARCHIVELOG/2012_04_13
Current alias directory path: rac-cluster/ASMPARAMETERFILE
Current alias directory path: rac-cluster
Current alias directory path: XFF
Current alias directory path: XFF/ARCHIVELOG/2012_03_03
Current alias directory path: XFF/PARAMETERFILE
Current alias directory path: XFF/DATAFILE
Current alias directory path: ASM/DATAFILE
Current alias directory path: XFF/CONTROLFILE
Current alias directory path: XFF
Current alias directory path: XFF/ONLINELOG
Current alias directory path: XFF/TEMPFILE
Current alias directory path: ASM

--备份指定磁盘组
ASMCMD> md_backup /tmp/xifenfei_data.md -G DATA  
Disk group metadata to be backed up: DATA
Current alias directory path: XFF/ARCHIVELOG/2012_03_03
Current alias directory path: XFF/CONTROLFILE
Current alias directory path: XFF/ARCHIVELOG/2012_05_01
Current alias directory path: XFF/ARCHIVELOG
Current alias directory path: rac-cluster/OCRFILE
Current alias directory path: XFF/ARCHIVELOG/2012_05_24
Current alias directory path: XFF/ONLINELOG
Current alias directory path: XFF/ARCHIVELOG/2012_04_30
Current alias directory path: rac-cluster/ASMPARAMETERFILE
Current alias directory path: rac-cluster
Current alias directory path: XFF
Current alias directory path: XFF/ARCHIVELOG/2012_04_13

md_restore操作

--生产sql文件(未执行)
ASMCMD> md_restore -S  /tmp/get_dg_sql -G data /tmp/xifenfei_data.md
Current Diskgroup metadata being restored: DATA

破坏XIFENFEI磁盘组中的其中一个asm disk(/dev/oracleasm/disks/VOL3)
[root@rac1 tmp]#  dd if=/dev/zero of=/dev/sdb1 bs=4096 count=1
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 4.8629e-05 seconds, 84.2 MB/s

--尝试还原磁盘组(操作单位是磁盘组)
ASMCMD>  md_restore /tmp/xifenfei.md --silent -G xifenfei
Current Diskgroup metadata being restored: XIFENFEI
ASMCMD-9352: CREATE DISKGROUP failed
ORA-15018: diskgroup cannot be created
ORA-15033: disk /dev/oracleasm/disks/VOL4 belongs to diskgroup "XIFENFEI" (DBD ERROR: OCIStmtExecute)
--如果一个磁盘组中某个asm disk 出了问题,这种方法不能生效,甚至需要先dd 处理掉所有该磁盘组中的asm disk

总结说明
md_backup和md_restore是磁盘组级别的备份和还原,如果一个磁盘组的某个asm disk出现问题,使用这对命令解决起来还是很麻烦,甚至根本不可行(因为代价太大:要删除该磁盘组其他asm disk header,然后要重新还原所有数据文件),这样的情景下dd或者kfed的备份还是非常有必要,ASM DISK HEADER 备份与恢复.如果是一个磁盘组都损坏,需要还原磁盘组,这个时候这个命令非常的完美(至少比起dd和kfed方便很多).md_backup/md_restore和dd与kfed是互补的命令,而不是md_backup/md_restore出现使得dd和kfed在asm元数据的备份恢复上就没有用武之地.

此条目发表在 Oracle ASM 分类目录,贴了 , 标签。将固定链接加入收藏夹。

asm备份元数据之md_backup和md_restore》有 3 条评论

  1. 惜分飞 说:

    data磁盘组生成sql语句信息

    [root@rac1 tmp]# more get_dg_sql
    create diskgroup DATA EXTERNAL redundancy  disk '/dev/oracleasm/disks/VOL2' name DATA_0001 size 1262M 
    disk '/dev/oracleasm/disks/VOL1' name DATA_0000 size 784M attribute '
    compatible.asm' = '11.2.0.0.0', 'compatible.rdbms' = '10.1.0.0.0';
    alter diskgroup /*ASMCMD AMBR*/DATA set attribute '_._DIRVERSION' = '11.2.0.0.0';
    alter diskgroup /*ASMCMD AMBR*/DATA alter template XTRANSPORT attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template ONLINELOG attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template DATAGUARDCONFIG attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template AUTOBACKUP attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template TEMPFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template OCRFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template ARCHIVELOG attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template DUMPSET attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template CONTROLFILE attributes (UNPROTECTED FINE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template BACKUPSET attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template ASMPARAMETERFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template FLASHBACK attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template PARAMETERFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template FLASHFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template DATAFILE attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR*/DATA alter template CHANGETRACKING attributes (UNPROTECTED COARSE);
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/rac-cluster';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/rac-cluster/ASMPARAMETERFILE';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ONLINELOG';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/rac-cluster/OCRFILE';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/CONTROLFILE';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG/2012_05_24';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG/2012_05_01';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG/2012_04_30';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG/2012_04_13';
    alter diskgroup /*ASMCMD AMBR */ DATA add directory '+DATA/XFF/ARCHIVELOG/2012_03_03';
    
  2. 惜分飞 说:

    md_backup生成data磁盘组备份元数据信息

    [root@rac1 tmp]# more xifenfei_data.md
    @diskgroup_set = (
    {
      'ATTRINFO' => {
                      '_._DIRVERSION' => '11.2.0.0.0',
                      'COMPATIBLE.ASM' => '11.2.0.0.0',
                      'COMPATIBLE.RDBMS' => '10.1.0.0.0'
                    },
      'DISKSINFO' => {
    'DATA_0001' => {
                     'DATA_0001' => {
                   'TOTAL_MB' => '1262',
                   'FAILGROUP' => 'DATA_0001',
                   'NAME' => 'DATA_0001',
                   'DGNAME' => 'DATA',
                   'PATH' => '/dev/oracleasm/disks/VOL2'
                 }
                   },
    'DATA_0000' => {
                     'DATA_0000' => {
                   'TOTAL_MB' => '784',
                   'FAILGROUP' => 'DATA_0000',
                   'NAME' => 'DATA_0000',
                   'DGNAME' => 'DATA',
                   'PATH' => '/dev/oracleasm/disks/VOL1'
                 }
                   }
                     },
      'DGINFO' => {
                    'DGTORESTORE' => 0,
                    'DGCOMPAT' => '11.2.0.0.0',
                    'DGNAME' => 'DATA',
                    'DGDBCOMPAT' => '10.1.0.0.0',
                    'DGTYPE' => 'EXTERN',
                    'DGAUSZ' => '1048576'
                  },
      'ALIASINFO' => {
    '6' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 1,
             'ALIASNAME' => 'XFF/CONTROLFILE',
             'REFERENCE_INDEX' => '16777481'
           },
    '11' => {
              'DGNAME' => 'DATA',
              'LEVEL' => 2,
              'ALIASNAME' => 'XFF/ARCHIVELOG/2012_03_03',
              'REFERENCE_INDEX' => '16777640'
            },
    '3' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 1,
             'ALIASNAME' => 'XFF/ARCHIVELOG',
             'REFERENCE_INDEX' => '16777587'
           },
    '7' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 2,
             'ALIASNAME' => 'XFF/ARCHIVELOG/2012_05_24',
             'REFERENCE_INDEX' => '16777852'
           },
    '9' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 2,
             'ALIASNAME' => 'XFF/ARCHIVELOG/2012_04_30',
             'REFERENCE_INDEX' => '16777746'
           },
    '2' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 1,
             'ALIASNAME' => 'rac-cluster/ASMPARAMETERFILE',
             'REFERENCE_INDEX' => '16777322'
           },
    '8' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 2,
             'ALIASNAME' => 'XFF/ARCHIVELOG/2012_05_01',
             'REFERENCE_INDEX' => '16777799'
           },
    '1' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 0,
             'ALIASNAME' => 'XFF',
             'REFERENCE_INDEX' => '16777428'
           },
    '4' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 1,
             'ALIASNAME' => 'XFF/ONLINELOG',
             'REFERENCE_INDEX' => '16777534'
           },
    '0' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 0,
             'ALIASNAME' => 'rac-cluster',
             'REFERENCE_INDEX' => '16777269'
           },
    '10' => {
              'DGNAME' => 'DATA',
              'LEVEL' => 2,
              'ALIASNAME' => 'XFF/ARCHIVELOG/2012_04_13',
              'REFERENCE_INDEX' => '16777693'
            },
    '5' => {
             'DGNAME' => 'DATA',
             'LEVEL' => 1,
             'ALIASNAME' => 'rac-cluster/OCRFILE',
             'REFERENCE_INDEX' => '16777375'
           }
                     },
      'TEMPLATEINFO' => {
       '6' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'XTRANSPORT',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '11' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'COARSE',
                 'TEMPNAME' => 'ONLINELOG',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '3' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'DATAGUARDCONFIG',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '7' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'AUTOBACKUP',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '9' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'TEMPFILE',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '12' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'COARSE',
                 'TEMPNAME' => 'ARCHIVELOG',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '2' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'OCRFILE',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '14' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'FINE',
                 'TEMPNAME' => 'CONTROLFILE',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '15' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'COARSE',
                 'TEMPNAME' => 'DUMPSET',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '8' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'BACKUPSET',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '4' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'FLASHBACK',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '1' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'ASMPARAMETERFILE',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '0' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'PARAMETERFILE',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              },
       '10' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'COARSE',
                 'TEMPNAME' => 'DATAFILE',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '13' => {
                 'DGNAME' => 'DATA',
                 'STRIPE' => 'COARSE',
                 'TEMPNAME' => 'FLASHFILE',
                 'REDUNDANCY' => 'UNPROT',
                 'SYSTEM' => 'Y'
               },
       '5' => {
                'DGNAME' => 'DATA',
                'STRIPE' => 'COARSE',
                'TEMPNAME' => 'CHANGETRACKING',
                'REDUNDANCY' => 'UNPROT',
                'SYSTEM' => 'Y'
              }
     }
    }
    );
    
  3. 惜分飞 说:

    md_backup和md_restore命令说明

    ASMCMD> help md_backup
            md_backup
    
            The md_backup command creates a backup file containing metadata 
            for one or more disk groups.
            Volume and Oracle Automatic Storage Management Cluster File System 
            (Oracle ACFS) file system information is not backed up.
    
            md_backup backup_file [-G diskgroup [,diskgroup,...]]
    
            The options for the md_backup command are described below.
    
            backup_file     - Specifies the backup file in which you want to 
                              store the metadata.
            -G diskgroup    - Specifies the disk group name of the disk group 
                              that must be backed up
    
            By default all the mounted disk groups are included in the backup file, 
            which is saved in the current working directory.
    
            The first example shows the use of the backup command when you run it
            without the disk group option. This example backs up all of the mounted
            disk groups and creates the backup image in the current working 
            directory. The second example creates a backup of disk group DATA and
            FRA. The backup that this example creates is saved in the
            /tmp/dgbackup20090716 file.
    
            ASMCMD [+] > md_backup /tmp/dgbackup20090716
            ASMCMD [+] > md_backup /tmp/dgbackup20090716 -G DATA,FRA
            Disk group metadata to be backed up: DATA
            Disk group metadata to be backed up: FRA
            Current alias directory path: ASM/ASMPARAMETERFILE
            Current alias directory path: ORCL/DATAFILE
            Current alias directory path: ORCL/TEMPFILE
            Current alias directory path: ORCL/CONTROLFILE
            Current alias directory path: ORCL/PARAMETERFILE
            Current alias directory path: ASM
            Current alias directory path: ORCL/ONLINELOG
            Current alias directory path: ORCL
            Current alias directory path: ORCL/CONTROLFILE
            Current alias directory path: ORCL/ARCHIVELOG/2009_07_13
            Current alias directory path: ORCL/BACKUPSET/2009_07_14
            Current alias directory path: ORCL/ARCHIVELOG/2009_07_14
            Current alias directory path: ORCL
            Current alias directory path: ORCL/DATAFILE
            Current alias directory path: ORCL/ARCHIVELOG
            Current alias directory path: ORCL/BACKUPSET
            Current alias directory path: ORCL/ONLINELOG
    
    ASMCMD> help md_restore
            md_restore
    
            This command restores a disk group metadata backup.
    
            md_restore backup_file [--silent][--full|--nodg|--newdg -o 'old_diskgroup:new_diskgroup 
               [,...]'][-S sql_script_file] [-G 'diskgroup [,diskgroup...]']
    
            The options for the md_restore command are described below.
    
            backup_file             - Reads the metadata information from 
                                      backup_file.
            --silent                - Ignore errors. Normally, if md_restore 
                                      encounters an error, it will stop. 
                                      Specifying this flag ignores any errors.
            --full                  - Specifies to create a disk group and restore 
                                      metadata.
            --nodg                  - Specifies to restore metadata only.
            --newdg -o old_diskgroup:new_diskgroup  - Specifies to create a disk 
                                      group with a different name when restoring 
                                      metadata. The -o option is required 
                                      with --newdg.
            -S sql_script_file      - Write SQL commands to the specified SQL 
                                      script file instead of executing the commands.
            -G diskgroup            - Select the disk groups to be restored. 
                                      If no disk groups are defined, then all 
                                      disk groups will be restored.
    
            The first example restores the disk group DATA from the backup script 
            and creates a copy. The second example takes an existing disk group 
            DATA and restores its metadata. The third example restores disk group 
            DATA completely but the new disk group that is created is called DATA2.
            The fourth example restores from the backup file after applying the
            overrides defined in the override.sql script file
    
            ASMCMD [+] > md_restore --full -G data --silent /tmp/dgbackup20090714
            ASMCMD [+] > md_restore --nodg -G data --silent /tmp/dgbackup20090714
            ASMCMD [+] > md_restore --newdg -o 'data:data2' --silent /tmp/dgbackup20090714
            ASMCMD [+] > md_restore -S override.sql --silent /tmp/dgbackup20090714