使用集中式災(zāi)備系統(tǒng)硬件資源,基于該硬件資源及操作系統(tǒng),分別建立用于Oracle 12C、11G數(shù)據(jù)庫(kù)災(zāi)備系統(tǒng)資源及用戶。進(jìn)行災(zāi)備數(shù)據(jù)庫(kù)環(huán)境邏輯隔離,通過該集中式系統(tǒng)對(duì)主用12C、11G數(shù)據(jù)庫(kù)進(jìn)行集中式災(zāi)備及管理,同時(shí)承擔(dān)數(shù)據(jù)庫(kù)查詢用戶需要的有效實(shí)時(shí)查詢服務(wù)。
需要實(shí)時(shí)將生產(chǎn)系統(tǒng)12C(多套PDB數(shù)據(jù)庫(kù))、11G主數(shù)據(jù)庫(kù)數(shù)據(jù),通過Data Guard技術(shù)進(jìn)行實(shí)時(shí)數(shù)據(jù)庫(kù)同步,做到集中災(zāi)備數(shù)據(jù)庫(kù)中數(shù)據(jù)副本與主數(shù)據(jù)庫(kù)完全鏡像,并向數(shù)據(jù)庫(kù)查詢用戶提供實(shí)時(shí)性數(shù)據(jù)查詢業(yè)務(wù),集中式災(zāi)備數(shù)據(jù)庫(kù)在主數(shù)據(jù)庫(kù)無法向數(shù)據(jù)庫(kù)級(jí)用戶提供服務(wù)時(shí),可以通過激活集中式災(zāi)備數(shù)據(jù)庫(kù)中12C(多套PDB數(shù)據(jù)庫(kù))、11G數(shù)據(jù)庫(kù),恢復(fù)對(duì)數(shù)據(jù)庫(kù)級(jí)用戶提供數(shù)據(jù)庫(kù)數(shù)據(jù)操作能力。
對(duì) 12C(多套PDB數(shù) 據(jù)庫(kù))、11G數(shù)據(jù)庫(kù)進(jìn)行完全備份同步,數(shù)據(jù)副本處于毫秒級(jí)實(shí)時(shí)同步。集中式災(zāi)備系統(tǒng)中的12C(多套PDB數(shù)據(jù)庫(kù))、11G全鏡像副本數(shù)據(jù)庫(kù),激活時(shí)間在5分鐘內(nèi)。同時(shí)集中式災(zāi)備數(shù)據(jù)庫(kù)具有向200-300個(gè)數(shù)據(jù)庫(kù)級(jí)查詢用戶提供服務(wù)能力。
系統(tǒng)的架構(gòu)圖如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
操作系統(tǒng):AIX
并發(fā)文件系統(tǒng):GPFS
共享文件目錄:/data
IP地址規(guī)劃如表1所示。
1.創(chuàng)建12C、11G數(shù)據(jù)庫(kù)用戶。
使用AIX操作系統(tǒng)命令smitty分別為12C、11G數(shù)據(jù)庫(kù)增加操作系統(tǒng)級(jí)用戶oracle12、oracle,確保用戶屬組符合如下要求:
用戶目錄定義如下:
2.創(chuàng)建12C、11G數(shù)據(jù)庫(kù)用戶環(huán)境變量。
(1)12C數(shù)據(jù)庫(kù)用戶環(huán)境變量。
使用 vi .profile命令,編輯環(huán)境變量,并確保文件中包含如圖2所示的行。
表1 IP地址規(guī)劃
圖2 12C數(shù)據(jù)庫(kù)用戶環(huán)境變量編輯
(2)11G數(shù)據(jù)庫(kù)用戶環(huán)境變量。
使用“vi .profile”命令,編輯環(huán)境變量,并確保文件中包含如圖3所示的行。
(3)分別以 12C、11G數(shù)據(jù)庫(kù)用戶安裝12C、11G數(shù)據(jù)庫(kù)管理軟件(RDBMS),具體過程詳見數(shù)據(jù)庫(kù)安裝手冊(cè)。
1.配置12C主、備數(shù)據(jù)庫(kù)(TNS)別名,確保TNS可達(dá)。
修改12C主、備數(shù)據(jù)庫(kù)$ORACLE_HOME/network/admin/tnsnames.ora文 件,并確保包含圖4所示內(nèi)容。
2.配置11G主、備數(shù)據(jù)庫(kù)(TNS)別名,并確保TNS可達(dá)。
修改11G主、備數(shù)據(jù)庫(kù)$ORACLE_HOME/network/admin/tnsnames.ora文 件,并確保包含如圖5所示內(nèi)容。
圖3 11G數(shù)據(jù)庫(kù)用戶環(huán)境變量編輯
圖4 修改12C主、備數(shù)據(jù)庫(kù)文件
圖5 修改11G主、備數(shù)據(jù)庫(kù)文件
以11G為例,與12C部署配置過程兼容。
1.修改主數(shù)據(jù)庫(kù)為日志模式,使用如下命令:Alter database force logging;
2.查看強(qiáng)制日志模式生效:Select force_logging from v$database;
3.添加STANDBY日志文件。
(1)在主庫(kù)中使用ORACLE用戶登錄系統(tǒng)并執(zhí)行依次執(zhí)行如下命令:
如圖6可以看到 1、2、5日志組屬于1號(hào)實(shí)例(即主機(jī) A),3、4、6日志組屬于2號(hào)實(shí)例(即主機(jī)B)。
(2)向主庫(kù)添加STANDBY的logfile,并確保文件大小等于查詢中l(wèi)ogfile大小,同時(shí)需要保證STANDBY的logfile多于主機(jī)文件組。
例子中日志組為6個(gè),主庫(kù)一號(hào)節(jié)點(diǎn)、二號(hào)節(jié)點(diǎn)各三個(gè),我們使用如圖7命令添加STANDBY的logfile。
圖6 各日志組顯示信息
圖7 添加STANDBY的logfile
添加完成后,使用命令:
如果返回如下行(如圖8),說明添加 STANDBY 日志組成功。
4.復(fù)制主庫(kù)口令文件到災(zāi)備系統(tǒng)中。
將主庫(kù)$ORACLE_HOME/dbs目錄中的orapw+SID文件通過FTP或相應(yīng)工具遠(yuǎn)程復(fù)制到災(zāi)備庫(kù)$ORACLE_HOME/dbs中并將文件名命名為orapw+SID(災(zāi)備)。
5. 參數(shù)生成。
(1)主庫(kù)端操作。
使 用Sqlplus/as sysdba登錄主數(shù)據(jù)庫(kù),使用命令“Create pfile=’PATH’from spfile”,將 當(dāng)前主數(shù)據(jù)庫(kù)參數(shù)文件導(dǎo)出成PFILE格式參數(shù)文件,并通過FTP或相關(guān)工具遠(yuǎn)程復(fù)制到災(zāi)備數(shù)據(jù)庫(kù)。
(2)集中式災(zāi)備數(shù)據(jù)庫(kù)端操作。
使用編輯工具對(duì)從主庫(kù)中傳輸?shù)膮?shù)文件進(jìn)行修改,增加如下內(nèi)容:
圖8 成功添加日志組
6.按照參數(shù)文件中的參數(shù)定義創(chuàng)建相應(yīng)目錄,其中包含audit_file_dest,control_files,db_unique_name,db_recovery_file_dest。
7.復(fù)制主庫(kù)全庫(kù)備份文件至集中式災(zāi)備系統(tǒng)。
8.生成STANDBY控制文件。
(1)主庫(kù)端操作。
在ORACLE用戶下依次執(zhí)行如下命令:
PATH需要用戶自行指定。
(2)復(fù)制生成的控制文件備份至集中式災(zāi)備系統(tǒng)全庫(kù)備份目錄中。
(3)集中式災(zāi)備數(shù)據(jù)庫(kù)端操作。
在$ORACLE_HOME/dbs中創(chuàng)建了init+SID.ora文件,并添加如下內(nèi)容:
其中SPFILE路徑需要用戶根據(jù)項(xiàng)目名稱進(jìn)行定義,項(xiàng)目實(shí)施過程中建議用戶采用工程化目錄結(jié)構(gòu),以項(xiàng)目名稱為子目錄并在該目錄中保存災(zāi)備數(shù)據(jù)庫(kù)的參數(shù)文件、控制文件以及數(shù)據(jù)文件。
在ORACLE用戶下依次執(zhí)行如下命令:
等待災(zāi)備庫(kù)建成。
(4)災(zāi)備庫(kù)建成后進(jìn)行數(shù)據(jù)同步。
①主庫(kù)端操作:
②集中式災(zāi)備系統(tǒng)端操作:
5.以只讀方式打開災(zāi)備庫(kù),并進(jìn)行歸檔實(shí)時(shí)同步。
終止同步后臺(tái)進(jìn)程(終止前需要檢查V$log中的主、備日志序列SCN號(hào))。
②使用如下命令:alter database open;
災(zāi)備數(shù)據(jù)庫(kù)以只讀方式打開,可供查詢用戶使用。
③使用如下命令:
啟動(dòng)災(zāi)備數(shù)據(jù)庫(kù)后臺(tái)實(shí)時(shí)同步進(jìn)程。
災(zāi)備數(shù)據(jù)庫(kù)建立后可以自動(dòng)完成數(shù)據(jù)庫(kù)與主庫(kù)實(shí)時(shí)同步,并向查詢用戶提供實(shí)時(shí)數(shù)據(jù)查詢服務(wù)。
1.創(chuàng)建定時(shí)執(zhí)行腳本,使用命令vi dszx_oracle11g DBfull腳本,腳本主要內(nèi)容如圖9。
相關(guān)變量參數(shù)值需要根據(jù)用戶實(shí)際環(huán)境進(jìn)行對(duì)照修改。
2.創(chuàng)建全庫(kù)備份及失效備份文件清理RMAN腳本。
(1)使用命令“vioracle11gdbfull”,編輯文件內(nèi)容如圖10。
(2)使用命令“vioracle11gdel_obsolete”,編輯文件內(nèi)容如下:
3.使用crontab制定計(jì)劃任務(wù),完成系統(tǒng)自動(dòng)清理定義。
圖9 創(chuàng)建定時(shí)執(zhí)行腳本
圖10 使用命令“vi oracle11gdbfull”編輯文件
圖11 編輯生成convert_primary_oracle11g.sql文件
1.在系統(tǒng)管理員PC機(jī)中創(chuàng)建指向主數(shù)據(jù)庫(kù)及災(zāi)備數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)服務(wù)名。
2.在系統(tǒng)管理員PC機(jī)中創(chuàng)建災(zāi)備管理工程目錄,并依次建立如下管理腳本。
(1)STANDBY數(shù)據(jù)庫(kù)轉(zhuǎn)換為主庫(kù)激活腳本。
①編輯生成convert_primary.bat文件,內(nèi)容如下:
②編輯生成convert_primary_oracle11g.sql文件,內(nèi)容如圖11。
(2)STANDBY數(shù)據(jù)庫(kù)轉(zhuǎn)換為測(cè)試庫(kù)激活腳本。
①編輯生成convert_primary.bat文件,內(nèi)容如下:
集中式災(zāi)備數(shù)據(jù)庫(kù)建立完成后,由于主庫(kù)會(huì)不斷向集中式災(zāi)備系統(tǒng)推送實(shí)時(shí)更新日志,因此災(zāi)備數(shù)據(jù)庫(kù)需要有能力判別歸檔數(shù)據(jù)文件的有效性并及時(shí)清理使用過的過期日志歸檔文件,并對(duì)自己進(jìn)行全庫(kù)備份,災(zāi)備庫(kù)中的全庫(kù)備份也可以用來對(duì)主庫(kù)進(jìn)行數(shù)據(jù)庫(kù)或表的有效恢復(fù)。有效的保證了全庫(kù)備份的異地雙副本實(shí)現(xiàn)。
災(zāi)備數(shù)據(jù)庫(kù)還提供了一個(gè)獨(dú)特的功能和優(yōu)點(diǎn),如果主數(shù)據(jù)庫(kù)上發(fā)生塊損壞(導(dǎo)致ORA-1578),Oracle Active Data Guard配置中將自動(dòng)執(zhí)行塊恢復(fù),終端用戶甚至不會(huì)意識(shí)到發(fā)生了塊損壞。對(duì)既有數(shù)據(jù)庫(kù)進(jìn)行集中式災(zāi)備,既可提供良好的數(shù)據(jù)庫(kù)主庫(kù)故障快速遷移;同時(shí)又可利用災(zāi)備數(shù)據(jù)庫(kù)進(jìn)行部分弱實(shí)時(shí)性用戶對(duì)數(shù)據(jù)庫(kù)的查詢業(yè)務(wù),降低對(duì)主庫(kù)的查詢性能損耗。從而實(shí)現(xiàn)更大范圍的并行化系統(tǒng)需求。