标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,767)
- DB2 (22)
- MySQL (77)
- Oracle (1,608)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (590)
- Oracle安装升级 (97)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
- 可能是 tempdb 空间用尽或某个系统表不一致故障处理
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
- [MY-013183] [InnoDB] Assertion failure故障处理
分类目录归档:Oracle ASM
How to Get the Contents of an Spfile on ASM when ASM/GRID is down
在11g中asm的spfile文件是存放在asm中的,如果asm不能正常启动是否可以获得其spfile信息.这里通过gpnptool来获得spfile文件信息,给大家提供了在11gr2的rac是怎么利用asm 中的spfile启动asm的思路
asm spfile信息
[grid@rac1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 21 01:41:31 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production With the Real Application Clusters and Automatic Storage Management options SQL> create pfile='/tmp/pfile' from spfile; File created. SQL> !more /tmp/pfile +ASM1.__oracle_base='/u01/app/gridbase'#ORACLE_BASE set from in memory value +ASM2.asm_diskgroups='XIFENFEI'#Manual Mount +ASM1.asm_diskgroups='XIFENFEI'#Manual Mount *.asm_diskstring='/dev/oracleasm/disks/*' *.asm_power_limit=1 *.diagnostic_dest='/u01/app/gridbase' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='EXCLUSIVE'
关闭集群(asm已关闭)
[root@rac1 ~]# crsctl stop crs [root@rac1 ~]# ps -ef|grep pmon root 8768 6372 0 02:53 pts/1 00:00:00 grep pmon [root@rac1 ~]# crsctl stat res CRS-4535: Cannot communicate with Cluster Ready Services CRS-4000: Command Status failed, or completed with errors.
gpnptool命令获取asm disk信息
[root@rac1 ~]# gpnptool get -o- <?xml version="1.0" encoding="UTF-8"?> <gpnp:GPnP-Profile Version="1.0" xmlns="http://www.grid-pnp.org/2005/11/gpnp-profile" xmlns:gpnp="http://www.grid-pnp.org/2005/11/gpnp-profile" xmlns:orcl="http://www.oracle.com/gpnp/2005/11/gpnp-profile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.grid-pnp.org/2005/11/gpnp-profile gpnp-profile.xsd" ProfileSequence="4" ClusterUId="885339054e904f1dbfa646b41d7a0edb" ClusterName="rac-cluster" PALocation=""> <gpnp:Network-Profile> <gpnp:HostNetwork id="gen" HostName="*"> <gpnp:Network id="net1" IP="192.168.1.0" Adapter="eth0" Use="public"/> <gpnp:Network id="net2" IP="10.10.1.0" Adapter="eth1" Use="cluster_interconnect"/> </gpnp:HostNetwork> </gpnp:Network-Profile> <orcl:CSS-Profile id="css" DiscoveryString="+asm" LeaseDuration="400"/> --重点关注信息(asm disk 信息) <orcl:ASM-Profile id="asm" DiscoveryString="/dev/oracleasm/disks/*" SPFile="+DATA/rac-cluster/asmparameterfile/registry.253.776955291"/> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI=""> <ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="gpnp orcl xsi"/> </ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>T2Q3r+5sER2Rp0VfeqzYh461f2s=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> LwcQEtlsPGfywzdYJrOqiTp4cZNFGB/S9Ts8OCvYOGf/Z8HDT2yN5p2nCuxArUfW+KzaPzPHHihpRVaTcAY31nJ2Rcf2vMqYp4e++shliQXC8mg 1oGxQGifkjZwA4pTTEK5MBmr4FTZnR3VArZjjVfJdsmOMfyH4YeSMU5HPjdA= </ds:SignatureValue> </ds:Signature> </gpnp:GPnP-Profile> Success. Error CLSGPNP_NO_DAEMON getting profile.
获得asm spfile信息
通过kfed找磁盘中的kfdhdb.sp|ausize来获得asm spfile相关信息
[root@rac1 ~]# ls /dev/oracleasm/disks/ VOL1 VOL2 VOL3 VOL4 [root@rac1 ~]# kfed dev=/dev/oracleasm/disks/VOL1 op=READ | egrep "kfdhdb.sp|ausize" kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 22 ; 0x0f4: 0x00000016 kfdhdb.spfflg: 1 ; 0x0f8: 0x00000001 [root@rac1 ~]# kfed dev=/dev/oracleasm/disks/VOL2 op=READ | egrep "kfdhdb.sp|ausize" kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 0 ; 0x0f4: 0x00000000 kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000 [root@rac1 ~]# kfed dev=/dev/oracleasm/disks/VOL3 op=READ | egrep "kfdhdb.sp|ausize" kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 0 ; 0x0f4: 0x00000000 kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000 [root@rac1 ~]# kfed dev=/dev/oracleasm/disks/VOL4 op=READ | egrep "kfdhdb.sp|ausize" kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 0 ; 0x0f4: 0x00000000 kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000
这里可以看出来asm spfile信息在磁盘VOL1中,spfile从第22个au开始,1个au(1M).
获得asm spfile 内容
[root@rac1 ~]# dd if=/dev/oracleasm/disks/VOL1 bs=1M skip=22 count=1 > /tmp/spfile 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 1.47474 seconds, 711 kB/s [root@rac1 ~]# strings /tmp/spfile +ASM1.__oracle_base='/u01/app/gridbase'#ORACLE_BASE set from in memory value +ASM2.asm_diskgroups='XIFENFEI'#Manual Mount +ASM1.asm_diskgroups='XIFENFEI'#Manual Mount *.asm_diskstring='/dev/oracleasm/disks/*' *.asm_power_limit=1 *.diagnostic_dest='/u01/app/gridbase' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='EXCLUSIVE'
通过对比发现,在asm实例未正常启动的情况下,也可以通过其他方面来获得asm spfile文件.本实验只是对于spfile在asm中位置的定位(大家去猜测11gr2的rac是怎么利用asm 中的spfile启动asm的思路),实际生产环境中请勿模仿,gpnptool命令有较大风险
发表在 Oracle ASM
评论关闭
使用asm disk header 自动备份信息恢复异常asm disk header
通过参考kamus的Where is the backup of ASM disk header block,发现从10.2.0.5开始的asm确实存在自动备份asm disk header功能.有了这个功能对于那些不备份asm disk header的同学,提供了一层保证,也增加了asm的安全性.
对于10.2.0.5.0以及以后版本,不管au size是多少,asm disk header自动备份存储的位置是第2个au的倒数第2个block.
计算方法:AU中包含的block num[AU_SIZE/block_size]*2-2[因为从第一个块从0计数],通过该方法计算结论为:
1M AU在510
2M AU在1022
4M AU在2046
8M AU在4094
16M AU在8190
32M AU在16382
64M AU在32766
1.对比备份asm disk header
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod PL/SQL Release 10.2.0.5.0 - Production CORE 10.2.0.5.0 Production TNS for Linux: Version 10.2.0.5.0 - Production NLSRTL Version 10.2.0.5.0 - Production SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "xifenfei.com" from dual; xifenfei.com ------------------- 2012-06-17 09:41:19 SQL> select group_number,DISK_NUMBER,PATH,HEADER_STATUS 2 from v$asm_disk where group_number<>0; GROUP_NUMBER DISK_NUMBER PATH HEADER_STATU ------------ ----------- --------------- ------------ 1 1 /dev/raw/raw2 MEMBER 1 0 /dev/raw/raw1 MEMBER SQL> select group_number,name,BLOCK_SIZE,ALLOCATION_UNIT_SIZE from v$asm_diskgroup; GROUP_NUMBER NAME BLOCK_SIZE ALLOCATION_UNIT_SIZE ------------ ------------------------------ ---------- -------------------- 1 DATA 4096 1048576 rac1-> kfed read /dev/raw/raw1 blknum=510|>/tmp/xifenfei.510 rac1-> kfed read /dev/raw/raw1 blknum=0|>/tmp/xifenfei.0 rac1-> ll /tmp/xifenfei* -rw-r--r-- 1 oracle oinstall 6606 Jun 14 04:11 /tmp/xifenfei.0 -rw-r--r-- 1 oracle oinstall 6606 Jun 14 04:12 /tmp/xifenfei.510 rac1-> diff /tmp/xifenfei.510 /tmp/xifenfei.0 --通过对比发现两者无不同记录返回,证明他们记录内容完全相同
2.尝试破坏asm disk header
rac1-> dd if=/dev/zero of=/dev/raw/raw1 bs=4096 count=1 1+0 records in 1+0 records out rac1-> kfed read /dev/raw/raw1 blknum=0 kfbh.endian: 0 ; 0x000: 0x00 kfbh.hard: 0 ; 0x001: 0x00 kfbh.type: 0 ; 0x002: KFBTYP_INVALID kfbh.datfmt: 0 ; 0x003: 0x00 kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0 kfbh.block.obj: 0 ; 0x008: TYPE=0x0 NUMB=0x0 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 SQL> select group_number,DISK_NUMBER,PATH,HEADER_STATUS 2 from v$asm_disk where group_number<>0; GROUP_NUMBER DISK_NUMBER PATH HEADER_STATU ------------ ----------- --------------- ------------ 1 1 /dev/raw/raw2 MEMBER 1 0 /dev/raw/raw1 CANDIDATE SQL> alter diskgroup data dismount; Diskgroup altered. SQL> alter diskgroup data mount; alter diskgroup data mount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA"
3.使用kfed repair修改损坏asm disk header
rac1-> kfed repair '/dev/raw/raw1' rac1-> kfed read /dev/raw/raw1 blknum=0 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0 kfbh.block.obj: 2147483648 ; 0x008: TYPE=0x8 NUMB=0x0 kfbh.check: 883602253 ; 0x00c: 0x34aab34d kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 ………… SQL> alter diskgroup data mount; Diskgroup altered.
4.使用kfed merge恢复asm disk header
rac1-> dd if=/dev/zero of=/dev/raw/raw1 bs=4096 count=1 1+0 records in 1+0 records out rac1-> kfed read /dev/raw/raw1 blknum=0 kfbh.endian: 0 ; 0x000: 0x00 kfbh.hard: 0 ; 0x001: 0x00 kfbh.type: 0 ; 0x002: KFBTYP_INVALID kfbh.datfmt: 0 ; 0x003: 0x00 kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0 kfbh.block.obj: 0 ; 0x008: TYPE=0x0 NUMB=0x0 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 SQL> alter diskgroup data dismount; Diskgroup altered. SQL> alter diskgroup data mount; alter diskgroup data mount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA" rac1-> kfed merge /dev/raw/raw1 /tmp/xifenfei.510 SQL> alter diskgroup data mount; Diskgroup altered.
通过试验证明在10.2.0.5及其以后版本中,对于备份的asm disk header我们可以通过使用kfed repair和kfed merge来恢复.
发表在 Oracle ASM
2 条评论
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元数据的备份恢复上就没有用武之地.