« Data Architecture - 韩国数据库同仁的探索 | Blog首页 | Eygle.com IE 9 与 Firefox 4.0 用户对比 »
ASM元数据备份与恢复:md_backup和md_restore
作者:eygle | 【转载请注出处】|【云和恩墨 领先的zData数据库一体机 | zCloud PaaS云管平台 | SQM SQL审核平台 | ZDBM 数据库备份一体机】
链接:https://www.eygle.com/archives/2011/03/asm_md_backup_md_restore.html
在Oracle Database 11gR2 中,asmcmd有了大量的改进和增强,即使11.2.0.2和11.2.0.1比较,也有很多不同。链接:https://www.eygle.com/archives/2011/03/asm_md_backup_md_restore.html
在ASM元数据的备份与恢复方面,Oracle增加了两个命令:md_backup 和 md_restore。
md 是 metadata的缩写,这一工具极大的简化了ASM的元数据维护。
在asmcmd中,通过help md_backup可以看到详细的命令提示:
ASMCMD> help md_backup现在backup_file是一个需要强制制定的参数,以下命令备份了ASM中所有的磁盘组元数据:
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 options. 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/dgbackup20090714 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> 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
也可以制定备份特定的磁盘组信息:
ASMCMD> md_backup /tmp/oradgbackup20110323 -G ORADG
Disk group metadata to be backed up: ORADG
备份以文本格式记录了磁盘组的参数信息:
[grid@enmou1 ~]$ more /tmp/oradgbackup20110323
@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'
},
'3' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'FINE',
'TEMPNAME' => 'CONTROLFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'7' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'DATAGUARDCONFIG',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'9' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'CHANGETRACKING',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'12' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'BACKUPSET',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'2' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'DUMPSET',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'14' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'DATAFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'15' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'ASMPARAMETERFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'8' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'FLASHBACK',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'4' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'FLASHFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'1' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'OCRFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'0' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'PARAMETERFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'10' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'XTRANSPORT',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'13' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'TEMPFILE',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
},
'5' => {
'DGNAME' => 'ORADG',
'STRIPE' => 'COARSE',
'TEMPNAME' => 'ARCHIVELOG',
'REDUNDANCY' => 'UNPROT',
'SYSTEM' => 'Y'
}
}
}
);
通过这些信息,就可以在磁盘组损坏时,快速恢复ASM的元数据。
恢复在磁盘组可用状态下不允许执行:
ASMCMD> md_restore --full -G oradg /tmp/oradgbackup20110323以下是在DROP了ORADG之后,执行恢复的全过程,恢复完成以后,磁盘组被创建,模板信息被还原:
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)
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!
通过-S参数可以仅生成恢复脚本,不执行恢复动作:
ASMCMD> md_restore -S create_oradg.sql /tmp/oradgbackup20110323以下是ORADG磁盘组恢复时执行的命令:
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.r
dbms' = '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);
ASMCMD的新增命令极多,以下是命令列表:
ASMCMD> help
asmcmd [-V] [-v <errors|warnings|normal|info|debug>] [--privilege <sysasm|sysdba>] [-p] [command]
asmcmd_no_conn_str
Starts asmcmd or executes the command
asmcmd [-V] [-v <errors|warnings|normal|info|debug>] [--privilege <sysasm|sysdba>] [-p] [command]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects, and ASMCMD establishes a
bequeath connection to it, in the same manner as a SQLPLUS / AS
SYSASM. The user must be a member of the OSASM group.
Specifying the -V option prints the asmcmd version number and
exits immediately.
Specifying the -v option prints extra information that can help
advanced users diagnose problems.
Specify the --privilege option to choose the type of connection. There are
only two possibilities: connecting as SYSASM or as SYSDBA.
The default value if this option is unspecified is SYSASM.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATA/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "help [command]" to get help on a specific ASMCMD command.';
commands:
--------
md_backup, md_restore
lsattr, setattr
cd, cp, du, find, help, ls, lsct, lsdg, lsof, mkalias
mkdir, pwd, rm, rmalias
chdg, chkdg, dropdg, iostat, lsdsk, lsod, mkdg, mount
offline, online, rebal, remap, umount
dsget, dsset, lsop, shutdown, spbackup, spcopy, spget
spmove, spset, startup
chtmpl, lstmpl, mktmpl, rmtmpl
chgrp, chmod, chown, groups, grpmod, lsgrp, lspwusr, lsusr
mkgrp, mkusr, orapwusr, passwd, rmgrp, rmusr
volcreate, voldelete, voldisable, volenable, volinfo
volresize, volset, volstat
历史上的今天...
>> 2012-03-22文章:
>> 2006-03-22文章:
>> 2005-03-22文章:
By eygle on 2011-03-22 18:00 | Comments (5) | Backup&Recovery | Oracle12c/11g | 2761 |
我的一个客户已经升级到了11.2, 可试一下.
原DG的metadata可以恢复,但是存放在DG中应用数据却全丢失了。对于ASM磁盘头损坏导致的数据不可访问,用md_backup和md_restore恢复DG的metadata之后,必须使用RMAN恢复数据库了。这一点比较让人失望。
原DG的metadata可以恢复,但是存放在DG中应用数据却全丢失了。对于ASM磁盘头损坏导致的数据不可访问,用md_backup和md_restore恢复DG的metadata之后,必须使用RMAN恢复数据库了。这一点比较让人失望。
除了Bug之外,Oracle的内部元数据不会损失,所以Oracle并不会提供内部元数据的备份机制。这个还是只能自己想办法了。
ASM metadata损坏,很多时候发生在第1个au,即磁盘头被写乱了,例如光纤交换机故障,SAN存储网络出现“抖动”的情况下,这类故障发生频率还是蛮高的。一下子就造成数据库不可访问,业务就中断了。