kfed amdu使用方法小节

工作RAC 环境很多,为了应付未来可能发生的状况,根据网上的文章,研究一下了 kfed 以及 amdu 磁盘组恢复工具。

kfed

kfed=kernel file metadata editor 。当 asm 磁盘组无法正常 mount 的时候可以使用该工具来分析 ASM 磁盘组的状态,并且可以此工具进行修复磁盘头的任务。
磁盘头信息一般 au0 blkn0 上
11.1.0.7以后磁盘头的信息会自动备份在au1 blkn 254上
可以使用kfed查看
kfed read /dev/raw/raw1 aun=0 blkn=0 
kfed read /dev/raw/raw1 aun=1 blkn=254
kfed repire 11.1.0.7以后可以使用下面的命令使用自动备份的信息快速修复受损的磁盘头。 
kfed repair /dev/raw/raw1
上面的命令会自动把aun=1 blkn=254的block 写到aun=0 blkn=0 上面
11.1.0.7以前需要手动备份磁盘头
备份
kfed read  /dev/oracleasm/disks/CRSVOL      aunum=0 blknum=0 text=raw1.txt
恢复
kfed write /dev/oracleasm/disks/CRSVO       aunum=0 blknum=0 text=raw1.txt






amdu

网上的文章总是少一些关键信息,所以这里将详细的实验步骤记录如下。
当磁盘头全部损坏,无法打开集群的时候,可以使用amdu来抽取磁盘组中的信息,比如说存储在磁盘组上面的数据文件、redolog、控制文件等。
下面的例子是抽取存储于asm diskgroup 中的数据库相关文件,在异机恢复的例子:
先查看alert日志确定controlfile的位置
  control_files            = "+DATA1/startrek/controlfile/current.260.921401239"
