Oracle資料庫從Linux x86單機遷移到Solaries雙節點RAC叢集經驗分享-備份策略驗證

neverinit發表於2018-11-08

本文分享了一次真實的遷移案例,將某業務系統生產環境Oracle資料庫進行遷移,資料庫版本為11.2.0.4。資料庫遷移之前部署在RedHat6.5作業系統中,以單機單例項檔案系統部署;遷移之後部署在Solaries11作業系統中,以ASM雙節點RAC叢集部署。本文分享的主要內容是遷移過程中對生產環境的變更和調整思路,以及遷移過程中遇到問題的解決方案,整個遷移過程包括測試環境驗證、備份策略驗證、生產環境切換等三大步驟,並未涉及資料庫的安裝部署。希望文章的整體處理思路對讀者有幫助。

備份策略驗證的目的如下:

(1)調整生產資料庫引數。

(2)增加控制檔案、日誌檔案。

(3)部署RMAN備份策略

(4)模擬故障演練


目錄結構搶先看

1.線上重做日誌調整

2.控制檔案調整

3.記憶體引數調整

4.調整其他引數

5.開啟資料庫歸檔

6.定義RMAN備份策略

7.部署備份指令碼和crontab

8.手工執行RMAN全量備份

9.控制檔案損壞測試

10.spfile檔案損壞測試

11.重做日誌損壞測試

12.資料損壞測試

13.其他問題處理



下面是操作全流程:

1.線上重做日誌調整    

(注: 每組一個,增加組數為8,調整大小為1G)

SQL> set linesize 300;SQL> col member for a50;
SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                                             IS_
---------- ------- ------- -------------------------------------------------- ---
         2         ONLINE  +DATADG/cams/onlinelog/group_2.292.989624633       NO
         1         ONLINE  +DATADG/cams/onlinelog/group_1.256.989624629       NO
         3         ONLINE  +DATADG/cams/onlinelog/group_3.296.989624869       NO
         4         ONLINE  +DATADG/cams/onlinelog/group_4.295.989624875       NO
         5         ONLINE  +DATADG/cams/onlinelog/group_5                     NO
         6         ONLINE  +DATADG/cams/onlinelog/group_6                     NO
         7         ONLINE  +DATADG/cams/onlinelog/group_7                     NO
         8         ONLINE  +DATADG/cams/onlinelog/group_8                     NO
8 rows selected.
SQL> select GROUP#,BYTES,MEMBERS,STATUS from v$log;
    GROUP#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ----------------
         1 1073741824          1 INACTIVE
         2 1073741824          1 INACTIVE
         3 1073741824          1 CURRENT
         4 1073741824          1 INACTIVE
         5 1073741824          1 CURRENT
         6 1073741824          1 INACTIVE
         7 1073741824          1 INACTIVE
         8 1073741824          1 INACTIVE
8 rows selected.

2.控制檔案調整    

(注: 調整控制檔案為3個,存在在不同路徑下)

SQL> set linesize 300;SQL> col name for a55;
SQL> select * from v$controlfile;
STATUS  NAME                                                    IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------------------------------- --- ---------- --------------
        +DATADG/cams/controlfile/controlfile1/controlfile1      NO       16384           1128
        +DATADG/cams/controlfile/controlfile2/controlfile2      NO       16384           1128
        +DATADG/cams/controlfile/current.303.989624627          NO       16384           1128

3.記憶體引數調整    

(注:每個節點的記憶體都為64G,開啟AMM)

SQL> show parameter memory;NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 32256M
memory_target                        big integer 32256M
shared_memory_address                integer     0
SQL> show parameter sga;        
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 32256M
sga_target                           big integer 0
SQL> show parameter pga;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 0

4.調整其他引數

調整

job_queue_processes,

log_buffer,

db_block_checking,

processes,

session_cached_cursors,

open_cursors,

undo_retention

等引數,符合生產規範。

5. 開啟資料庫歸檔

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            +DATADG
Oldest online log sequence     8
Next log sequence to archive   11
Current log sequence           11

6.定義RMAN備份策略

(1)設定資料庫自動備份控制檔案

(2)每週日做RMAN 0級全庫備份

(3)每日(除週日)做RMAN 1級增量備份

(4)在主伺服器上只保留2周的全庫備份、增量備份

(5)將兩週前的全庫備份、增量備份copy至其他環境中

7. 部署備份指令碼和crontab    

(注:按照客戶要求,這裡將RMAN備份到ASM磁碟中)

先建立RMAN備份目錄“+DATADG/CAMS/RMAN”

指令碼存放目錄:/u01/app/oracle/backup/rman

日誌存放目錄:/u01/app/oracle/backup/rman/logs


在oracle使用者下執行:crontab -e,每天凌晨3點執行備份

0 3 * * 0-6 /u01/app/oracle/backup/rman/start_rman.sh >> /u01/app/oracle/backup/rman/start_rman.log

8.手工執行RMAN全量備份

手工執行RMAN 0級備份指令碼,對資料庫做全量RMAN備份。

9.控制檔案損壞測試

(1)關閉資料庫

(2)修改其中一個控制檔名字

(3)啟動資料庫(提示錯誤資訊)

(4)使用RMAN恢復控制檔案

(5)啟動資料庫

(6)檢查控制檔案資訊

10. spfile檔案損壞測試

(1)關閉資料庫

(2)修改spfile檔名字

(3)啟動資料庫(提示錯誤資訊)

(4)使用RMAN恢復spfile檔案

(5)重啟資料庫

(6)檢查資料庫狀態

11. 重做日誌損壞測試

(1)關閉資料庫

(2)修改redo檔名字

(3)啟動資料庫(提示錯誤資訊)

(4)使用RMAN完全恢復

(5)在sqlplus中recover資料庫

(6)開啟資料庫

(7)檢查資料庫狀態

12. 資料損壞測試

(1)完全恢復

RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAN>alter database open;

(2)不完全恢復

oracle@cwgsdb1:~$ srvctl stop database -d cams
oracle@cwgsdb1:~$ srvctl start database -d cams -o mount
oracle@cwgsdb1:~$ export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
$ rman target /
RMAN>restore database until time "to_date('2018-10-25 01:07:18','yyyy-mm-dd hh24:mi:ss')";
RMAN>recover database until time "to_date('2018-10-25 01:08:06','yyyy-mm-dd hh24:mi:ss')";
RMAN>alter database open resetlogs;
RMAN>exit

13.其它問題處理

Solaries系統時間與網際網路時間不一致,因為是測試環境,切換時會清理後重新匯入生產資料,所以直接修改系統時間解決。

如果生產環境發現該問題,建議將硬體與系統時間同步關掉,停庫一天,等時間超過當前時間,然後開系統,時間同步,然後再起資料庫。


至此,備份策略驗證完畢。下一步的工作是進行生產環境資料庫切換 。

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

相關文章