amdu从asm抽取数据文件的例子

在asm不能mount的情况下,怎样获得数据文件的文件名呢?该方法不能保证完全恢复数据库
1.从alert.log中过滤控制文件,首先将控制文件抽取出来
[oracle@lxtrac06 trace]$ cat alert_srw2.log |grep -i controlfile
control_files = "+DATA/srw/controlfile/current.296.935313043"
2.amdu抽取控制文件
(diskstring 可以在grid日志中找
[grid@lxtrac06 trace]$ cat alert_+ASM2.log |grep -i diskstring
asm_diskstring = "/dev/asm*")
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.325"
amdu_2017_02_20_22_22_05/
[grid@lxtrac06 ~]$
3.在抽取的控制文件中,找到数据文件的信息。
[grid@lxtrac06 amdu_2017_02_20_22_22_05]$ strings DATA_325.f |grep +DATA
+DATA/srw/datafile/system.364.935337561
+DATA/srw/datafile/sysaux.359.935337577
……
4.执行抽取
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.364"
amdu_2017_02_20_22_30_16/
[grid@lxtrac06 amdu_2017_02_20_22_30_16]$ ls -lhtr
total 26M
-rw-r--r-- 1 grid oinstall 3.6K Feb 20 22:30 report.txt
-rw-r--r-- 1 grid oinstall 26M Feb 20 22:30 DATA_364.f
[grid@lxtrac06 amdu_2017_02_20_22_30_16]$
5.用之前的控制文件启动到mount阶段,然后重命名数据文件。某写日志文件也需要弄出来
sql> alter database rename file '+DATA/srw/datafile/system.364.935337561' to '/u01/oradata/DATA_364.f'
………………

6.尝试打开数据库。

适用场景:
ocr盘损坏,ASM磁盘组受损

参考资料:How to Restore the Database Using AMDU after Diskgroup Corruption (文档 ID 1597581.1)

实验使用amdu恢复一个测试库:

os:redhat 5.5

db:11.2.0.4

