利用rman將本地資料檔案遷移到asm

湖湘文化發表於2013-12-11
 

2012514

1、  發現問題:

環境:linux 5.5  oracle 10.2.0.4 RAC  ASM

前幾天客戶方資料庫歸檔空間滿出現問題,當天臨時刪除了部分歸檔日誌,資料庫恢復了正常使用;重新對資料庫做備份。大量載入資料導致1.6T的歸檔日誌所在DG滿,歸檔日誌存放在asm

最近一段時間,客戶方另外一個服務公司(程式開發)需要往資料庫大量匯入資料,操作員對資料庫不熟悉,又沒有老員工幫帶,而且客戶方也沒有dba,感覺不放心。於是昨天主動聯絡客戶,今天到達現場,檢查相關情況並處理問題。

登入第二個節點,檢視下磁碟空間,發現很奇怪的問題,本地磁碟使用率突然增加到了88%,這太奇怪了,因為最近一年多以來,每次巡檢,基本上使用率都維持在36%左右;找啊找,最後在目錄$ORACLE_HOME/dbs下發現了一個大資料檔案,上個月27日建立的,已經增長到240G了;增長好快,而且資料還只匯入了三分之一,所以照此估計,資料總量可達約800G。暈死,誰把資料檔案放到本地磁碟了?!

進一步檢查資料庫告警日誌發現,有人在27日建立了一個大表空間:

create bigfile tablespace <tbsname> datafile size 500m autoextend on next 500m;

查詢相關檢視,多了一個很長很奇怪的資料檔案。

不應該將資料庫置於一種危險的境地!

2、確認問題:

    正打算進一步檢查,最近一直往資料庫匯入資料的工程師過來了。他說載入資料,需要新建表空間,上網搜資料,參考別人(windows環境中)建立表空間的語句,不知道本地檔案系統和asm的區別,以及當前資料庫的資料檔案都是存放在asm裡的,已經往新建的資料檔案裡匯入了240g資料;路徑中有E:\等,而oracle將整個路徑及名稱當做一個資料檔名來處理了,於是看到了一個很長很奇怪的資料檔名;

3、處理問題:

本地磁碟根分割槽原本有空餘空間約280G,現在剩餘40g,建立了一個大檔案表空間,估計等待所有資料全部匯入完成,約有800G資料;

可以利用rman將本地資料檔案遷移到asm

   

3.1、遷移大致步驟

rman target /

report schema;

backup tablespace tbsname

sql 'alter tablespace tbsname offline';

backup as copy datafile 259 format '+DG1';

switch datafile 259 to copy;

sql 'alter tablespace tbsname online';

report schema;

rm 掉原來的本地資料檔案

3.2、意外情況:

copy進行了一段時間後,覺得檔案巨大,單通道copy太慢,於是ctrl+c中斷;

分配多個通道重新操作,遭遇報錯“無法讀取資料檔案表頭259錯誤原因4  rman  06056

ctrl+c中斷 很多時候是很危險的,可能收穫意想不到的驚喜;)

還好有備份:

restore tablespace tbsname

recover tablespace tbsname

完成之後,接下來繼續分配多個通道進行copy遷移操作。

如果備份有問題,恢復時可能報錯rman  03002  06026 06100

3.3、如果上述方法不管用,還可以用如下方法處理:

因為都是最近匯入的資料,而且所有dmp檔案都在,可以刪掉表空間,然後在DG1裡建立表空間:

drop tablespace tbsname including contents and datafiles;

create bigfile tablespace tbsname datafile ‘+DG1’ size 20G autoextend on next 512m maxsize unlimited;

3.4、刪除和建立完成後,imp匯入所有資料

=====================================================================

4、虛擬機器利用rman將本地資料檔案遷移到其他路徑(測試)

RMAN> report schema;

Report of database schema

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

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

1    450      SYSTEM               YES     /home/app/oracle/data/node1/system01.dbf

2    25       UNDOTBS1             YES     /home/app/oracle/data/node1/undotbs01.dbf

3    270      SYSAUX               NO      /home/app/oracle/data/node1/sysaux01.dbf

4    215      USERS                NO      /home/oracle/users1.dbf

5    200      GOLDENGATE           NO      /home/app/oracle/data/node1/goldengate01.dbf

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

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

1    20       TEMP                 32767       /home/app/oracle/data/node1/temp01.dbf

備份表空間

rman target / catalog rman/rman@node1

RMAN> backup tablespace users;

將表空間離線

RMAN> sql 'alter tablespace users offline';

Rman 複製

RMAN> backup as copy datafile 4 format '/home/app/oracle/data/node1/users01.dbf';

(此處如果遷移到asm,格式可寫成 '/+DG1/'

將資料檔案切換為copy

RMAN> switch datafile 4 to copy;

將表空間線上

RMAN> sql 'alter datafile 4 online';

RMAN> report schema;

說明:

遷移過程花費的時間主要取決於要遷移的資料檔案大小,資料量較大時,可以考慮分配多個通道。

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

相關文章