标签云
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-08103 ORA-600 2131 ORA-600 2662 ORA-600 2663 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,733)
- DB2 (22)
- MySQL (75)
- Oracle (1,584)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (160)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (580)
- Oracle安装升级 (94)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (82)
- PostgreSQL (27)
- pdu工具 (5)
- PostgreSQL恢复 (9)
- SQL Server (28)
- SQL Server恢复 (9)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (37)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (20)
-
最近发表
- pg单个数据库目录恢复-pdu恢复单个数据库目录数据
- pg删除数据恢复—pdu恢复pg delete数据
- .[OnlyBuy@cyberfear.com].REVRAC勒索mysql恢复
- 表dml操作权限授权给public,导致只读用户失效
- 21c数据库恢复遭遇ora-600 ktugct: corruption detected
- pg_control丢失/损坏处理
- 当前主流数据库版本服务支持周期-202503
- pg启动报invalid checkpoint record处理
- 删除redo导致ORA-00313 ORA-00312故障处理
- Navicat连接postgresql时出现column “datlastsysoid” does not exist错误解决
- aix磁盘损坏oracle数据库恢复
- pg误删除数据恢复(PostgreSQL delete数据恢复)
- PostgreSQL表文件损坏恢复—pdu恢复损坏的表文件
- linux rm -rf 删除数据文件恢复
- PostgreSQL恢复工具—pdu恢复单个表文件
- PostgreSQL恢复工具—pdu工具介绍
- 近1万个数据文件的恢复case
- 不当使用_allow_resetlogs_corruption参数引起ORA-600 2662错误
- CSSD signal 11 in thread clssnmRcfgMgrThread故障处理
- 使用sid方式直接访问pdb(USE_SID_AS_SERVICE_LISTENER)
分类目录归档: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元数据的备份恢复上就没有用武之地.
通过ftp/http拷贝asm中文件
1.检查Oracle XML Database组件
SQL> select comp_name, status, version from DBA_REGISTRY where comp_name='Oracle XML Database'; COMP_NAME STATUS VERSION ------------------------- ---------------------- ------------------------------ Oracle XML Database VALID 11.2.0.3.0 SQL> select count(*) from dba_objects where owner='XDB' and status='INVALID'; COUNT(*) ---------- 0
2.配置xdb的ftp和http
[oracle@rac1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue May 1 12:05:27 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 Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> execute dbms_xdb.sethttpport(8080); PL/SQL procedure successfully completed. SQL> execute dbms_xdb.setftpport(2100); PL/SQL procedure successfully completed. SQL> commit; Commit complete. SQL> select dbms_xdb.GETFTPPORT() from dual; DBMS_XDB.GETFTPPORT() --------------------- 2100 SQL> select dbms_xdb.GETHTTPPORT() from dual; DBMS_XDB.GETHTTPPORT() ---------------------- 8080 --根据你的需求,可以选择一个即可 SQL> show parameter dispatchers; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------- dispatchers string (PROTOCOL=TCP) (SERVICE=XFFXDB) --dispatchers参数会自动配置,这里需要说明,MOS中说的sidxdb是不恰当的,我这里是db_namexdb --因为我这里是rac,sid为XFF1,总之相信自动配置
3.查看监听
[oracle@rac1 ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 01-MAY-2012 12:09:14 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production Start Date 01-MAY-2012 11:51:13 Uptime 0 days 0 hr. 18 min. 1 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora Listener Log File /u01/app/gridbase/diag/tnslsnr/rac1/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.31)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.33)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1)(PORT=8080))(Presentation=HTTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1)(PORT=2100))(Presentation=FTP)(Session=RAW)) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM1", status READY, has 1 handler(s) for this service... Service "XFF" has 1 instance(s). Instance "XFF1", status READY, has 1 handler(s) for this service... Service "XFFXDB" has 1 instance(s). Instance "XFF1", status READY, has 1 handler(s) for this service... The command completed successfully --以下两条监听是自动增加上去,如果没有自动增加,需要手工增加并且重启或者重新加载监听 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1)(PORT=8080))(Presentation=HTTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1)(PORT=2100))(Presentation=FTP)(Session=RAW))
4.ftp基本操作
[oracle@rac1 ~]$ ftp -n ftp> open rac1 2100 Connected to rac1. 220- rac1 Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution. 220 rac1 FTP Server (Oracle XML DB/Oracle Database) ready. 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type ftp> user system xifenfei 331 pass required for SYSTEM 230 SYSTEM logged in ftp> ls 227 Entering Passive Mode (192,168,1,31,181,5) 150 ASCII Data Connection drw-r--r-- 2 SYS oracle 0 SEP 18 17:49 OLAP_XDS drw-r--r-- 2 SYS oracle 0 SEP 18 17:47 home drw-r--r-- 2 SYS oracle 0 SEP 18 18:02 images drw-r--r-- 2 SYS oracle 0 SEP 18 17:49 olap_data_security drw-r--r-- 2 SYS oracle 0 SEP 18 17:43 public drw-r--r-- 2 SYS oracle 0 SEP 18 17:44 sys -rw-r--r-- 1 SYS oracle 0 MAY 01 04:06 xdbconfig.xml drw-r--r-- 2 SYS oracle 0 SEP 18 17:49 xds 226 ASCII Transfer Complete ftp> cd sys 250 CWD Command successful ftp> cd asm 250 CWD Command successful ftp> ls 227 Entering Passive Mode (192,168,1,31,98,133) 150 ASCII Data Connection drw-r--r-- 2 SYS oracle 0 MAY 01 04:14 XIFENFEI drw-r--r-- 2 SYS oracle 0 MAY 01 04:14 DATA 226 ASCII Transfer Complete ftp> cd xifenfei 250 CWD Command successful ftp> ls 227 Entering Passive Mode (192,168,1,31,151,70) 150 ASCII Data Connection drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 XFF drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 ASM 226 ASCII Transfer Complete ftp> cd xff 250 CWD Command successful ftp> ls 227 Entering Passive Mode (192,168,1,31,100,14) 150 ASCII Data Connection drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 DATAFILE drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 CONTROLFILE drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 ONLINELOG drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 TEMPFILE drw-r--r-- 2 SYS oracle 0 MAY 01 04:15 PARAMETERFILE -rw-r--r-- 1 SYS oracle 3584 MAY 01 04:15 spfileXFF.ora 226 ASCII Transfer Complete ftp> cd xff/datafile 250 CWD Command successful ftp> ls 227 Entering Passive Mode (192,168,1,31,30,63) 150 ASCII Data Connection -rw-r--r-- 1 SYS oracle 744497152 MAY 01 04:20 SYSTEM.256.776961315 -rw-r--r-- 1 SYS oracle 618668032 MAY 01 04:20 SYSAUX.257.776961315 -rw-r--r-- 1 SYS oracle 83894272 MAY 01 04:20 UNDOTBS1.258.776961317 -rw-r--r-- 1 SYS oracle 6291456 MAY 01 04:20 user_dd.dbf -rw-r--r-- 1 SYS oracle 26222592 MAY 01 04:20 UNDOTBS2.264.776961693 -rw-r--r-- 1 SYS oracle 157294592 MAY 01 04:20 xifenfei01.dbf 226 ASCII Transfer Complete ftp> get xifenfei01.dbf local: xifenfei01.dbf remote: xifenfei01.dbf 227 Entering Passive Mode (192,168,1,31,143,34) 150 ASCII Data Connection 550- Error Response ORA-31198: Mismatch in number of bytes transferred due to non-binary mode 550 End Error Response 270340 bytes received in 0.053 seconds (5e+03 Kbytes/s) ftp> binary 200 Type set to I. ftp> get xifenfei01.dbf local: xifenfei01.dbf remote: xifenfei01.dbf 227 Entering Passive Mode (192,168,1,31,9,112) 150 BIN Data Connection 226 BIN Transfer Complete 157294592 bytes received in 14 seconds (1.1e+04 Kbytes/s) --主要需要设置为二进制传输模式,默认是ASCII方式的,可能会报错 ftp> quit 221 QUIT Goodbye.
这篇文章主要参考How to configure XDB for using ftp and http protocols with ASM [ID 357714.1],但是在自己试验过程中,发现文档中有些地方不太合适,这里做个补充说明:
1.ftp服务端不需要启动(这里只是用到了操作系统的ftp客户端功能,如果使用其他客户端工具,连操作系统客户端都省了)
2.dispatchers 中的SERVICE=
3.ftp和http两个功能,只需要配置一个即可(选择你需要的)
4.下图展示的是通过http方式访问结果(system用户登录)
发表在 Oracle ASM
一条评论