amdu -diskstring '/dev/raw/*' -extract DATA1.260
当前目录下会生成以当前时间命名的目录
-bash-4.1$ ls
DATA1_260.f  report.txt
会找到生成的控制文件。
-bash-4.1$ strings DATA1_260.f | grep DATA1 |sort | uniq
+DATA1/startrek/datafile/sysaux.257.921401115
+DATA1/startrek/datafile/system.256.921401115
+DATA1/startrek/datafile/undotbs1.258.921401115
+DATA1/startrek/datafile/undotbs2.264.921401389
+DATA1/startrek/datafile/users.259.921401115
+DATA1/startrek/onlinelog/group_1.261.921401241
+DATA1/startrek/onlinelog/group_2.262.921401243
+DATA1/startrek/onlinelog/group_3.265.921401757
+DATA1/startrek/onlinelog/group_4.266.921401759
+DATA1/startrek/tempfile/temp.263.921401257
即可找到数据库相关的文件在磁盘组中的位置。然后可以使用amdu extract 的功能将磁盘组中的相关文件转储到本地硬盘中。
-bash-4.1$ strings DATA1_260.f | grep DATA1 |sort | uniq | awk -F"." '{print "amdu -diskstring '/dev/raw/*' -extract DATA1." $2}' 
amdu -diskstring /dev/raw/* -extract DATA1.257
amdu -diskstring /dev/raw/* -extract DATA1.256
amdu -diskstring /dev/raw/* -extract DATA1.258
amdu -diskstring /dev/raw/* -extract DATA1.264
amdu -diskstring /dev/raw/* -extract DATA1.259
amdu -diskstring /dev/raw/* -extract DATA1.261
amdu -diskstring /dev/raw/* -extract DATA1.262
amdu -diskstring /dev/raw/* -extract DATA1.265
amdu -diskstring /dev/raw/* -extract DATA1.266
amdu -diskstring /dev/raw/* -extract DATA1.263
要注意前面磁盘组的名称,对应,这里磁盘组DATA1写死了,如果有多个磁盘组,需要自行判断。
使用grid用户执行上述命令,oracle会无法发现磁盘组
-bash-4.1$ ls
amdu_2016_09_01_10_19_21  amdu_2016_09_01_10_21_28  amdu_2016_09_01_10_21_50  amdu_2016_09_01_10_22_16
amdu_2016_09_01_10_20_25  amdu_2016_09_01_10_21_35  amdu_2016_09_01_10_21_58  oradiag_grid
amdu_2016_09_01_10_21_14  amdu_2016_09_01_10_21_41  amdu_2016_09_01_10_22_07
执行完命令后会将相应的参数文件抽取到当前时间命名的目录下
集中到一个目录下
-bash-4.1$ find ./ -name *.f
./amdu_2016_09_01_10_22_16/DATA1_263.f
./amdu_2016_09_01_10_21_50/DATA1_262.f
./oradata/amdu_2016_09_01_10_35_49/DATA1_257.f
./amdu_2016_09_01_10_21_28/DATA1_264.f
./amdu_2016_09_01_10_21_58/DATA1_265.f
./amdu_2016_09_01_10_20_25/DATA1_256.f
./amdu_2016_09_01_10_21_41/DATA1_261.f
./amdu_2016_09_01_10_22_07/DATA1_266.f
./amdu_2016_09_01_10_19_21/DATA1_257.f
./amdu_2016_09_01_10_21_14/DATA1_258.f
./amdu_2016_09_01_10_21_35/DATA1_259.f
-bash-4.1$ mv `find ./ -name *.f` ./oradata
-bash-4.1$ ls ./oradata
DATA1_256.f  DATA1_258.f  DATA1_261.f  DATA1_263.f  DATA1_265.f
DATA1_257.f  DATA1_259.f  DATA1_262.f  DATA1_264.f  DATA1_266.f
把控制文件也转移过来
-bash-4.1$ mv /u01/app/11.2.0/grid/gpnp/dsdb11g1/profiles/peer/amdu_2016_09_01_09_44_15/DATA1_260.f ./oradata/
DATA1_260.f
为控制文件,修改一下$ORACLE_HOME/dbs/目录下的init.ora文件
db_name='STARTREK'
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = '/u01/app/oracle/oradata/startrek/DATA1_260.f'
compatible ='11.2.0.4.0'
为了不破坏生产环境,一般把这些相关文件copy到异机执行相关恢复操作。
startup mount pfile='/u01/app/oracle/oradata/startrek/init.ora'
select name from v$datafile ;
因为原来存放在磁盘组,现在为本地硬盘,所以需要使用alter database rename 操作。
相关sql语句(不完善):
select 'alter database rename file '''||member||''' to '''||replace(member,'+DATA1/startrek/datafile','/u01/app/oracle/oradata/startrek')||''' ;' from v$logfile;
alter database rename file '+DATA1/startrek/datafile/system.256.921401115' to '/u01/app/oracle/oradata/startrek/DATA1_256.f' ;
alter database rename file '+DATA1/startrek/datafile/sysaux.257.921401115' to '/u01/app/oracle/oradata/startrek/DATA1_257.f' ;
alter database rename file '+DATA1/startrek/datafile/undotbs1.258.921401115' to '/u01/app/oracle/oradata/startrek/DATA1_258.f' ;
alter database rename file '+DATA1/startrek/datafile/users.259.921401115' to '/u01/app/oracle/oradata/startrek/DATA1_259.f' ;
alter database rename file '+DATA1/startrek/datafile/undotbs2.264.921401389' to '/u01/app/oracle/oradata/startrek/DATA1_264.f' ;
select member from v$logfile ;
alter database rename file '+DATA1/startrek/onlinelog/group_2.262.921401243' to '/u01/app/oracle/oradata/startrek/DATA1_262.f' ;
alter database rename file '+DATA1/startrek/onlinelog/group_1.261.921401241' to '/u01/app/oracle/oradata/startrek/DATA1_261.f' ;
alter database rename file '+DATA1/startrek/onlinelog/group_3.265.921401757' to '/u01/app/oracle/oradata/startrek/DATA1_265.f' ;
alter database rename file '+DATA1/startrek/onlinelog/group_4.266.921401759' to '/u01/app/oracle/oradata/startrek/DATA1_266.f' ;
然后open 即可完成 异机恢复。
SQL> alter database open ;
Database altered.
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/startrek/DATA1_263.f' reuse ;
Tablespace altered.
SQL> alter tablespace temp drop tempfile '+DATA1/startrek/tempfile/temp.263.921401257' ;
Tablespace altered.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值