【RAC】RAC本地資料檔案遷移至ASM的方法(3)

xysoul_雲龍發表於2015-06-12
一、         概述 

   目前在各個行業業務中存在大量的Oracle RAC環境,尤其對於中小型企業及一些管理不規範的環境中,對資料庫的操作也就顯得雜亂無章了,它不是核心系統,但有問題也夠運維人員喝一壺的。下面說一個常見的問題,就是在RAC環境中,往往會遇到本地資料檔案,也就是隻能在一個節點訪問,出現這樣的狀況,主要有兩個原因,命名不規範,造成Oracle自動建立到DBS目錄下,再個對RAC系統不瞭解,按照之前方式建立。那麼在出現這個問題時怎麼解決呢,下面我們簡單學習一下。

二、操作過程
    
本次操作物件為非系統表空間,環境rhel6.3_x64+Oracle RAC11g
1
RAC為非歸檔模式,裸裝置遷移到ASM。不停庫,透過RMANcopy命令,操作。
   
首先模擬環境,節點2操作:

SQL> alter tablespace firsoul add datafile '/dev/raw/raw9' size 40m;

 

Tablespace altered.

 

SQL> create table firsoul.test (id int,name varchar2(40));

 

Table created.

 

SQL> insert into firsoul.test values(1,'firsoul');

 

1 row created.

 

SQL> commit;

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

+DATA/racdb/datafile/sysaux.288.859438589                   2 ONLINE  SYSAUX

……………………

+DATA/racdb/datafile/firsoul.259.882071697                  7 ONLINE  FIRSOUL

/dev/raw/raw9                                               8 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 ONLINE  FIRSOUL


節點1,檢視資料檔案狀態,資訊

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

ERROR:

ORA-01157: cannot identify/lock data file 8 - see DBWR trace file

ORA-01110: data file 8: '/dev/raw/raw9'


將需要變更資料檔案所屬表空間OFFLINE,非歸檔模式下單個資料檔案在資料庫OPEN狀態下無法OFFLINE

SQL> alter database datafile 8 offline;

alter database datafile 8 offline

*

ERROR at line 1:

ORA-01145: offline immediate disallowed unless media recovery enabled

    SQL>alter tablespace firsoul offline;

 

Tablespace altered.
SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

……………………

+DATA/racdb/datafile/firsoul.259.882071697                   7  OFFLINE   FIRSOUL

/dev/raw/raw9                                           8  OFFLINE   FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11   OFFLINE   FIRSOUL


透過RMAN CP命令複製資料檔案

RMAN> copy datafile '/dev/raw/raw9' to '+DATA';

 

Starting backup at 2015-06-11 10:02:28

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=45 instance=racdb2 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00008 name=/dev/raw/raw9

output file name=+DATA/racdb/datafile/firsoul.263.882093749 tag=TAG20150611T100229 RECID=2 STAMP=882093752

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

Finished backup at 2015-06-11 10:02:32


rename資料檔案,並檢視資訊

SQL> alter database rename file '/dev/raw/raw9' to '+DATA/racdb/datafile/firsoul.263.882093749';

 

Database altered.

 

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

………………

+DATA/racdb/datafile/firsoul.259.882071697                  7 OFFLINE FIRSOUL

+DATA/racdb/datafile/firsoul.263.882093749                  8 OFFLINE FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 OFFLINE FIRSOUL

 

我們可以看到,資料檔案已移植到ASM中,下面將offline表空間修改為online

SQL> alter tablespace firsoul online;

 

Tablespace altered.

 

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

……

+DATA/racdb/datafile/firsoul.259.882071697                  7 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul.263.882093749                  8 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 ONLINE  FIRSOUL

兩個節點檢視,都正常。
附:SYSTEM資料檔案移植步驟(過程說明):

1. Stop DB.
2. Move the datafile using asmcmd.
3. Mount the DB.
4. Rename the datafile.
5. Open the DB.
6. On other RAC nodes you still need to bounce the database because it is SYSTEM tablespace, otherwise you will keep getting errors ORA-01516 or original error ORA-01157: cannot identify/lock data file.

 

三、         總結
  
Oracle RAC操作過程中,我們更需要嚴謹,對於非系統表空間可以不用啟停資料庫,不過需要檢視資料庫系統是是否歸檔模式,資料庫版本,選擇更合理的遷移方式。對於系統資料檔案則需要資料庫為MOUNT狀態進行操作,並且其他恢復完成且需要其他節點例項重啟。Oracle11g ascmd中有cp命令,相對更簡單一點,在Oracle10g RAC方式下,需要透過rman copy命令進行檔案複製,總之,我們需要根據現場環境做出更合理的方式進行操作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-1696511/,如需轉載,請註明出處,否則將追究法律責任。

相關文章