使用集中式災備系統硬件資源,基于該硬件資源及操作系統,分別建立用于Oracle 12C、11G數據庫災備系統資源及用戶。進行災備數據庫環境邏輯隔離,通過該集中式系統對主用12C、11G數據庫進行集中式災備及管理,同時承擔數據庫查詢用戶需要的有效實時查詢服務。
需要實時將生產系統12C(多套PDB數據庫)、11G主數據庫數據,通過Data Guard技術進行實時數據庫同步,做到集中災備數據庫中數據副本與主數據庫完全鏡像,并向數據庫查詢用戶提供實時性數據查詢業務,集中式災備數據庫在主數據庫無法向數據庫級用戶提供服務時,可以通過激活集中式災備數據庫中12C(多套PDB數據庫)、11G數據庫,恢復對數據庫級用戶提供數據庫數據操作能力。
對 12C(多套PDB數 據庫)、11G數據庫進行完全備份同步,數據副本處于毫秒級實時同步。集中式災備系統中的12C(多套PDB數據庫)、11G全鏡像副本數據庫,激活時間在5分鐘內。同時集中式災備數據庫具有向200-300個數據庫級查詢用戶提供服務能力。
系統的架構圖如圖1所示。

圖1 系統架構圖
操作系統:AIX
并發文件系統:GPFS
共享文件目錄:/data
IP地址規劃如表1所示。
1.創建12C、11G數據庫用戶。
使用AIX操作系統命令smitty分別為12C、11G數據庫增加操作系統級用戶oracle12、oracle,確保用戶屬組符合如下要求:

用戶目錄定義如下:

2.創建12C、11G數據庫用戶環境變量。
(1)12C數據庫用戶環境變量。
使用 vi .profile命令,編輯環境變量,并確保文件中包含如圖2所示的行。

表1 IP地址規劃

圖2 12C數據庫用戶環境變量編輯
(2)11G數據庫用戶環境變量。
使用“vi .profile”命令,編輯環境變量,并確保文件中包含如圖3所示的行。
(3)分別以 12C、11G數據庫用戶安裝12C、11G數據庫管理軟件(RDBMS),具體過程詳見數據庫安裝手冊。
1.配置12C主、備數據庫(TNS)別名,確保TNS可達。
修改12C主、備數據庫$ORACLE_HOME/network/admin/tnsnames.ora文 件,并確保包含圖4所示內容。
2.配置11G主、備數據庫(TNS)別名,并確保TNS可達。
修改11G主、備數據庫$ORACLE_HOME/network/admin/tnsnames.ora文 件,并確保包含如圖5所示內容。

圖3 11G數據庫用戶環境變量編輯

圖4 修改12C主、備數據庫文件

圖5 修改11G主、備數據庫文件
以11G為例,與12C部署配置過程兼容。
1.修改主數據庫為日志模式,使用如下命令:Alter database force logging;
2.查看強制日志模式生效:Select force_logging from v$database;
3.添加STANDBY日志文件。
(1)在主庫中使用ORACLE用戶登錄系統并執行依次執行如下命令:

如圖6可以看到 1、2、5日志組屬于1號實例(即主機 A),3、4、6日志組屬于2號實例(即主機B)。
(2)向主庫添加STANDBY的logfile,并確保文件大小等于查詢中logfile大小,同時需要保證STANDBY的logfile多于主機文件組。
例子中日志組為6個,主庫一號節點、二號節點各三個,我們使用如圖7命令添加STANDBY的logfile。

圖6 各日志組顯示信息

圖7 添加STANDBY的logfile
添加完成后,使用命令:

