oracle rac在加錯asm盤時,變成了檔案系統處理

datapeng發表於2014-01-03

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章