ASM磁盘组中的控制文件丢失处理

本文记录了一次因RECO磁盘组故障导致Oracle数据库控制文件丢失后的恢复过程。详细介绍了使用ASMCMD尝试复制控制文件遇到的问题及解决方案,并最终通过修改控制文件名称和参数设置完成恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于+RECO磁盘组故障,导致指向该磁盘组的DB_RECOVERY_FILE_DEST下的文件都丢失。因为数据库文件使用OMF,对数据库影响较大的是一份控制文件和一半日志成员丢失,而控制文件缺失会造成数据库无法正常启动,报错如下:

ORA-00205: error in identifying control file, check alert log for more info

OMF管理的控制文件中有一份是保存的+DATA磁盘组上,于是使用这份完整的控制文件来恢复+RECO磁盘组中的控制文件:
1)使用控制文件原来的的文件名称来恢复控制文件,结果失败:

ASMCMD> cp +DATA/ORCL/CONTROLFILE/current.272.1093648975  +RECO/ORCL/CONTROLFILE/current.256.1093648975
copying +DATA/ORCL/CONTROLFILE/current.272.1093648975 -> +RECO/ORCL/CONTROLFILE/current.256.1093648975
ASMCMD-8016: copy source '+DATA/ORCL/CONTROLFILE/current.272.1093648975' and target '+RECO/ORCL/CONTROLFILE/current.256.1093648975' failed
ORA-15056: additional error message
ORA-15046: ASM file name '+RECO/ORCL/CONTROLFILE/current.256.1093648975' is not in single-file creation form
ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 617
ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)

2)不指定新控制文件文件的名称,直接拷贝完好的控制文件,即使用+DATA磁盘组上的控制文件名称,结果也失败:

ASMCMD> cp +DATA/ORCL/CONTROLFILE/current.272.1093648975  +RECO/ORCL/CONTROLFILE/
copying +DATA/ORCL/CONTROLFILE/current.272.1093648975 -> +RECO/ORCL/CONTROLFILE/current.272.1093648975
ASMCMD-8016: copy source '+DATA/ORCL/CONTROLFILE/current.272.1093648975' and target '+RECO/ORCL/CONTROLFILE/current.272.1093648975' failed
ORA-15056: additional error message
ORA-15046: ASM file name '+RECO/ORCL/CONTROLFILE/current.272.1093648975' is not in single-file creation form
ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 617
ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)

3)使用不带数字后缀的名称来命名新控制文件,命令成功。但是新控制文件实际上是保存在了+RECO/ASM/CONTROLFILE/位置,只在+RECO/ORCL/CONTROLFILE/上创建了一个别名:

ASMCMD> cp +DATA/ORCL/CONTROLFILE/current.272.1093648975  +RECO/ORCL/CONTROLFILE/current
copying +DATA/ORCL/CONTROLFILE/current.272.1093648975 -> +RECO/ORCL/CONTROLFILE/current

ASMCMD> ls -l
Type         Redund  Striped  Time             Sys  Name
CONTROLFILE  UNPROT  FINE     AUG 27 00:00:00  N    current => +RECO/ASM/CONTROLFILE/current.256.1113785871

因此,在ASM中创建新文件时是不能指定由ORACLE自动生成的数字后缀,也就无法直接恢复原有的文件,只能通过更改文件名称的方式来进行恢复。

最后,更改初始化参数control_files,让丢失的控制文件指向恢复的新名称的控制文件。

#创建pfile
startup nomount
create pfile='/u01/app/oracle/product/19.0.0/dbhome/dbs/pfileorcl.ora' from spfile;


#编辑pfile,去掉名称后面的数字后缀
*.control_files='+DATA/ORCL/CONTROLFILE/current.272.1093648975','+RECO/ORCL/CONTROLFILE/current'


#关闭数据库
shutdown immediate

#使用更改的pfile启动数据库到挂载模式
startup pfile='/u01/app/oracle/product/19.0.0/dbhome/dbs/pfileorcl.ora' mount;

ORACLE instance started.

Total System Global Area 8657039528 bytes
Fixed Size                 12443816 bytes
Variable Size            2852126720 bytes
Database Buffers         5771362304 bytes
Redo Buffers               21106688 bytes
Database mounted.
SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +DATA/ORCL/CONTROLFILE/current
                                                 .272.1093648975, +RECO/ORCL/CO
                                                 NTROLFILE/current

#重新创建spfile
create spfile='+DATA/ORCL/PARAMETERFILE/spfile' from pfile='/u01/app/oracle/product/19.0.0/dbhome/dbs/pfileorcl.ora';


#关闭数据库,重新启动,再次确认控制文件的位置 
shutdown immediate
startup mount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值