如果返回如下行(如圖8),說明添加 STANDBY 日志組成功。
4.復制主庫口令文件到災備系統中。
將主庫$ORACLE_HOME/dbs目錄中的orapw+SID文件通過FTP或相應工具遠程復制到災備庫$ORACLE_HOME/dbs中并將文件名命名為orapw+SID(災備)。
5. 參數生成。
(1)主庫端操作。
使 用Sqlplus/as sysdba登錄主數據庫,使用命令“Create pfile=’PATH’from spfile”,將 當前主數據庫參數文件導出成PFILE格式參數文件,并通過FTP或相關工具遠程復制到災備數據庫。
(2)集中式災備數據庫端操作。
使用編輯工具對從主庫中傳輸的參數文件進行修改,增加如下內容:


圖8 成功添加日志組

6.按照參數文件中的參數定義創建相應目錄,其中包含audit_file_dest,control_files,db_unique_name,db_recovery_file_dest。
7.復制主庫全庫備份文件至集中式災備系統。
8.生成STANDBY控制文件。
(1)主庫端操作。
在ORACLE用戶下依次執行如下命令:

PATH需要用戶自行指定。
(2)復制生成的控制文件備份至集中式災備系統全庫備份目錄中。
(3)集中式災備數據庫端操作。
在$ORACLE_HOME/dbs中創建了init+SID.ora文件,并添加如下內容:

其中SPFILE路徑需要用戶根據項目名稱進行定義,項目實施過程中建議用戶采用工程化目錄結構,以項目名稱為子目錄并在該目錄中保存災備數據庫的參數文件、控制文件以及數據文件。
在ORACLE用戶下依次執行如下命令:

等待災備庫建成。
(4)災備庫建成后進行數據同步。
①主庫端操作:

②集中式災備系統端操作:

5.以只讀方式打開災備庫,并進行歸檔實時同步。

終止同步后臺進程(終止前需要檢查V$log中的主、備日志序列SCN號)。
②使用如下命令:alter database open;
災備數據庫以只讀方式打開,可供查詢用戶使用。
③使用如下命令:

啟動災備數據庫后臺實時同步進程。
災備數據庫建立后可以自動完成數據庫與主庫實時同步,并向查詢用戶提供實時數據查詢服務。
1.創建定時執行腳本,使用命令vi dszx_oracle11g DBfull腳本,腳本主要內容如圖9。
相關變量參數值需要根據用戶實際環境進行對照修改。
2.創建全庫備份及失效備份文件清理RMAN腳本。
(1)使用命令“vioracle11gdbfull”,編輯文件內容如圖10。
(2)使用命令“vioracle11gdel_obsolete”,編輯文件內容如下:

3.使用crontab制定計劃任務,完成系統自動清理定義。

圖9 創建定時執行腳本

圖10 使用命令“vi oracle11gdbfull”編輯文件

圖11 編輯生成convert_primary_oracle11g.sql文件
1.在系統管理員PC機中創建指向主數據庫及災備數據庫的網絡服務名。
2.在系統管理員PC機中創建災備管理工程目錄,并依次建立如下管理腳本。
(1)STANDBY數據庫轉換為主庫激活腳本。
①編輯生成convert_primary.bat文件,內容如下:


②編輯生成convert_primary_oracle11g.sql文件,內容如圖11。
(2)STANDBY數據庫轉換為測試庫激活腳本。
①編輯生成convert_primary.bat文件,內容如下:




集中式災備數據庫建立完成后,由于主庫會不斷向集中式災備系統推送實時更新日志,因此災備數據庫需要有能力判別歸檔數據文件的有效性并及時清理使用過的過期日志歸檔文件,并對自己進行全庫備份,災備庫中的全庫備份也可以用來對主庫進行數據庫或表的有效恢復。有效的保證了全庫備份的異地雙副本實現。
災備數據庫還提供了一個獨特的功能和優點,如果主數據庫上發生塊損壞(導致ORA-1578),Oracle Active Data Guard配置中將自動執行塊恢復,終端用戶甚至不會意識到發生了塊損壞。對既有數據庫進行集中式災備,既可提供良好的數據庫主庫故障快速遷移;同時又可利用災備數據庫進行部分弱實時性用戶對數據庫的查詢業務,降低對主庫的查詢性能損耗。從而實現更大范圍的并行化系統需求。