概述
Oracle是一個(gè)最早商品化的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。是數(shù)據(jù)庫(kù)專(zhuān)業(yè)廠商O(píng)racle的核心產(chǎn)品。也是當(dāng)前應(yīng)用最為廣泛、功能最強(qiáng)大、具有面向?qū)ο筇攸c(diǎn)、采用客戶(hù)機(jī)/服務(wù)器架構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)。
作為一個(gè)通用的數(shù)據(jù)庫(kù)管理系統(tǒng),Oracle具有完整的數(shù)據(jù)管理功能,這些功能包括存儲(chǔ)大量數(shù)據(jù)、定義和操作數(shù)據(jù)、并發(fā)控制、安全性控制、完整性控制、故障恢復(fù)、與高級(jí)語(yǔ)言接口等。Oracle還是一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng),支持各種分布式功能,特別是支持Internet應(yīng)用。作為一個(gè)應(yīng)用開(kāi)發(fā)環(huán)境,Oracle提供了一套界面友好、功能齊全的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,使用戶(hù)擁有一個(gè)良好的應(yīng)用開(kāi)發(fā)環(huán)境。Oracle使用PL/SQL語(yǔ)言執(zhí)行各種操作,具有可開(kāi)放性、可移植性、靈活性等特點(diǎn)。特別是,Oracle支持面向?qū)ο蟮墓δ?,如支持?lèi)、方法、屬性等概念,使得Oracle 產(chǎn)品成為一種對(duì)象/關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。
對(duì)于數(shù)據(jù)庫(kù)管理員來(lái)說(shuō),工作中的壓力是巨大的,因?yàn)槌巳粘5木薮蠊ぷ髁客?,還需要面對(duì)各種負(fù)責(zé)問(wèn)題的突然發(fā)生。當(dāng)問(wèn)題發(fā)生之后,需要立即對(duì)發(fā)生的問(wèn)題進(jìn)行分析,然后采取相對(duì)優(yōu)化的措施來(lái)解決這些突如其來(lái)的問(wèn)題。這些工作的順利完成離不開(kāi)應(yīng)用監(jiān)控軟件的支持。應(yīng)用監(jiān)控軟件可以幫助數(shù)據(jù)庫(kù)管理員收集數(shù)據(jù)庫(kù)、操作系統(tǒng)的數(shù)據(jù),并且以圖形化的方式顯示這些數(shù)據(jù)的內(nèi)容。
借助摩卡業(yè)務(wù)服務(wù)管理( Mocha Business Service Management,簡(jiǎn)稱(chēng)Mocha BSM)的應(yīng)用監(jiān)控模塊,可針對(duì)Oracle數(shù)據(jù)庫(kù)提供可視化監(jiān)控、故障定位、統(tǒng)計(jì)報(bào)告等功能。
摩卡軟件具有近十年Oracle系統(tǒng)管理、相關(guān)開(kāi)發(fā)和維護(hù)的經(jīng)驗(yàn),提供最具管理價(jià)值的指標(biāo),細(xì)化到每一個(gè)應(yīng)用元素的監(jiān)控,從根本上關(guān)注Oracle的運(yùn)行狀態(tài)。以自動(dòng)化的方式將Oracle進(jìn)行監(jiān)管,實(shí)現(xiàn)平臺(tái)級(jí)故障預(yù)警、性能預(yù)警、配置變更預(yù)警等功能。使管理員可以輕松、快捷的分析問(wèn)題和采取相應(yīng)的解決措施。
對(duì)Oracle DB進(jìn)行性能調(diào)整
下面我們就舉例說(shuō)明在Mocha BSM的幫助下通過(guò)調(diào)整共享池提升Oracle DB的性能:
調(diào)整共享池主要包括三個(gè)方面:庫(kù)高速、數(shù)據(jù)字典緩存、對(duì)話(huà)信息。由于Oracle管理共享池中數(shù)據(jù)的算法,使得數(shù)據(jù)字典緩存中的數(shù)據(jù)比庫(kù)高速緩存中的數(shù)據(jù)在內(nèi)存中存留的時(shí)間長(zhǎng),因此,只要把庫(kù)高速緩存調(diào)整成可以接受的命中率,就能提高數(shù)據(jù)字典緩存的命中率。
一般來(lái)說(shuō),庫(kù)高速緩存總不命中數(shù)與總存取數(shù)之比應(yīng)當(dāng)接近零,如命中率值為0.001%,說(shuō)明庫(kù)高速緩存命中率很高,該比率如果接近或大于5%,就應(yīng)當(dāng)立即采取措施來(lái)減少這種不命中。
措施一:增加初始化參數(shù)shared_pool_size的值,提高庫(kù)高速緩存可用的內(nèi)存數(shù)量,同時(shí)為了取得好的效果,可能還要增加初始化參數(shù)open_cursors的值,以提高對(duì)話(huà)允許的光標(biāo)數(shù)。需要注意的是:為庫(kù)高速緩存分配了太多的內(nèi)存可能引起調(diào)頁(yè)或交換。
措施二:寫(xiě)等價(jià)的SQL語(yǔ)句,盡可能讓SQL語(yǔ)句和PL/SQL塊共享一個(gè)SQL區(qū),來(lái)減少庫(kù)高速緩存的不命中。這是應(yīng)用設(shè)計(jì)人員應(yīng)該做到的:SQL語(yǔ)句或PL/SQL塊的文本必須每一個(gè)字符都等價(jià),包括大小寫(xiě)和空格。
通常手工檢查命中率的方法
檢查、調(diào)整庫(kù)高速緩存 可以通過(guò)動(dòng)態(tài)性能表V$LIBRARYCACHE來(lái)查詢(xún)Instance啟動(dòng)以來(lái)所有庫(kù)高速緩存的活動(dòng)。
V$LIBRARYCACHE表中以下幾列反映了庫(kù)高速緩存在執(zhí)行調(diào)用階段的不命中:
PINS列,它的值顯示在庫(kù)高速緩存中執(zhí)行的次數(shù);
RELOADS列,它的值顯示在執(zhí)行階段庫(kù)高速緩存不命中的數(shù)目。
檢查命中率
借助Mocha BSM對(duì)Oracle DB的60多個(gè)性能監(jiān)控指標(biāo)之一:庫(kù)緩存命中率,您可以直觀的看到當(dāng)前的Oracle DB的庫(kù)緩存命中率為97.79%(如下圖),并且根據(jù)您的需要,還可以對(duì)庫(kù)緩存命中率設(shè)置報(bào)警閾值,一旦被監(jiān)控的Oracle DB的庫(kù)緩存命中率超過(guò)設(shè)定的閾值,Mocha BSM將立即給數(shù)據(jù)庫(kù)管理員發(fā)出報(bào)警(方式包括:郵件、短信、電話(huà)、桌面聲光)。


