茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671763 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
HoneyMoon_Day2_00002.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2017/6/8 8:40:05

使用RMAN的備份檔達到異機還原。

今天去逛一下書局,本想去找一下Oracle看有沒有值得買的書,買了兩本就開開心心的回家,回到家的時候我弟看到我買的書,念了我一下....
"你怎麼這麼不愛國,居然買大陸簡體書"

這時候我才發現,我所需要的知識補充,似乎未來只能在簡體中文去或者英文方面尋找了,在這塊土地上Oracle這方面的知識與技術超越我的人太多太多,但在我熟悉的文字中,似乎已經沒有願意分享寶貴的經驗與知識呈現,看來我所熟悉的文字在很多方面它的競爭力漸漸式微。

無彷~反正我意義上也是個外國奴,靠的外國人發明出來的軟體過生活,本來就沒資格要求在熟悉的語言下學習,也不能指責有分享的人"你寫的東西怎麼都是一筆帶過,誰看得懂"。

今天~來簡單的分享一下使用RMAN的備份檔達到異機還原的目的。

是否一定要Archive Log Mode???
No Archive Log
在這個模式底下,若要online的狀況下備份還原資料庫,只能使用export、import,但還原資料庫的時候就很頭大了,等於重建一個資料庫再把資料導入,必須要注意權限、Schema.....連import的順序也要考慮,若要做physical backup只能關閉資料庫做備份。

1 . 關閉資料庫、Listener
2 . 複製所有datafile、online redo logfile、control file、最好spfile也要。
3 . 開啟資料庫、Listener

Archive Log
在Archive Log模式底下,可以在online的實體備份(Physical Backup),他會將資料庫目前的狀態備份下來,還原的時候既輕鬆多了,就像是把檔案放到該放的位置,設定一下資料庫就可以起來了。


RMAN(Recovery Manager)說明
在備份的時候,備份軟體總是要知道資料庫裡有甚麼檔案,時麼時候備份,備份了哪些內容,那些資料庫的檔案放在哪裡,這就是所謂RMAN的metadata。RMAN的可以建立一個Catalog Database來存放RMAN備份的資訊(不是備份資料),若未設定RMAN Catalog Database,預設RMAN會將metadata存放於將備份Instance的Control File中。

RMAN的備份雖然可以不需要切換為begin backup 或end backup來達到各檔案的時間戳記一致,但資料庫必須要再Archive Log模式底下做備份。


Oracle Instance的結構
在備份前先討論一下Instance的組成結構與"時間點"曖昧的關係,Oracle Instance的組成零件如下。

1 . Datafile (存放ERP、人所衍生出的資料)
2 . online redo logfile (使用者所產生的資料變化與"進化"過程的過程把它記錄下來)
3 . control file (保持資料庫檔案的一致性,datafile路徑等,也包含RMAN的關鍵資料)
4 . server parameter file (pfile or spfile,資料庫的參數檔,)
5 . Password file (密碼檔,用於未啟動Instance時,管理者遠端登入用)

以上的幾個零件,Datafile、online redo logfile 、control file 有著曖昧不明的關西,當異常發生須要重新啟動資料庫的時候,資料庫會先將control file中的SCN與datafile、online redo logfile的SCN做比對,若時間點一致的話就不需要rollback,若不一致的話,就靠online redo logfile來做rollbackup,以此方式來滿足他們"時間點"曖昧,也保證了資料庫的資料一致性。


若online redo logfile無法滿足他們的愛眛呢,那就保佑你有開Archive Log了,不過這情況不大可能發生,預設online redo logfile有三個,Oracle內部的機制可以滿足絕大部分的rollback所需!!!

flash_recovery_area
Oracle 10g 新增的一項概念,他是一個資料夾,預設存放archive log、RMAN backup資料、control file的副本...等,但既然Oracle將他是命名為"Area",但表這資料夾的容量受Oracle的限制,限制的參數為"db_recovery_file_dest_size",預設是2G,滿的話資料庫異常。

RMAN備份與異機還原流程
1 . 來源資料庫 開啟Archive Log Mode,修正flash_recovery_area路徑與空間限制大小,預設的情況下RMAN的備份、Archive Log... 等都會存放在 flash_recovery_area,而 flash_recovery_area 又跟 datafile 放在同一個磁區中,如此一來備份會受到I/O競爭的影響,且習慣上 Archive Log 也不放在 flash_recovery_area。
2 . 來源資料庫 使用RMAN備份資料庫。
3 . 目的資料庫 還原時所需檔案的複製與資料庫環境的部屬。
      - 當還原的檔案都已經傳送到目的資料庫中,RMAN就必須要連到目的資料庫的Instance中做復原。
      - RAMN要有Instance可以連的話,目的資料庫的Instance至少開到nomount狀態下。
      - 資料庫 Instance要開到nomount狀態,就必須要有spfile、password file還要有Listener以及Instance所需的相關的資料夾。
4 . 目的資料庫 還原資料庫與開啟Instance。


