【邏輯DG滾動升級一】ORACLE11204 邏輯DG滾動升級至12C---生產端前期準備

yingyifeng306發表於2022-04-15

 


說明

概述

本文的環境為Linux 11.2.0.4 單機 + 物理dg ,透過將物理dg臨時轉換為邏輯dg ,然後利用sql apply來降低升級過程中的停機時間,主要步驟如下

 

1. 生產庫建立強制閃回點

2. 將物理dg轉換為邏輯dg

3. 將邏輯dg升級至12c,資料和生產同步

4. 第一次主備切換,邏輯dg變為生產,接管業務

5. 原生產閃回至邏輯dg升級開始的時候

6. 用12c軟體將原生產庫啟動到mount,並轉換為物理standby,同步資料

7. 第二次主備切換
從以上過程可以看出,停機時間僅僅在於第一步建立強制閃回點的時間和兩次dg切換的時間,如果不需要切換回原生產主機,則只需要第一次切換就行。

生產端前期準備

生產建立回退方案

  生產庫建立閃回點

SQL> STARTUP MOUNT;

SQL> CREATE RESTORE POINT pre_upgrade GUARANTEE FLASHBACK DATABASE;

需要提前設定好閃回空間

 

為了回退需要,還要備份控制檔案和 redo

[oracle@backup ~]$ cp /oracle/ora11204/oradata/orcl/*.ctl /oracle/ora11204/oradata/orcl/redo* /oracle/ora11204/bak/

 

為了使用 sql apply ,主庫必須執行在最大可用或者最大效能模式。

SQL> alter database set standby database to maximize availability;

SQL> ALTER DATABASE OPEN;

 

生產開啟附加日誌

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

 

端設定一個額外的目錄存放邏輯dg 產生的歸檔

SQL> alter system set log_archive_dest_3='LOCATION=/oracle/ora11204/arch/std VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)';

SQL> alter system set log_archive_dest_state_3=enable;

 

 

主庫檢查包含不受sql apply 支援的資料型別的表

SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED;

(會列出業務使用者不支援的表)

 

--SELECT * FROM DBA_LOGSTDBY_EDS_SUPPORTED;

 

檢視資料庫中不支援的內部使用者:

SQL>

 

備註:

 

在生產庫上透過如下命令捕捉不受 sql apply 支援的事務,記錄到DBA_LOGSTDBY_EVENTS 表中。

SQL> ',  DBMS_LOGSTDBY.MAX_EVENTS);

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('RECORD_UNSUPPORTED_OPERATIONS', 'TRUE');

 

 

生成sql apply 需要的資料字典

從主庫上獲取備庫所需的資料字典資訊 (可在備庫啟動到 mount 狀態執行)

 sql> exec dbms_logstdby.build

logmnr 根據這個將 redo 轉換為邏輯 dg sql


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

相關文章