环境相关:
OS:CentOS release 6.6
RAC:11.2.0.4.0 双节点ASM库
- 故障发生原因
今天批量添加四个数据文件,第2到第4个数据文件添加SQL中 add datafile ‘+DATADG’ 漏掉了 ‘+’,发现oracle成功添加了第一个数据文件后,将第二个数据文件添加成了 “$ORACLE_HOME/dbs/DATADG”,然后第三、第四个数据文件添加失败(原因是DATADG文件已经存在)。
- 问题修复
好吧,补救操作如下:
sqlplus / as sysdba
col tablespace_name for a20
col file_name for a80
set linesize 150
set pagesize 1000
select f.tablespace_name,
f.file_name,
f.bytes / 1024 / 1024 / 1024 as cgb,
f.maxbytes / 1024 / 1024 / 1024 as mgb
from dba_data_files f
order by 1,regexp_substr(file_name, '[^/]+', 1, length(regexp_replace(file_name, '[^/]+')));
-- 查看数据文件相关信息
找到数据文件有问题的表空间,查看并记录相关文件路径和文件名信息
select FILE_NAME,FILE_ID,TABLESPACE_NAME,STATUS,ONLINE_STATUS
from dba_data_files where TABLESPACE_NAME='TS_GATEWAY_DATA';
-- 查询出的FILE_NAME需要记录下来,下方比较时需要用到
下线该数据文件
alter database datafile '/u01/app/oracle/product/11.2.0/db_1/dbs/DATADG' offline;
exit
使用rman将本地的数据文件复制到ASM中
rman target /
copy datafile '/u01/app/oracle/product/11.2.0/db_1/dbs/DATADG' to '+DATADG';
exit;
查看ASM中该表空间的数据文件,对比刚才记录的数据文件名,找到rman的copy生成的数据文件名
su - grid
asmcmd
ls DATADG/newecpss/datafile/TS_GATEWAY_DATA*
exit
# 根据第二个SQL查询出的FILE_NAME信息,对比ls出的数据文件,找到新增的ASM数据文件名
根据对比出来的ASM中的数据文件名,做rename
sqlplus / as sysdba
alter database rename file '/u01/app/oracle/product/11.2.0/db_1/dbs/DATADG'
to '+DATADG/newecpss/datafile/TS_GATEWAY_DATA.364.964346781';
尝试online数据文件
alter database datafile '+DATADG/newecpss/datafile/TS_GATEWAY_DATA.364.964346781' online;
-- 报错:
-- ORA-01113: file 82 needs media recovery
-- ORA-01110: data file 82: '+DATADG/newecpss/datafile/ts_gateway_data.364.964346781'
exit
使用rman命令进行media recovery
rman target /
recover datafile 82;
exit;
再次上线数据文件
sqlplus / as sysdba
alter database datafile '+DATADG/newecpss/datafile/TS_GATEWAY_DATA.364.964346781' online;
exit;
清理掉尾巴
mv -v /u01/app/oracle/product/11.2.0/db_1/dbs/DATADG /tmp/
[TOC]