初始化參數說明
control_file_record_keep_time
當RMAN未設定catalog database時,所有的RMAN備份紀錄都會存在control file中,預設control file
中保留RMAN備份紀錄為七天。

db_recovery_file_dest
Flash_recovery_area路徑,建議不要與datafile同一磁碟。

db_recovery_file_dest_size
Flash_recovery_area可使用空間的上限,預設為2G。


1 . 來源資料庫 開啟Archive Log Mode,修正flash_recovery_area路徑與空間限制大小。
建立所需目錄
# su - root
# mkdir -p /u03/archive_log/orcl
# mkdir -p /u03/flash_recovery_area
# chown oracle.oinstall -R /u03
# chmod -R 750 /u03/flash_recovery_area

修正資料庫參數
SQL> alter system set log_archive_dest_1="location=/u03/archive_log/orcl" scope=both;
SQL> alter system set db_recovery_file_dest='/u03/flash_recovery_area' scope=both;
SQL> alter system set db_recovery_file_dest_size=10G scope=both;


開啟Archive Log mode
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;


2 . 使用RMAN備份資料庫。
# su – oracle
$ rman target /
run {
configure controlfile autobackup on;
configure device type disk parallelism 2;
configure channel 1 device type disk connect='sys/manager@orcl';
configure channel 2 device type disk connect='sys/manager@orcl';
backup database plus archivelog;
}

3 . 在目的端主機上Listener部屬與還原時所需檔案的複製。

使用netca建立Listener與連線方式後,之後針對orcl的靜態註冊,並開啟Listener。
$ vi /u02/oracle/10g/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u02/oracle/10g)
      (PROGRAM = extproc)
    )
      (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /u02/oracle/10g)
    )
  )

$ su - oracle
$ lsnrctl start

  

建立Archive Log與flash_recovery_area目錄
# su - root
# mkdir -p /u03/archive_log/orcl
# mkdir -p /u03/flash_recovery_area/ORCL
# chmod -R 750 /u03/flash_recovery_area
# chown oracle.oinstall -R /u03/


建立orcl Instance所需目錄
# su - oracle
$ ORACLE_SID=orcl
$ OLD_UMASK=`umask`
$ umask 0027
$ mkdir -p /u02/oracle/10g/cfgtoollogs/dbca/orcl
$ mkdir -p /u02/oracle/10g/dbs
$ mkdir -p /u02/oradb/admin/orcl/adump
$ mkdir -p /u02/oradb/admin/orcl/bdump
$ mkdir -p /u02/oradb/admin/orcl/cdump
$ mkdir -p /u02/oradb/admin/orcl/dpdump
$ mkdir -p /u02/oradb/admin/orcl/pfile
$ mkdir -p /u02/oradb/admin/orcl/udump
$ mkdir -p /u02/oradb/oradata/orcl


在目的端上複製來源端資料庫的備份資料
$ su - oracle
$ cd /u02/oracle/10g/network/admin
$ scp -r oracle@來源端主機IP:/u02/oracle/10g/network/admin/tnsnames.ora .
$ cd /u02/oracle/10g/dbs
$ scp -r oracle@來源端主機IP:/u02/oracle/10g/dbs/spfileorcl.ora .
$ cd /u03/flash_recovery_area/ORCL
$ scp -r oracle@來源端主機IP:/u03/flash_recovery_area/ORCL/* .


4 . 還原資料庫與開啟Instance。

建立密碼檔與spfile。(可使用新建立或複製來源主機的檔案)
$ cd /u02/oracle/10g/dbs/
$ scp -r oracle@來源端主機:/u02/oracle/10g/dbs/orapworcl .
$ scp -r oracle@來源端主機:/u02/oracle/10g/dbs/spfileorcl.ora .

登入RMAN註冊DBID並將Instance開啟至nomount
$ su - oracle
$ rman target /
RMAN> set dbid=xxxxxxxx  #DBID在來源端主機使用RMAN即可得知,必須一樣。
RMAN> startup nomount;


復原control file,可在來源端主機使用rman下達list backup得知control file的備份檔案。
RMAN> restore controlfile from '/u03/flash_recovery_area/ORCL/autobackup/2012_04_23/o1_mf_s_781384123_7sbg1w12_.bkp';
RMAN        

RMAN> alter database mount;
RMAN> restore database; 


RMAN> recover database;
由於RMAN備份的過程中只會備份需要的ArchiveLog,但在備份時SCN某些部分已經是需要未來的Archive Log,所以直使用sql指令取消recover並開啟至open狀賴即可。

 
RMAN2  


$ su – oracle
$ sqlplus ‘/as sysdba’
SQL> recover database using backup controlfile until cancel;
SQL> alter database open resetlogs; (會重新建立online redo file)

RMANˇ  

如以一來,移轉Database輕鬆多了。


原文出處:使用RMAN的備份檔達到異機還原。 @ 啤酒與Gibson :: 痞客邦 PIXNET ::*/
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|