■西安 王金國(guó) 解寶琦 蔡桂洲
隨著Oracle 12C 在企業(yè)級(jí)應(yīng)用環(huán)境的不斷擴(kuò)大和升級(jí)部署,越來(lái)越多的企業(yè)級(jí)傳統(tǒng)應(yīng)用項(xiàng)目開(kāi)始逐步向Oracle12C 進(jìn)行遷移和流動(dòng)。然而,硬件及操作系統(tǒng)升級(jí)后也給Oracle12C 的升級(jí)遷移帶來(lái)了很多技術(shù)性挑戰(zhàn)和考驗(yàn)。
本文結(jié)合企業(yè)在新的Solaris11 操作系統(tǒng)環(huán)境下集成安裝Oracle 12.2 RAC環(huán)境的問(wèn)題及日常優(yōu)化進(jìn)行總結(jié),希望能給企業(yè)級(jí)用戶在集成過(guò)程中減少一些集成難度。
當(dāng)用戶在Solaris11 環(huán)境下安裝完Oracle12C 的雙節(jié)點(diǎn)RAC 環(huán)境并進(jìn)行了最新補(bǔ)丁升級(jí),使用DBCA 命令創(chuàng)建數(shù)據(jù)庫(kù)后,發(fā)現(xiàn)數(shù)據(jù)庫(kù)并不能正常工作和使用,通過(guò)在GRID 用戶下使用“scrctl status res -t“命令查看,發(fā)現(xiàn)其服務(wù)均正常,唯獨(dú)db服務(wù)會(huì)隨機(jī)性重啟,導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法訪問(wèn),查看Oracle的trace 文件發(fā)現(xiàn)如圖1 所示錯(cuò)誤。
通 過(guò)Oracle相關(guān)文檔了解到,此問(wèn)題可以通過(guò)在數(shù)據(jù)庫(kù)參數(shù)文件中加 入“_shared_io_pool_size=
備份并修改當(dāng)前Oracle 數(shù)據(jù)庫(kù)spfile 文件,登錄Oracle數(shù)據(jù)庫(kù)并使用命令”create pfile=‘/home/oracle’ from spfile”,用戶即可在用戶目錄下生成一個(gè)可以啟動(dòng)Oracle 的pfile文件。
通過(guò)編輯器編輯該文件并加入如下內(nèi)容:*._shared_io_pool_size=536870912。
其 中,“536870912”代表的值可以通過(guò)將數(shù)據(jù)庫(kù)啟動(dòng)到nomount 狀態(tài)下,使用命 令“select bytes from v$sgainfo where name like'Granule Size';”進(jìn)行查看,用戶可根據(jù)實(shí)際情況進(jìn)行修改。
圖1 Oracle 的trace 文件錯(cuò)誤
之后用戶可以通過(guò)pfile 文件重新生成spfile文件并重啟數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)進(jìn)入穩(wěn)定運(yùn)行狀態(tài)。
在Solaris11 下 的 參數(shù)設(shè)置有別于其他類Unix系統(tǒng),安裝完Oracle12C 后因?yàn)榘凑諔?yīng)用要求,需要將SGA_TARGET 參數(shù)修改為210GB 大小,而修改后啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例時(shí)出現(xiàn)如圖2 所示錯(cuò)誤。
手工使用pfile 參數(shù)引導(dǎo)系統(tǒng)發(fā)現(xiàn)同樣報(bào)錯(cuò),經(jīng)過(guò)聯(lián)系Oracle 原廠工程師,確認(rèn)是系統(tǒng)共享內(nèi)存設(shè)置不當(dāng)引起的SGA 超限問(wèn)題,因此需要在操作系統(tǒng)中設(shè)置“shmmax”參數(shù),并要確?!皊hmmax”值大于SGA_TARGET 值范圍。
在Solaris11 下分別以root 用戶執(zhí)行如圖3 所示命令。
以O(shè)racle 用戶執(zhí)行如圖4 所示命令。
之后從新啟動(dòng)Oracle12C 雙節(jié)點(diǎn)RAC 數(shù)據(jù)庫(kù),系統(tǒng)正常運(yùn)行。
圖2 啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例時(shí)顯示錯(cuò)誤
圖3 在Solaris11 下以root 用戶執(zhí)行命令
圖4 以O(shè)racle 用戶執(zhí)行命令
從Oracle 12.2 數(shù)據(jù)庫(kù)開(kāi)始,創(chuàng)建完成的同一CDB容器數(shù)據(jù)庫(kù)中的各個(gè)PDB 字符集可以不同,這樣可以使數(shù)據(jù)庫(kù)字符集具有更好的擴(kuò)展性以及更適合應(yīng)用系統(tǒng)的多語(yǔ)言環(huán)境部署。
通常,創(chuàng)建CDB 會(huì)默認(rèn)選擇“AL32UTF8”字符集,之后可以通過(guò)命令方式將該字符集所包含的子集字符集修改為PDB 數(shù)據(jù)庫(kù)字符集,但是修改過(guò)程需要用戶進(jìn)行手工完成。
以下就以將PDB 數(shù)據(jù)庫(kù)字符集修改為“zhs16gbk”為例,過(guò)程如下:
1.關(guān)閉數(shù)據(jù)庫(kù)并將數(shù)據(jù)庫(kù)啟動(dòng)到mount 狀態(tài),并使用“alter system enable restricted session;”命令,將數(shù)據(jù)庫(kù)設(shè)置為受限訪問(wèn)模式。
同時(shí)使用“alter system set job_queue_processes=0;”“altersystemsetaq_tm_processes=0;”命令,禁止數(shù)據(jù)庫(kù)啟動(dòng)后臺(tái)定時(shí)任務(wù)作業(yè)。
2.使用“alterdatabase open;”命令,將數(shù)據(jù)庫(kù)在受限方式下打開(kāi)。通過(guò)以上操作保證數(shù)據(jù)庫(kù)對(duì)外服務(wù)禁止。
3.使用“alterpluggable database zhaq open RESTRICTED;”命令,以限制方式打開(kāi)插拔數(shù)據(jù)庫(kù)(本例中插拔數(shù)據(jù)庫(kù)名為“zhaq”,用戶應(yīng)根據(jù)實(shí)際進(jìn)行修改),準(zhǔn)備進(jìn)行該插拔數(shù)據(jù)庫(kù)字符集修改。
4.使用“alter session set container=zhaq;”命令,將會(huì)話切換到插拔數(shù)據(jù)庫(kù)中,使用“alter database character set internal_use zhs16gbk;”命令,對(duì)該插拔數(shù)據(jù)庫(kù)字符集進(jìn)行修改。
在完成后恢復(fù)數(shù)據(jù)庫(kù)到正常模式,同時(shí)可執(zhí)行以下命令:
激活后臺(tái)定時(shí)任務(wù)作業(yè),“job_queue_processes”參數(shù)值用戶應(yīng)根據(jù)自己系統(tǒng)環(huán)境進(jìn)行修改。
1.Oracle12c 安裝后,在密碼管理中依然延續(xù)了默認(rèn)180 天失效的策略,但多數(shù)情況下,這一設(shè)置反而給用戶以及應(yīng)用系統(tǒng)帶了不必要的麻煩。
用戶可以通過(guò)修改密碼配置文件將該參數(shù)設(shè)置為永不過(guò)期,需要注意的是在Oracle12C 中需要分別執(zhí)行以下兩條語(yǔ)句:
然后進(jìn)行該參數(shù)的修改,同時(shí)分別執(zhí)行以下兩條語(yǔ)句:
2.使用“altersystemsetdb_recovery_file_dest='+data'scope=spfile;”命令,將回閃區(qū)目錄指定給ASM 進(jìn)行管理。
3.Oracle12C 安裝完成后,默認(rèn)情況下和低版本Oracle 數(shù)據(jù)庫(kù)RDBMS 進(jìn)行數(shù)據(jù)交互時(shí),會(huì)出現(xiàn)兼容性問(wèn)題。
因此生產(chǎn)系統(tǒng)中應(yīng)修改Oracle12C 版本兼容參數(shù)來(lái)滿足系統(tǒng)兼容性,通過(guò)使用“vi $ORACLE_HOME/network/admin/sqlnet.ora”命令,編輯該文件,并添加如下的內(nèi)容:
操作完成后,Oracle12C即可與其他低版本Oracle數(shù)據(jù)庫(kù)系統(tǒng)完成正常的數(shù)據(jù)交互。
系統(tǒng)集成作為很多較大信息系統(tǒng)建設(shè)項(xiàng)目的重要組成部分,其過(guò)程具有更多的工程化的特點(diǎn),系統(tǒng)組件間的搭配和組裝,耦合部分的嵌套與裝配,都需要很多耐心來(lái)打磨和仔細(xì)地調(diào)試。尤其是應(yīng)用于高可靠、高可用、高安全性環(huán)境下的系統(tǒng)集成更是如此,在系統(tǒng)集成過(guò)程中更需要人們的良好協(xié)作和溝通。