将集群关闭掉:
[root@lxtrac06 bin]# ./crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.crsd' on 'lxtrac06'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.oc4j' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.lxtrac06.vip' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.cvu' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.erwadba.db' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.srw.db' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'lxtrac06'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'lxtrac06'
CRS-2677: Stop of 'ora.cvu' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.registry.acfs' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.lxtrac06.vip' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.lxtrac05.vip' on 'lxtrac06'
CRS-2677: Stop of 'ora.scan1.vip' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.lxtrac05.vip' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.oc4j' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.srw.db' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.erwadba.db' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'lxtrac06'
CRS-2677: Stop of 'ora.DATA.dg' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'lxtrac06'
CRS-2677: Stop of 'ora.asm' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'lxtrac06'
CRS-2677: Stop of 'ora.ons' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'lxtrac06'
CRS-2677: Stop of 'ora.net1.network' on 'lxtrac06' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'lxtrac06' has completed
CRS-2677: Stop of 'ora.crsd' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.evmd' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.asm' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'lxtrac06'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'lxtrac06'
CRS-2677: Stop of 'ora.evmd' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.asm' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'lxtrac06'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'lxtrac06' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'lxtrac06'
CRS-2677: Stop of 'ora.cssd' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.crf' on 'lxtrac06'
CRS-2677: Stop of 'ora.crf' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'lxtrac06'
CRS-2677: Stop of 'ora.gipcd' on 'lxtrac06' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'lxtrac06'
CRS-2677: Stop of 'ora.gpnpd' on 'lxtrac06' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'lxtrac06' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[root@lxtrac06 bin]#
[oracle@lxtrac06 trace]$ cat alert_erwadba.log |grep -i control
control_files = "+DATA/erwadba/controlfile/current.1156.963652931"
[oracle@lxtrac06 trace]$
[grid@lxtrac06 trace]$ tail -1000 alert_+ASM2.log |grep -i string
asm_diskstring = "/dev/asm*"
asm_diskstring = "/dev/asm*"
asm_diskstring = "/dev/asm*"
[grid@lxtrac06 trace]$
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1156" -output control01.ctl
amdu_2017_12_25_10_53_36/
[grid@lxtrac06 ~]$ strings control01.ctl| grep -i +|sort|uniq
+DATA/erwadba/datafile/sysaux.1153.963652859
+DATA/erwadba/datafile/system.1152.963652859
+DATA/erwadba/datafile/undotbs1.1154.963652859
+DATA/erwadba/datafile/users.1155.963652859
+DATA/erwadba/onlinelog/group_1.1158.963652933
+DATA/erwadba/onlinelog/group_2.837.963652933
+DATA/erwadba/onlinelog/group_3.836.963652933
+DATA/erwadba/tempfile/temp.835.963652937
[grid@lxtrac06 ~]$
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1153" -output sysaux.dbf
amdu_2017_12_25_11_12_21/
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1152" -output system.dbf
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1154" -output undotbs1.dbf
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1155" -output users.dbf
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.1158" -output redo1.log
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.837" -output redo2.log
[grid@lxtrac06 ~]$ amdu -diskstring '/dev/asm*' -extract "data.836" -output redo3.log
[grid@lxtrac06 ~]$ ls
amdu_2017_12_25_11_04_13 amdu_2017_12_25_11_14_19 amdu_2017_12_25_11_14_59 redo1.log sysaux.dbf users.dbf
amdu_2017_12_25_11_12_21 amdu_2017_12_25_11_14_41 amdu_2017_12_25_11_15_07 redo2.log system.dbf
amdu_2017_12_25_11_14_04 amdu_2017_12_25_11_14_51 control01.ctl redo3.log undotbs1.dbf
[grid@lxtrac06 ~]$
修改权限
[oracle@lxtrac06 ~]$ mkdir /u01/app/oracle/erwadba
[oracle@lxtrac06 ~]$
[root@lxtrac06 grid]# mv * /u01/app/oracle/erwadba
[root@lxtrac06 grid]#chown oracle:oinstall
在alert.log中找相关的参数,写一个pfile文件
[oracle@lxtrac06 erwadba]$ cat initerwa.ora
*.processes=1000
*.sga_target=1G
*.control_files="/u01/app/oracle/erwadba/control01.ctl"
*.db_block_size=8192
*.compatible= "11.2.0.4.0"
*.undo_tablespace= "UNDOTBS1"
*.db_name="erwadba"
*.pga_aggregate_target = 400M
[oracle@lxtrac06 erwadba]$
启动crs,不启动数据库
[root@lxtrac06 bin]# ps -ef|grep pmon
grid 28664 1 0 12:14 ? 00:00:00 asm_pmon_+ASM2
root 30682 19673 0 12:17 pts/5 00:00:00 grep pmon
[root@lxtrac06 bin]#
启动数据库到mount
[oracle@lxtrac06 erwadba]$ export ORACLE_SID=erwadba
[oracle@lxtrac06 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Dec 25 12:20:16 2017

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup mount pfile='/u01/app/oracle/erwadba/initerwa.ora';
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 285213576 bytes
Database Buffers 775946240 bytes
Redo Buffers 5517312 bytes
Database mounted.
SQL>
修改控制文件中的数据文件路径
SQL> select file#,name from v$datafile;

FILE# NAME
---------- --------------------------------------------------
1 +DATA/erwadba/datafile/system.1152.963652859
2 +DATA/erwadba/datafile/sysaux.1153.963652859
3 +DATA/erwadba/datafile/undotbs1.1154.963652859
4 +DATA/erwadba/datafile/users.1155.963652859
SQL> alter database rename file '+DATA/erwadba/datafile/system.1152.963652859' to '/u01/app/oracle/erwadba/system.dbf';
Database altered.
SQL> alter database rename file '+DATA/erwadba/datafile/sysaux.1153.963652859' to '/u01/app/oracle/erwadba/sysaux.dbf';
Database altered.
SQL> alter database rename file '+DATA/erwadba/datafile/undotbs1.1154.963652859' to '/u01/app/oracle/erwadba/undotbs1.dbf';
Database altered.
SQL> alter database rename file '+DATA/erwadba/datafile/users.1155.963652859' to '/u01/app/oracle/erwadba/users.dbf';
Database altered.
SQL> alter database rename file '+DATA/erwadba/onlinelog/group_1.1158.963652933' to '/u01/app/oracle/erwadba/redo1.log';
Database altered.
SQL> alter database rename file '+DATA/erwadba/onlinelog/group_2.837.963652933' to '/u01/app/oracle/erwadba/redo2.log';
Database altered.
SQL> alter database rename file '+DATA/erwadba/onlinelog/group_3.836.963652933' to '/u01/app/oracle/erwadba/redo3.log';
Database altered.
SQL>
打开数据库
SQL> alter database open;
Database altered.
SQL>
重建临时文件
SQL> alter tablespace temp add tempfile '/u01/app/oracle/erwadba/tmp01.dbf' size 10M autoextend on;
Tablespace altered.
SQL>
SQL> select name from v$datafile;
NAME
--------------------------------------------------
/u01/app/oracle/erwadba/system.dbf
/u01/app/oracle/erwadba/sysaux.dbf
/u01/app/oracle/erwadba/undotbs1.dbf
/u01/app/oracle/erwadba/users.dbf
SQL>
到此数据库正常打开。后面还需要创建spfile,添加监听等就不记录了。

原文地址:https://www.cnblogs.com/erwadba/p/8108937.html