ITPub博客

oracle rac在加错asm盘时,变成了文件系统处理

原创 Oracle 作者:datapeng 时间:2014-01-03 11:45:16 0 删除 编辑

1、故障描述
    在双节点,使用asm盘,一般情况下,我们在添加asm盘的时候,我们通常采用的方法是:

SQL> ALTER TABLESPACE TESTDATA ADD DATAFILE '+DATADG01' size 10240M;

但是,有一天,一个客户的管理员在进行添加磁盘的时候,漏掉了重要符号加号“+”,直接导致另一个节点的报错,无法访问文件!

他的添加方法是这样的:

SQL> ALTER TABLESPACE TESTDATA ADD DATAFILE 'DATADG01' size 10240M;

这样,导致数据库的一个节点报这样的错误:

/u01/app/oracle/product/11.2.0.3/dbs/DATADG01无法找到,连接到该节点的会话不断报相关的错误。

ERROR at line 1:
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 7: '/u01/app/oracle/product/11.2.0.3/dbs/DATADG01'

2、问题分析

    我们收到这种情况后,到了客户现场,对问题进行了分析:

SQL> select file_name from dba_data_files where TABLESPACE_NAME = 'USERS';

FILE_NAME
--------------------------------------------------------------------------------
+DATADG01/mytest/datafile/users.268.764071447
/u01/app/oracle/product/11.2.0.3/dbs/DATADG01
+DATADG01/mytest/datafile/users.2372.789133165

可以看到,在第一个节点,看到了有一个文件系统,所以另一个节点无法访问,导致故障发生

3、解决问题

   问题的解决,肯定会引起业务的中断,也就是在访问的过程中会报错,但这种情况,随着问题的解决,会马上恢复

3.1采用rman的方法,把文件系统进行迁移

RMAN > backup as copy datafile '/u01/app/oracle/product/11.2.0.3/dbs/DATADG01' format '+DATADG01';

tarting backup at 2013-03-20 13:18:00
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 instance=mytest device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=/u01/app/oracle/product/11.2.0.3/dbs/DATADG01
output file name=+DATADG01/mytest/datafile/users.2374.789139083 tag=TAG20120720T131802 RECID=4 STAMP=789139124
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45
Finished backup at 2013-03-20 13:18:47

备份的时候,把该文件形成了asm格式,并且通过备份,已经生成了一个asm的文件格式,这方便了我们的迁移

3.1对文件进行离线重命名

[mytest1:oracle]sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on Fri Jul 20 13:23:09 2012

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

--离线操作
SQL> alter database datafile '/u01/app/oracle/product/11.2.0.3/dbs/DATADG01' offline;

Database altered.

--重命名
SQL> alter database rename file '/u01/app/oracle/product/11.2.0.3/dbs/DATADG01' to '+DATADG01/mytest/datafile/users.2374.789139083' ;

Database altered.

把这个直接重命名为刚才备份输出的asm文件名,就可以了!注意,这一步操作是在sqlplus命令行中进行的,我们在这一步折腾了下,在rman命令行下操作,老报错,还以为自己搞错了!遇事不要慌很重要,慌也解决不了问题。

3.3恢复数据库文件

--进行恢复

SQL> recover datafile '+DATADG01/mytest/datafile/users.2374.789139083' ;

Media recovery complete.

--将文件online
SQL> alter database datafile '+DATADG01/mytest/datafile/users.2374.789139083' online;

Database altered.

3.4进行验证

SQL> select file_name from dba_data_files where TABLESPACE_NAME = 'USERS';

FILE_NAME
--------------------------------------------------------------------------------
+DATADG01/mytest/datafile/users.268.764071447
+DATADG01/mytest/datafile/users.2374.789139083
+DATADG01/mytest/datafile/users.2372.789133165

可以看到,已经成功了,问题到此解决,前台应用已经不再报错!

4、综述

    加asm文件时,一定要小心加号。如果实在遇到了,那也没办法,在离线期间,可能会使两个节点的业务都受到影响,这没有办法,对业务必须有影响。但此种方法比较理想


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-1066750/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-06

  • 博文量
    217
  • 访问量
    2470287