Oracle10g數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方法研究_第1頁(yè)
Oracle10g數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方法研究_第2頁(yè)
Oracle10g數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方法研究_第3頁(yè)
Oracle10g數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方法研究_第4頁(yè)
Oracle10g數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方法研究_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、內(nèi)容摘要:數(shù)據(jù)庫(kù)系統(tǒng)統(tǒng)的性能最終了決定數(shù)據(jù)庫(kù)的可可用性和生命力。大大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)統(tǒng)在運(yùn)行一段時(shí)間間后都會(huì)存在一定定的性能問(wèn)題,主主要涉及數(shù)據(jù)庫(kù)硬硬件、數(shù)據(jù)庫(kù)服務(wù)務(wù)器、數(shù)據(jù)庫(kù)內(nèi)存存、應(yīng)用程序、操操作系統(tǒng)、數(shù)據(jù)庫(kù)庫(kù)參數(shù)等方面。因因此,基于數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)的性能調(diào)整整與優(yōu)化對(duì)于整個(gè)個(gè)系統(tǒng)的正常運(yùn)行行起著至關(guān)重要的的作用。數(shù)據(jù)庫(kù)性性能調(diào)整與優(yōu)化涉涉及到多個(gè)層面,通通過(guò)統(tǒng)一規(guī)劃、系系統(tǒng)分析做出相應(yīng)應(yīng)的調(diào)整,可以提提高數(shù)據(jù)庫(kù)的穩(wěn)定定性和可用性,保保障系統(tǒng)高效地運(yùn)運(yùn)行,解決系統(tǒng)瓶瓶頸,節(jié)約系統(tǒng)開(kāi)開(kāi)銷(xiāo),具有良好的的應(yīng)用價(jià)值,同時(shí)時(shí)也對(duì)理論研究提提供了一定的方法法指導(dǎo)?;诖?,論文將Oracle 10g數(shù)據(jù)庫(kù)的內(nèi)

2、內(nèi)存分配、磁盤(pán)I/O以及SQL語(yǔ)語(yǔ)句等方面的性能能調(diào)整與優(yōu)化問(wèn)題題作為主要研究?jī)?nèi)內(nèi)容,對(duì)其進(jìn)行了了深入地分析和討討論,給出了一般般情況下Oracle數(shù)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的的性能調(diào)整策略及及優(yōu)化方法。關(guān)鍵詞:Oracle 10g 數(shù)據(jù)庫(kù);體系結(jié)構(gòu)構(gòu);系統(tǒng)全局區(qū);性能調(diào)整與優(yōu)化化E。 AbstractAbstract: The performance of database systems eventually determines their availability and survivability. Most of them will bring about some performance

3、problems more or less after running for a period of time, which mainly involve database hardware, database server, database memory, applications, operating systems and database parameters, etc. Therefore,performance tuning and optimization of database systems,which concern multiple aspects, are very

4、 vital to the normal running of the whole system. We can improve the stability and availability of database, guarantee its high running efficiency, solve system bottleneck, reduce system overhead, obtain considerable applicability and in them meanwhile, provide some guidelines for theoretical resear

5、ch through a unified plan and systematical analysis to make appropriate adjustment.7。Based on the above-mentioned idea, the paper principally pays attention to the research on the performance tuning and optimization problems of memory allocation of Oracle 10g, disc I/O, SQL statements, etc, and make

6、s a further analysis and discuss. Besides, it provides some performance tuning strategies and optimization approaches of Oracle application system in general condition. 7。Key Words: Oracle 10g Database不不Architecture不System Global Area不 Adjustment and Optimization of Performanceq。1 導(dǎo)言網(wǎng)格技術(shù)是本世紀(jì)初最最新和最有吸

7、引力力的技術(shù)之一,數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng)作作為信息系統(tǒng)的基基本支撐在信息化化建設(shè)中扮演著重重要的要色。目前前的Oracle 10g數(shù)據(jù)庫(kù)是業(yè)業(yè)界首個(gè)為網(wǎng)格計(jì)計(jì)算而設(shè)計(jì)的數(shù)據(jù)據(jù)庫(kù),是一種高效效率、可靠性好的適應(yīng)應(yīng)高吞吐量的數(shù)據(jù)據(jù)庫(kù)解決方案,該該方案可讓客戶將將多臺(tái)標(biāo)準(zhǔn)服務(wù)器器系統(tǒng)整合成一套套可擴(kuò)充的容錯(cuò)運(yùn)運(yùn)算平臺(tái)。然而,隨著數(shù)據(jù)庫(kù)規(guī)模模的擴(kuò)大及用戶數(shù)數(shù)量的增加,數(shù)據(jù)據(jù)庫(kù)應(yīng)用系統(tǒng)的響響應(yīng)速度下降,性性能問(wèn)題越來(lái)越突突出。y。Oracle 10g數(shù)據(jù)庫(kù)系統(tǒng)統(tǒng)體系結(jié)構(gòu)龐大、技術(shù)細(xì)節(jié)繁雜,如如何合理有效地建建立基于Oracle的數(shù)數(shù)據(jù)庫(kù)系統(tǒng)及如何何調(diào)整使系統(tǒng)性能能達(dá)到最優(yōu),成為為Oracle數(shù)據(jù)據(jù)庫(kù)應(yīng)用領(lǐng)域的

8、熱熱點(diǎn)問(wèn)題。本課題題通過(guò)對(duì)Oracle 10g數(shù)據(jù)庫(kù)系統(tǒng)統(tǒng)的深入分析,設(shè)設(shè)計(jì)一套完整的Oracle數(shù)據(jù)據(jù)性能評(píng)測(cè)指標(biāo)和和方法,并針對(duì)發(fā)發(fā)現(xiàn)的性能問(wèn)題制制定相應(yīng)的性能優(yōu)優(yōu)化策略。T。 2 Oracle 10g體系結(jié)構(gòu)Oracle數(shù)據(jù)管理理系統(tǒng)是Oracle實(shí)例例(Instance)和Oracle數(shù)據(jù)庫(kù)構(gòu)成的。下面是Oracle 10g數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)圖:m。圖1 Oracle 10g數(shù)據(jù)庫(kù)體系系結(jié)構(gòu)2.1 ORACLE實(shí)例例Oracle 實(shí)例包包括系統(tǒng)全局共享享區(qū)System Global Are 和后臺(tái)進(jìn)程Background Process。O。2.1.1 系統(tǒng)全全局共享區(qū)System Gl

9、obal Area(SGA)L。System Global Area 是一一塊巨大的共享內(nèi)內(nèi)存區(qū)域,他被看看做是Oracle 數(shù)數(shù)據(jù)庫(kù)的一個(gè)大緩緩沖池,這里的數(shù)數(shù)據(jù)可以被ORACLE的各各個(gè)進(jìn)程共用1。其大小可以通通過(guò)如下語(yǔ)句查看看:r。SQL select * from v$sga;NAME VALUE- -Fixed Size 39816Variable Size Database Buffers 1.049E+09Redo Buffers 主要包括以下幾個(gè)部分分: 共共享池(Shared pool)共享池是SGA中最關(guān)關(guān)鍵的內(nèi)存片段,特特別是在性能和可可伸縮性上。一個(gè)個(gè)太小的共享池會(huì)會(huì)扼

10、殺性能,使系系統(tǒng)停止,太大的的共享池也會(huì)有同同樣的效果,將會(huì)會(huì)消耗大量的CPU來(lái)來(lái)管理這個(gè)共享池池。不正確的使用用共享池只會(huì)帶來(lái)來(lái)災(zāi)難。共享池主主要又可以分為以以下兩個(gè)部分:8。(1)SQL語(yǔ)句緩沖沖(Library Cache)當(dāng)一個(gè)用戶提交一個(gè)SQL語(yǔ)語(yǔ)句,Oracle會(huì)將將這句SQL進(jìn)行行分析(parse),這個(gè)過(guò)程類似似于編譯,會(huì)耗費(fèi)費(fèi)相對(duì)較多的時(shí)間間。在分析完這個(gè)個(gè)SQL,Oracle會(huì)把把他的分析結(jié)果給給保存在Shared pool的Library Cache中,當(dāng)當(dāng)數(shù)據(jù)庫(kù)第二次執(zhí)執(zhí)行該SQL時(shí),Oracle自動(dòng)跳過(guò)這個(gè)分析過(guò)程,從而減少了系統(tǒng)運(yùn)行的時(shí)間。這也是為什么第一次運(yùn)行的S

11、QL 比第二次運(yùn)行的SQL要慢一點(diǎn)的原因。7。下面舉例說(shuō)明parse的的時(shí)間SQL select count(*) fromscpass ;K。COUNT(*)-243Elapsed: 00:00:00.08這是在Share_pool 和Data buffer 都沒(méi)有數(shù)據(jù)緩沖沖區(qū)的情況下所用用的時(shí)間9。SQL alter system flush SHARED_POOL;7。System altered.清空Share_pool,保保留Data bufferSQL select count(*) from scpass ;8。COUNT(*)-243Elapsed: 00:00:00.02SQ

12、L select count(*) from scpass ;8。COUNT(*)-243Elapsed: 00:00:00.00從兩句SQL 的時(shí)間間差上可以看出該該SQL 的Parse 時(shí)間約為00:00:00.02。O。對(duì)于保存在共享池中的的SQL語(yǔ)句,可可以從V$Sqltext、v$Sqlarea中中查詢到,對(duì)于編編程者來(lái)說(shuō),要盡盡量提高語(yǔ)句的重重用率,減少語(yǔ)句句的分析時(shí)間。一一個(gè)設(shè)計(jì)的差的應(yīng)應(yīng)用程序可以毀掉掉整個(gè)數(shù)據(jù)庫(kù)的Share pool,提高高SQL語(yǔ)句的重重用率必須先養(yǎng)成成良好的變成習(xí)慣慣,盡量使用Bind變變量。X。(2)數(shù)據(jù)字典緩沖區(qū)區(qū)(Data Dictionary Ca

13、che)r。顯而易見(jiàn),數(shù)據(jù)字典緩緩沖區(qū)是ORACLE特地地為數(shù)據(jù)字典準(zhǔn)備備的一塊緩沖池,供供ORACLE內(nèi)部部使用。 1。 塊塊緩沖區(qū)高速緩存存(Database Buffer Cache)i。這些緩沖是對(duì)應(yīng)所有數(shù)數(shù)據(jù)文件中的一些些被使用到的數(shù)據(jù)據(jù)塊。讓他們能夠夠在內(nèi)存中進(jìn)行操操作。在這個(gè)級(jí)別別里沒(méi)有系統(tǒng)文件件,戶數(shù)據(jù)文件,臨臨時(shí)數(shù)據(jù)文件,回回滾段文件之分。也也就是任何文件的的數(shù)據(jù)塊都有可能能被緩沖。數(shù)據(jù)庫(kù)庫(kù)的任何修改都在在該緩沖里完成,并并由DBWR進(jìn)程程將修改后的數(shù)據(jù)據(jù)寫(xiě)入磁盤(pán)2。F。這個(gè)緩沖區(qū)的塊基本上上在兩個(gè)不同的列列表中管理。一個(gè)個(gè)是塊的“臟”表表(Dirty List),需需要用數(shù)

14、據(jù)庫(kù)塊的的書(shū)寫(xiě)器(DBWR)來(lái)寫(xiě)入,另外一一個(gè)是不臟的塊的的列表(Free List),一一般的情況下,是是使用最近最少使使用 (Least Recently Used,LRU)算法來(lái)管理。塊塊緩沖區(qū)高速緩存存又可以細(xì)分為以以下三個(gè)部分(Default pool,Keep pool,Recycle pool)。如如果不是人為設(shè)置置初始化參數(shù)(Init.ora),ORACLE將默默認(rèn)為Default pool。由于于操作系統(tǒng)尋址能能力的限制,不通通過(guò)特殊設(shè)置,在在32位的系統(tǒng)上上,塊緩沖區(qū)高速速緩存最大可以達(dá)達(dá)到1.7G,在64位位系統(tǒng)上,塊緩沖沖區(qū)高速緩存最大大可以達(dá)到10G。a。 重重做日志

15、緩沖區(qū)(Redo log buffer)8。重做日志文件的緩沖區(qū)區(qū),對(duì)數(shù)據(jù)庫(kù)的任任何修改都按順序序被記錄在該緩沖沖,然后由LGWR進(jìn)進(jìn)程將它寫(xiě)入磁盤(pán)盤(pán)。這些修改信息息可能是DML語(yǔ)語(yǔ)句,如(Insert,Update,Delete),或DDL語(yǔ)句句,如(Create,Alter,Drop等等)。 重做日志志緩沖區(qū)的存在是是因?yàn)閮?nèi)存到內(nèi)存存的操作比較內(nèi)存存到硬盤(pán)的速度快快很多,所以重作作日志緩沖區(qū)可以以加快數(shù)據(jù)庫(kù)的操操作速度,但是考考慮的數(shù)據(jù)庫(kù)的一一致性與可恢復(fù)性性,數(shù)據(jù)在重做日日志緩沖區(qū)中的滯滯留時(shí)間不會(huì)很長(zhǎng)長(zhǎng)。所以重作日志志緩沖區(qū)一般都很很小,大于3M之后的重作日日志緩沖區(qū)已經(jīng)沒(méi)沒(méi)有太大的實(shí)

16、際意意義。C。 Java程程序緩沖區(qū)(Java Pool)Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對(duì)Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒(méi)有必要改變?cè)摼彌_區(qū)的默認(rèn)大小。F。 大大池(Large Pool)大池的得名不是因?yàn)榇蟠?,而是因?yàn)樗糜脕?lái)分配大塊的內(nèi)內(nèi)存,處理比共享享池更大的內(nèi)存,下下面對(duì)象使用大池池:O。MTS在SGA的的Large Pool中中分配UGA。語(yǔ)句的并行查詢(Parallel Execution of Statements)允許進(jìn)程間消息緩沖區(qū)的分配,用來(lái)協(xié)調(diào)并行查詢服務(wù)器。a。備份(Backup)

17、用于RMAN磁磁盤(pán)I/O緩存。2.1.2 后臺(tái)進(jìn)進(jìn)程(Background process)q。后臺(tái)進(jìn)程是Oracle的程程序,用來(lái)管理數(shù)數(shù)據(jù)庫(kù)的讀寫(xiě),恢恢復(fù)和監(jiān)視等工作作。Server Process主主要是通過(guò)他和user process進(jìn)進(jìn)行聯(lián)系和溝通,并并由他和user process進(jìn)進(jìn)行數(shù)據(jù)的交換。在在Unix機(jī)器上上,Oracle后臺(tái)臺(tái)進(jìn)程相對(duì)于操作作系統(tǒng)進(jìn)程,也就就是說(shuō),一個(gè)Oracle后臺(tái)臺(tái)進(jìn)程將啟動(dòng)一個(gè)個(gè)操作系統(tǒng)進(jìn)程;在Windows機(jī)機(jī)器上, Oracle后臺(tái)臺(tái)進(jìn)程相對(duì)于操作作系統(tǒng)線程,打開(kāi)開(kāi)任務(wù)管理器,我我們只能看到一個(gè)個(gè)ORACLE.EXE的的進(jìn)程,但是通過(guò)過(guò)另外的工

18、具,就就可以看到包含在在這里進(jìn)程中的線線程。I。在Unix上可以通過(guò)過(guò)如下方法查看后后臺(tái)進(jìn)程:ps ef | grep ora_# ps -ef | grep ora_ | grep XCLUATS。Oracle 29431 1 0 Sep 022:02 ora_dbwr_SIDa。Oracle 29444 1 0 Sep 020:03 ora_ckpt_SIDb。Oracle 29448 1 0 Sep 022:42 ora_smon_SIDV。Oracle 29442 1 0 Sep 023:25 ora_lgwr_SIDL。Oracle 29427 1 0 Sep 020:01 ora_

19、pmon_SIDY。 Oracle系統(tǒng)統(tǒng)有5個(gè)基本進(jìn)程他們們是:DBWR(數(shù)據(jù)文件寫(xiě)寫(xiě)入進(jìn)程)LGWR(日志文件件寫(xiě)入進(jìn)程)SMON(系統(tǒng)監(jiān)護(hù)進(jìn)進(jìn)程)PMON(用戶進(jìn)程程監(jiān)護(hù)進(jìn)程)CKPT(檢查點(diǎn)進(jìn)程程,同步數(shù)據(jù)文件件,日志文件,控制文件)(1)DBWR(Database Writer 數(shù)據(jù)寫(xiě)入進(jìn)程程)2。將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫(xiě)寫(xiě)入數(shù)據(jù)文件,是是負(fù)責(zé)數(shù)據(jù)緩沖區(qū)區(qū)管理的一個(gè)后臺(tái)臺(tái)進(jìn)程。當(dāng)數(shù)據(jù)緩緩沖區(qū)中的一數(shù)據(jù)據(jù)被修改后,就標(biāo)標(biāo)記為dirty,DBWR進(jìn)進(jìn)程將數(shù)據(jù)緩沖區(qū)區(qū)中“臟”數(shù)據(jù)據(jù)寫(xiě)入數(shù)據(jù)文件,保保持?jǐn)?shù)據(jù)緩沖區(qū)的的“干凈”。由于數(shù)據(jù)緩沖區(qū)區(qū)的數(shù)據(jù)被用戶修修改并占用,空閑閑數(shù)據(jù)緩沖區(qū)會(huì)不不斷減少,

20、當(dāng)用戶戶進(jìn)程要從磁盤(pán)讀讀取數(shù)據(jù)塊到數(shù)據(jù)據(jù)緩沖區(qū)卻無(wú)法找找到足夠的空閑數(shù)數(shù)據(jù)緩沖區(qū)時(shí),DBWR將將數(shù)據(jù)緩沖區(qū)內(nèi)容容寫(xiě)入磁盤(pán),使用用戶進(jìn)程總可以得得到足夠的空閑數(shù)數(shù)據(jù)緩沖區(qū)。DBWR的的作用:s。管理數(shù)據(jù)緩沖區(qū),以以便用戶進(jìn)程總能能夠找到足夠的空空閑緩沖區(qū)。將所有修改后的緩沖沖區(qū)數(shù)據(jù)寫(xiě)入數(shù)據(jù)據(jù)文件。使用LRU(最近最最少使用)算法保保持緩沖區(qū)數(shù)據(jù)是是最近經(jīng)常使用的的。l。通過(guò)延遲寫(xiě)來(lái)優(yōu)化磁磁盤(pán)I/O讀寫(xiě)。(2)LGWR(Log Writer 日志寫(xiě)入進(jìn)程)將日志數(shù)據(jù)從日志緩沖沖區(qū)寫(xiě)入磁盤(pán)日志志文件組。數(shù)據(jù)庫(kù)庫(kù)在運(yùn)行時(shí),如果果對(duì)數(shù)據(jù)庫(kù)進(jìn)行修修改則產(chǎn)生日志信信息,日志信息首首先產(chǎn)生于日志緩緩沖區(qū)。當(dāng)日

21、志達(dá)達(dá)到一定數(shù)量時(shí),由由LGWR將日志數(shù)據(jù)寫(xiě)入入到日志文件組,再再經(jīng)過(guò)日志切換, 由歸檔進(jìn)程(ARCH)將將日志數(shù)據(jù)寫(xiě)入歸歸檔進(jìn)程(前提是是數(shù)據(jù)庫(kù)運(yùn)行在歸歸檔模式下)。數(shù)數(shù)據(jù)庫(kù)遵循寫(xiě)日志志優(yōu)先原則,即在在寫(xiě)數(shù)據(jù)之前先寫(xiě)寫(xiě)日志。K。(3)SMON工作主要包含:清除臨時(shí)空間在系統(tǒng)啟動(dòng)時(shí),完成系系統(tǒng)實(shí)例恢復(fù)聚結(jié)空閑空間從不可用的文件中恢復(fù)復(fù)事務(wù)的活動(dòng)OPS中失敗節(jié)點(diǎn)的實(shí)實(shí)例恢復(fù)清除OBJ$表縮減回滾段使回滾段脫機(jī)(4)PMON主要用于清除失效的用用戶進(jìn)程,釋放用用戶進(jìn)程所用的資資源。如PMON將將回滾未提交的工工作,釋放鎖,釋釋放分配給失敗進(jìn)進(jìn)程的SGA資源源。S。(5)CKPT同步數(shù)據(jù)文件,日志文

22、文件和控制文件,由由于DBWR/LGWR的的工作原理,造成成了數(shù)據(jù)文件,日日志文件,控制文文件的不一至,這這就需要CKPT進(jìn)進(jìn)程來(lái)同步。CKPT會(huì)會(huì)更新數(shù)據(jù)文件/控制文件的頭信信息。Q。CKPT工作的主要條條件如下:a.在日志切換的時(shí)候候。b.數(shù)據(jù)庫(kù)用Immediate ,Transaction , Normal 選選項(xiàng)Shutdown 數(shù)據(jù)庫(kù)的時(shí)候。Q。c.根據(jù)初始化文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET、的設(shè)置數(shù)值來(lái)確定。j。d.用戶觸發(fā)。 以以下進(jìn)程的啟動(dòng)需需要手工配置(1)ARCH當(dāng)數(shù)據(jù)

23、庫(kù)以歸檔方式運(yùn)運(yùn)行的時(shí)候,Oracle會(huì)啟啟動(dòng)ARCH進(jìn)程程,當(dāng)重做日志文文件被寫(xiě)滿時(shí),日日志文件進(jìn)行切換換,舊的重做日志志文件就被ARCH進(jìn)進(jìn)程復(fù)制到一個(gè)/多個(gè)特定的目錄錄/遠(yuǎn)程機(jī)器。這這些被復(fù)制的重做做日志文件被叫做做歸檔日志文件。3。(2)RECO負(fù)責(zé)解決分布事物中的的故障。Oracle可以以連接遠(yuǎn)程的多個(gè)個(gè)數(shù)據(jù)庫(kù),當(dāng)由于于網(wǎng)絡(luò)問(wèn)題,有些些事物處于懸而未未決的狀態(tài)。RECO進(jìn)進(jìn)程試圖建立與遠(yuǎn)遠(yuǎn)程服務(wù)器的通信信,當(dāng)故障消除后后,RECO進(jìn)程程自動(dòng)解決所有懸懸而未決的會(huì)話。x。(3)服務(wù)進(jìn)程Server Process服務(wù)進(jìn)程的分類:專用服務(wù)進(jìn)程(Dedicated Server Proce

24、ss)E。一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)個(gè)用戶進(jìn)程共享服務(wù)進(jìn)程(MultiTreaded Server Process)6。一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)多個(gè)個(gè)用戶進(jìn)程,輪流流為用戶進(jìn)程服務(wù)務(wù)。PGA & UGAPGA = Process Global AreaUGA = User Global Area他保存了用戶的變量、權(quán)限、堆棧、排排序空間等用戶信信息,對(duì)于專用服服務(wù)器進(jìn)程,UGA在在PGA中分配。對(duì)對(duì)于多線程進(jìn)程,UGA在在Large pool中中分配。h。(4)用戶進(jìn)程User Process在客戶端,將用戶的SQL 語(yǔ)句傳遞給服務(wù)務(wù)進(jìn)程2.2 ORACLE 數(shù)數(shù)據(jù)庫(kù)ORACLE數(shù)據(jù)庫(kù)的的組成物理操操作系統(tǒng)

25、文件的集集合。主要包括以以下幾種。X。2.2.1 控制文文件(參數(shù)文件init.ora記記錄了控制文件的的位置)E??刂莆募ㄈ缦轮饕畔ⅲ簲?shù)據(jù)庫(kù)的名字,檢檢查點(diǎn)信息,數(shù)據(jù)據(jù)庫(kù)創(chuàng)建的時(shí)間戳戳,所有的數(shù)據(jù)文件件,聯(lián)機(jī)日志文件件,歸檔日志文件件信息,備份信息等。0。有了這些信息,Oracle就知知道那些文件是數(shù)數(shù)據(jù)文件,現(xiàn)在的的重做日志文件是是哪些,這些都是是系統(tǒng)啟動(dòng)和運(yùn)行行的基本條件,所所以他是Oracle運(yùn)行行的根本。如果沒(méi)沒(méi)有控制文件系統(tǒng)統(tǒng)是不可能啟動(dòng)的的。控制文件是非非常重要的,一般般采用多個(gè)鏡相復(fù)復(fù)制來(lái)保護(hù)控制文文件,或采用RAID來(lái)來(lái)保護(hù)控制文件。控控制文件的丟失,將將使數(shù)據(jù)庫(kù)的恢

26、復(fù)復(fù)變的很復(fù)雜。控控制文件信息可以以從V$Controlfile中查詢獲得。b。2.2.2 數(shù)據(jù)文文件(數(shù)據(jù)文件的的詳細(xì)信息記載在在控制文件中)可以通過(guò)如下方式查看看數(shù)據(jù)文件SQL select name from v$datafile;p。NAME-d。/u05/dbf/PROD/system_01.dbf/u06/dbf/PROD/temp_01.dbf/u04/dbf/PROD/users_01.dbf/u09/dbf/PROD/rbs_01.dbf/u06/dbf/PROD/applsys_indx_01.dbfq。/u05/dbf/PROD/applsys_data_01.dbfc。

27、從以上可以看出,數(shù)據(jù)據(jù)文件大致可以分分為以下幾類: 系系統(tǒng)數(shù)據(jù)文件(system_01.dbf)存放系統(tǒng)表和數(shù)據(jù)字典典,一般不放用戶戶的數(shù)據(jù),但是用用戶腳本,如過(guò)程程,函數(shù),包等卻卻是保存在數(shù)據(jù)字字典中的。(數(shù)據(jù)字典是一些些系統(tǒng)表或視圖,他他存放系統(tǒng)的信息息,他包括數(shù)據(jù)庫(kù)庫(kù)版本,數(shù)據(jù)文件件信息,表與索引引等段信息,系統(tǒng)統(tǒng)的運(yùn)行狀態(tài)等各各種和系統(tǒng)有關(guān)的的信息和用戶腳本本信息。數(shù)據(jù)庫(kù)管管理員可以通過(guò)對(duì)對(duì)數(shù)據(jù)字典的查詢?cè)?,就可以了解到到Oracle的運(yùn)運(yùn)行狀態(tài)。)0。 回回滾段文件(rbs_01.dbf)如果數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)據(jù)的修改,那么就就必須使用回滾段段,回滾段是用來(lái)來(lái)臨時(shí)存放修改前前的數(shù)據(jù)(B

28、efore Image)?;鼗貪L段通常都放在在一個(gè)單獨(dú)的表空空間上(回滾表空空間),避免表空空間碎片化,這個(gè)個(gè)表空間包含的數(shù)數(shù)據(jù)文件就是回滾滾數(shù)據(jù)文件。U。 臨臨時(shí)數(shù)據(jù)文件(temp_01.dbf)主要存放用戶的排序等等臨時(shí)數(shù)據(jù),與回回滾段相似,臨時(shí)時(shí)段也容易引起表表空間碎片化,而而且沒(méi)有辦法在一一個(gè)永久表空間上上開(kāi)辟臨時(shí)段,所所以就必須有一個(gè)個(gè)臨時(shí)表空間,它它所包含的數(shù)據(jù)文文件就是臨時(shí)數(shù)據(jù)據(jù)文件,主要用于于不能在內(nèi)存上進(jìn)進(jìn)行的排序操作。我我們必須為用戶指指定一個(gè)臨時(shí)表空空間。9。 用用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)u。存放用戶

29、數(shù)據(jù),這里列列舉了兩類常見(jiàn)的的用戶型數(shù)據(jù),一一般數(shù)據(jù)和索引數(shù)數(shù)據(jù),一般來(lái)說(shuō),如如果條件許可的話話,可以考慮放在在不同的磁盤(pán)上。5。2.2.3 重做日日志文件(聯(lián)機(jī)重重做日志)用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行的任任何操作都會(huì)記錄錄在重做日志文件件。在了解重做日日志之前必須了解解重做日志的兩個(gè)個(gè)概念,重做日志志組和重做日志組組成員(Member),一個(gè)數(shù)據(jù)庫(kù)中中至少要有兩個(gè)日日志組文件,一組組寫(xiě)完后再寫(xiě)另一一組,即輪流寫(xiě)。每每個(gè)日志組中至少少有一個(gè)日志成員員,一個(gè)日志組中中的多個(gè)日志成員員是鏡相關(guān)系,有有利于日志文件的的保護(hù),因?yàn)槿罩局疚募膿p壞,特特別是當(dāng)前聯(lián)機(jī)日日志的損壞,對(duì)數(shù)數(shù)據(jù)庫(kù)的影響是巨巨大的。u。聯(lián)機(jī)

30、日志組的交換過(guò)程程叫做切換,需要要特別注意的是,日日志切換在一個(gè)優(yōu)優(yōu)化效果不好的數(shù)數(shù)據(jù)庫(kù)中會(huì)引起臨臨時(shí)的“掛起”。通過(guò)v$log可可以查看日志組,v$logfile可可以查看具體的成成員文件。5。2.2.4 歸檔日日志文件Oracle可以運(yùn)行行在兩種模式之中中,歸檔模式和不不歸檔模式4。如果不用歸檔檔模式,當(dāng)然,就就不會(huì)有歸檔日志志,但是,系統(tǒng)將將不會(huì)是一個(gè)實(shí)用用系統(tǒng),特別是不不能用于生產(chǎn)系統(tǒng)統(tǒng),因?yàn)榇讼到y(tǒng)可能會(huì)丟失失數(shù)據(jù)。但是在歸歸檔模式中,為了了保存用戶的所有有修改,在重做日日志文件切換后和和被覆蓋之間系統(tǒng)統(tǒng)將他們另外保存存成一組連續(xù)的文文件系列,該文件件系列就是歸檔日日志文件。u。有人或

31、許會(huì)說(shuō),歸檔日日志文件占領(lǐng)了用用戶大量的硬盤(pán)空空間,但是具體想一想,用戶戶是愿意浪費(fèi)一點(diǎn)點(diǎn)磁盤(pán)空間來(lái)保護(hù)護(hù)數(shù)據(jù),還是愿意意丟失數(shù)據(jù)呢?顯顯而義見(jiàn),我們需需要保證我們的數(shù)數(shù)據(jù)的安全性。其其實(shí),歸檔并不是是一直占領(lǐng)用戶的的磁盤(pán)空間,用戶可以把它備份到磁帶上,或或則刪除上一次完完整備份前的所有有日志文件。2。2.2.5 初始化化參數(shù)文件initSID.ora或或init.ora文文件,因?yàn)榘姹镜牡牟灰粯樱湮恢弥靡部赡軙?huì)不一樣樣。初始化文件記記載了許多數(shù)據(jù)庫(kù)庫(kù)的啟動(dòng)參數(shù),如如內(nèi)存,控制文件件,進(jìn)程數(shù)等,在在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)時(shí)候加載(Nomount時(shí)加載),初始化文件記錄了很多重要參數(shù),對(duì)數(shù)據(jù)庫(kù)的性能影

32、響很大。v。2.2.6 其他文文件 密密碼文件用于Oracle 的的具有sysdba權(quán)權(quán)限用戶的認(rèn)證. 其其它日志文件(1)報(bào)警日志文件(alert.log或或alrt.ora)記錄數(shù)據(jù)庫(kù)啟動(dòng),關(guān)閉閉和一些重要的出出錯(cuò)信息。數(shù)據(jù)庫(kù)庫(kù)管理員應(yīng)該經(jīng)常常檢查這個(gè)文件,并并對(duì)出現(xiàn)的問(wèn)題作作出即使的反應(yīng)??煽梢酝ㄟ^(guò)以下SQL 找到他的路徑3。select value from v$PARAMETERwhere name =background_dump_dest;k。(2)后臺(tái)或用戶跟蹤文件系統(tǒng)進(jìn)程或用戶進(jìn)程出出錯(cuò)前寫(xiě)入的信息息,一般不可能讀讀懂,可以通過(guò)ORACLE的TKPROF工工具轉(zhuǎn)化為可以讀讀懂

33、的格式。對(duì)于于系統(tǒng)進(jìn)程產(chǎn)生的的跟蹤文件與報(bào)警警日志文件的路徑徑一樣,用戶跟蹤蹤文件的路徑,你你可以通過(guò)以下SQL找找到他的路徑Q。select value from v$PARAMETER where name =user_dump_dest;I。3 Oracle數(shù)數(shù)據(jù)庫(kù)常見(jiàn)的瓶頸頸問(wèn)題Oracle 數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)提供了相應(yīng)應(yīng)的應(yīng)用工具,管管理人員可以方便便地對(duì)Oracle進(jìn)行行有效的管理。從從而建立一個(gè)良好好的環(huán)境,使系統(tǒng)統(tǒng)發(fā)揮最大的效能能5。但是,有有時(shí)用戶還是抱怨怨系統(tǒng)運(yùn)行速度慢慢,對(duì)用戶查詢反反應(yīng)的時(shí)間長(zhǎng),即即出現(xiàn)所謂的瓶頸頸效應(yīng)。這就需要要管理人員對(duì)Oracle進(jìn)行行調(diào)整。5。在Ora

34、cle系統(tǒng)中比比較常見(jiàn)的瓶頸出出現(xiàn)在以下部件中中:3.1 中央處理器器(CPU)CPU是計(jì)算機(jī)在運(yùn)行行中最重要的部分分,如果CPU總總是運(yùn)行在極限速速度下,那么我們們說(shuō)CPU成為系系統(tǒng)的瓶頸,尤其其在多用戶同時(shí)使使用系統(tǒng)時(shí),CPU的的計(jì)算能力尤為重重要。盡管多數(shù)情情況下,都是由操操作系統(tǒng)的內(nèi)核來(lái)來(lái)管理分配有效的的CPU給RACLE數(shù)數(shù)據(jù)庫(kù)進(jìn)程使用。但但是,仍然會(huì)出現(xiàn)現(xiàn)過(guò)多的應(yīng)用進(jìn)程程對(duì)CPU使用周周期激烈競(jìng)爭(zhēng)的現(xiàn)現(xiàn)象。H。3.2 內(nèi)存內(nèi)存是計(jì)算機(jī)程序運(yùn)行行的場(chǎng)所,處于等等待狀態(tài)數(shù)據(jù)和請(qǐng)請(qǐng)求信息也都存放放在內(nèi)存中。如果果內(nèi)存不足,cache(高速緩存區(qū))的的命中率就不會(huì)太太高,大部分所需需數(shù)據(jù)不

35、在cache中中,因此出現(xiàn)了瓶瓶頸問(wèn)題。o。3.3 存儲(chǔ)設(shè)備諸如硬盤(pán)驅(qū)動(dòng)器、CD-ROM等設(shè)備,用用于存儲(chǔ)系統(tǒng)所需需信息,計(jì)算機(jī)系系統(tǒng)每秒能處理的的最大I/O數(shù)量量是固定的,當(dāng)CPU和和內(nèi)存要求的I/O速度大于系統(tǒng)統(tǒng)的速率時(shí),存儲(chǔ)儲(chǔ)設(shè)備的瓶頸就會(huì)會(huì)發(fā)生。J。3.4 網(wǎng)絡(luò)當(dāng)網(wǎng)絡(luò)負(fù)擔(dān)太重,網(wǎng)絡(luò)絡(luò)部件速度跟不上上,不可能把數(shù)據(jù)據(jù)傳輸?shù)酶?,網(wǎng)網(wǎng)絡(luò)瓶頸就會(huì)發(fā)生生。s。3.5 其它由于其它系統(tǒng)硬件或軟軟件的原因而導(dǎo)致致的瓶頸,如應(yīng)用用系統(tǒng)本身的設(shè)計(jì)計(jì)問(wèn)題,超出系統(tǒng)統(tǒng)吞吐量(在一定定時(shí)間內(nèi)系統(tǒng)處理理數(shù)據(jù)的能力)的的限制等造成的瓶瓶頸。L。對(duì)于Oracle數(shù)據(jù)據(jù)庫(kù)系統(tǒng)的存在的的瓶頸問(wèn)題的解決決,其實(shí)最終還是

36、是歸結(jié)為數(shù)據(jù)庫(kù)性性能優(yōu)化問(wèn)題。實(shí)實(shí)際上,為了保證證ORACLE數(shù)據(jù)據(jù)庫(kù)運(yùn)行在最佳的的性能狀態(tài)下,在信息系統(tǒng)開(kāi)開(kāi)發(fā)之前就應(yīng)該考考慮數(shù)據(jù)庫(kù)的優(yōu)化化策略。優(yōu)化策略略一般包括服務(wù)器器操作系統(tǒng)參數(shù)調(diào)調(diào)整、ORACLE數(shù)據(jù)據(jù)庫(kù)參數(shù)調(diào)整、網(wǎng)網(wǎng)絡(luò)性能調(diào)整、應(yīng)應(yīng)用程序SQL語(yǔ)語(yǔ)句分析及設(shè)計(jì)等等幾個(gè)方面,其中中應(yīng)用程序的分析析與設(shè)計(jì)是在信息息系統(tǒng)開(kāi)發(fā)之前完完成的。分析評(píng)價(jià)價(jià)ORACLE數(shù)據(jù)據(jù)庫(kù)性能主要有數(shù)數(shù)據(jù)庫(kù)吞吐量、數(shù)數(shù)據(jù)庫(kù)用戶響應(yīng)時(shí)時(shí)間兩項(xiàng)指標(biāo)6。數(shù)據(jù)庫(kù)吞吐量量是指單位時(shí)間內(nèi)內(nèi)數(shù)據(jù)庫(kù)完成的SQL語(yǔ)語(yǔ)句數(shù)目:數(shù)據(jù)庫(kù)用戶響應(yīng)應(yīng)時(shí)間是指用戶從從提交SQL語(yǔ)句開(kāi)始到獲得得結(jié)果的那一段時(shí)時(shí)間。數(shù)據(jù)庫(kù)用戶戶響應(yīng)時(shí)間又可以

37、以分為系統(tǒng)服務(wù)時(shí)時(shí)間和用戶等待時(shí)時(shí)間兩項(xiàng),即:數(shù)據(jù)庫(kù)用戶響應(yīng)應(yīng)時(shí)間=系統(tǒng)服務(wù)務(wù)時(shí)間 + 用戶戶等待時(shí)間,上述述公式告訴我們,獲獲得滿意的用戶響響應(yīng)時(shí)間有兩個(gè)途途徑:一是減少系統(tǒng)服服務(wù)時(shí)間,即提高高數(shù)據(jù)庫(kù)的吞吐量量:二是減少用戶等等待時(shí)間,即減少少用戶訪問(wèn)同一數(shù)數(shù)據(jù)庫(kù)資源的沖突突率。8。4 CPU參數(shù)的調(diào)整整CPU是服務(wù)器的一項(xiàng)項(xiàng)重要資源,服務(wù)務(wù)器良好的工作狀狀態(tài)是在工作高峰峰時(shí)C使用率在90%以以上。如果空閑時(shí)時(shí)間CPU使用率率就在90%以上上,說(shuō)明服務(wù)器缺缺資源,如果工作作高峰時(shí)CPU使使用率仍然很低,說(shuō)說(shuō)明服務(wù)器CPU資資源還比較富玉。使用操作相同同命令可以看到CPU的的使用情況,一般般U

38、NLK操作系系統(tǒng)的服可以使用用sar一命令查查看CPU的使用用率,NT操作系系統(tǒng)的服務(wù)器,可可以使用N能管理理器來(lái)查看CPU的的使用率。X。數(shù)據(jù)庫(kù)管理員可以通過(guò)過(guò)查看v$sysstat數(shù)數(shù)據(jù)字典中“CPU used by this session”統(tǒng)計(jì)項(xiàng)得知ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間,查看“OS User level CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)用戶態(tài)下的CPU時(shí)間,查看“OS System call CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)系統(tǒng)態(tài)下的CPU時(shí)間,操作系統(tǒng)總的CPU時(shí)間就是用戶態(tài)和系統(tǒng)態(tài)時(shí)間之和,如果ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間占操作系統(tǒng)總的CPU時(shí)間90%以

39、上,說(shuō)明服務(wù)器CPU基本上被ORACLE數(shù)據(jù)庫(kù)使用著,這是合理,反之,說(shuō)明服務(wù)器CPU被其它程序占用過(guò)多,ORACLE數(shù)據(jù)庫(kù)無(wú)法得到更多的CPU時(shí)間。數(shù)據(jù)庫(kù)管理員還可以通過(guò)查看v$sesstat數(shù)據(jù)字典來(lái)獲得當(dāng)前連接ORACLE數(shù)據(jù)庫(kù)各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多7。出現(xiàn) CPU 資源不足的情況是很多的:SQL語(yǔ)句的重解析、低效率的SQL語(yǔ)句、鎖沖突都會(huì)引起CPU資源不足。2。(1)數(shù)據(jù)庫(kù)管理員可可以執(zhí)行下述語(yǔ)句句來(lái)查看SQL語(yǔ)語(yǔ)句的解析情況。p。SELECT*FROM V$SYSSTATWHERE NAME IN(parse time cpu , parse

40、 time elapsed , parse count(hard);H。這里 parse time cpu是系統(tǒng)服服務(wù)時(shí)間,parse time elapsed是是響應(yīng)時(shí)間,用戶戶等待時(shí)間waite time = parse time elapsed - parse time cpu。由此可以得到用戶SQL語(yǔ)句平均解析等待時(shí)間=waite time/ parse count。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過(guò)長(zhǎng),數(shù)據(jù)庫(kù)管理員可以通過(guò)下述語(yǔ)句來(lái)發(fā)現(xiàn)是什么SQL語(yǔ)句解析效率比較低。程序員可以優(yōu)化這些語(yǔ)句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。r

41、。SELECT SQL_TEXT,PARSE_CALLS,EXECUTIONSF ROM V$SQLAREAF。ORDER BY PARSE_CALLS.(2)數(shù)據(jù)庫(kù)管理員還還可以通過(guò)下述語(yǔ)語(yǔ)句查看低效率的的SQL語(yǔ)句,優(yōu)優(yōu)化這些語(yǔ)句也有有助于提高CPU的的利用率。r。SELECT BUFFER_GETS,EXECUTIONS, SQL_TEXT FROM V$SQLAREA.y。(3)數(shù)據(jù)庫(kù)管理員可以通過(guò)過(guò)v$systen_event數(shù)據(jù)據(jù)字典中的“l(fā)atch free”統(tǒng)計(jì)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)據(jù)庫(kù)的沖突情況,如如果沒(méi)有沖突的話話,latch free查詢出出來(lái)沒(méi)有結(jié)果。T。如果沖突太大

42、的話,數(shù)數(shù)據(jù)庫(kù)管理員可以以降低spin_count參數(shù)數(shù)值,來(lái)消除高的的CPU使用率。Y。5 內(nèi)存參數(shù)的調(diào)整內(nèi)存參數(shù)的調(diào)整主要是是指ORACLE數(shù)據(jù)據(jù)庫(kù)的系統(tǒng)全局區(qū)區(qū)(SGA)的調(diào)整。SGA主主要由三部分構(gòu)成成:共享池、數(shù)據(jù)據(jù)緩沖區(qū)、日志緩緩沖區(qū)。系統(tǒng)全局局區(qū)(System Global Area,SGA),SGA隨著不不同的環(huán)境而不同同,沒(méi)有一種普通通的最佳方案,我我們?cè)谠O(shè)置它之前要先考慮以以下的幾個(gè)方面:物理內(nèi)存多大;操作系統(tǒng)是那種種及占多大的內(nèi)存存,數(shù)據(jù)庫(kù)系統(tǒng)是是文件系統(tǒng)還是裸裸設(shè)備;數(shù)據(jù)庫(kù)運(yùn)行的模模式8。SGA包包括:Fixed size、Variable Buffers、Redo B

43、uffers。SGA占有物理內(nèi)存的比例沒(méi)有嚴(yán)格的規(guī)定,只能遵從一般的規(guī)則:SGA占據(jù)物理內(nèi)存的40%60%左右。如果通過(guò)直觀的公式化來(lái)表達(dá)則為:OS使用內(nèi)存+SGA+并發(fā)進(jìn)程數(shù)*(sort_area_size+Hash_area_size+2M) select sum(value)/1024/1024 from v$sga;8。SUM(VALUE)/1024/1024- 500此時(shí) SGA 的當(dāng)前前總大小近似為 500MB,并并且這個(gè)值將變?yōu)闉?SGA_TARGET 的值。接下來(lái),執(zhí)執(zhí)行語(yǔ)句: O。alter system set sga_target = 500M scope=both;E。

44、這種方法不需要為各個(gè)個(gè)池設(shè)置不同值;因而,將需要在在參數(shù)文件中使它它們的值為零或全全部刪除它們。 B。shared_pool_size = 0large_pool_size = 0java_pool_size = 0db_cache_size = 0 再循環(huán)數(shù)據(jù)庫(kù),使這些些值生效。 這個(gè)人工過(guò)程還可以通通過(guò) Enterprise Manager 10g 實(shí)施。從從數(shù)據(jù)庫(kù)主頁(yè)中,選選擇 Administration 選項(xiàng)卡,然后后選擇 Memory Parameters。對(duì)于人工配置置的內(nèi)存參數(shù),將將顯示標(biāo)記為 Enable 的按鈕,以及及所有人工配置的的池的值。單擊 Enable 按鈕,啟用自

45、自動(dòng)共享內(nèi)存管理理特性。企業(yè)管理理器將完成剩下的的工作。 V。在配置了自動(dòng)內(nèi)存分配配之后,可以利用以以下命令檢查它們們的大?。?SQL select current_size from v$buffer_pool;L。CURRENT_SIZE- 340SQL select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;m。POOL MBYTES- -java pool 4large pool 4shared pool 148正如所看到的,所有的的池都從 500MB 的總目標(biāo)大小中中自動(dòng)進(jìn)行分配。如圖2所示緩沖高速緩

46、存大小是 340MB,Java 池是 4MB,大型池是 4MB,共享池是 148MB。它們合起來(lái)總的大小為 (340+4+4+148=) 496MB,近似與 500MB 的目標(biāo) SGA 的大小相同。 M。圖 2 池的初始始分配現(xiàn)在假定提供給Oracle的主主機(jī)內(nèi)存從 500MB 減少為 300MB,這這意味著必須減少少總 SGA 的的大小??梢酝ㄟ^(guò)過(guò)減小目標(biāo) SGA 大小來(lái)反映這種種變化。 H。alter system set sga_target = 300M scope=both;5?,F(xiàn)在查看各個(gè)池,可以以看到: SQL select current_size from v$buffer_

47、pool;v。CURRENT_SIZE- 244SQL select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat 0。group by pool;POOL MBYTES- -java pool 4large pool 4shared pool 44占用的總大小是 240+4+4+44 = 296MB,接接近于目標(biāo)的 300MB。如如圖 3 所示,當(dāng) SGA_TARGET 改變時(shí),如何自自動(dòng)重新分配池。 X。圖 3 在將 SGA 大小減少到 300MB 之后重新分配池池X。這些池的大小是動(dòng)態(tài)的的。池將根據(jù)工作作負(fù)載擴(kuò)展,以容容納需求的增長(zhǎng),或

48、或縮小以容納另一一個(gè)池的擴(kuò)展。這這種擴(kuò)展或縮小自自動(dòng)發(fā)生,無(wú)需 DBA 的干預(yù)預(yù),這與本文開(kāi)頭頭的示例不同。讓讓我們暫時(shí)返回到到那個(gè)場(chǎng)景,假定定在初始分配后,RMAN 作業(yè)啟動(dòng),指示示需要一個(gè)更大的的大型池,大型池池將從 4MB 擴(kuò)展到 40MB,以以容納需求。這個(gè)個(gè)額外的 36MB 將從數(shù)據(jù)庫(kù)緩沖沖中劃出,數(shù)據(jù)庫(kù)庫(kù)塊緩沖將縮小,如如圖 4 所示。4。 圖 4 在對(duì)大型池池的需求增長(zhǎng)之后后經(jīng)過(guò)重新分配的的池池的大小變化基于系統(tǒng)統(tǒng)上的工作負(fù)載,因因此不需要為最壞壞的情況調(diào)整池的的大小它們將根據(jù)需需求的增長(zhǎng)自動(dòng)調(diào)調(diào)整。此外,SGA 的總大小始終在在由 SGA_TARGET 指定的最大值之之內(nèi),因此

49、不存在在使內(nèi)存需求的增增長(zhǎng)比例失調(diào)(這這將導(dǎo)致分頁(yè)和交交換)的風(fēng)險(xiǎn)??煽梢詣?dòng)態(tài)地將 SGA_TARGET 增加至絕對(duì)最大大值,這個(gè)絕對(duì)最最大值是通過(guò)調(diào)整整參數(shù) SGA_MAX_SIZE 指定的。 Q。5.4.2 不受影影響的池SGA 中的一些池不不受動(dòng)態(tài)大小調(diào)整整的影響,但是必必須顯式指定這些些池11。其中值值得注意的是非標(biāo)標(biāo)準(zhǔn)塊大小的緩沖沖池,以及 KEEP 池或 RECYCLE 池的非默認(rèn)塊大大小。如果數(shù)據(jù)庫(kù)庫(kù)有一個(gè)塊大小為為 8K,而想要要配置 2K、4K、16K 和 32K 塊大小的池,那那么必須手動(dòng)設(shè)置置它們。它們的大大小將保持不變;它們將不會(huì)根據(jù)據(jù)負(fù)載縮小或擴(kuò)展展。當(dāng)使用多種大大小

50、的緩沖池、KEEP 池和 RECYCLE 池時(shí),應(yīng)當(dāng)考慮慮這個(gè)因素。此外外,日志緩沖不受受內(nèi)存調(diào)整的影響響不管工作負(fù)載載如何,在參數(shù) log_buffer 中設(shè)定的值是不不變的。( 在 10g 中,還可可以在 SGA 中定義一種新的的池:流池 (stream pool),它它用參數(shù) streams_pool_size 進(jìn)行設(shè)置。該池池也不受自動(dòng)內(nèi)存存調(diào)整的影響。) q。這就產(chǎn)生了一個(gè)問(wèn)題,如果需要一一個(gè)非默認(rèn)塊大小小的池,而且想自自動(dòng)管理其它的池池,那么該怎么辦辦? u。如果指定了這些非自動(dòng)動(dòng)調(diào)整的參數(shù)中的的任意一個(gè)(如 db_2k_cache_size),那那么它們的總大小小將從 SGA_T

51、ARGET 值中減去,以計(jì)計(jì)算自動(dòng)調(diào)整的參參數(shù)值,以使 SGA 的總大小保持不不變。例如,假設(shè)設(shè)值看起來(lái)像這樣樣。n。sga_target = 500Mdb_2k_cache_size = 50M其余的池參數(shù)未設(shè)置。50MB 的 2KB 緩緩沖池為自動(dòng)調(diào)整整的池(如默認(rèn)塊塊大小緩沖池 (db_cache_size)、共共享池、Java 池和大型池)保保留了 450MB。當(dāng)當(dāng)以一種方法動(dòng)態(tài)態(tài)地調(diào)整不可自動(dòng)動(dòng)調(diào)整的參數(shù)(如如 2KB 塊大大小池)這種方法將影影響到可自動(dòng)調(diào)整整部分的大小,可可自動(dòng)調(diào)整的部分分將重新調(diào)整。例例如,將 db_2k_cache_size 的值值從 50MB 提高到 100

52、MB 只為可自動(dòng)調(diào)整整的參數(shù)剩余 400MB。因因此,如圖 5 所示,可調(diào)整整的池(如共享池池、大型池、Java 池和默認(rèn)緩沖池池)自動(dòng)縮小,以以將它們的總大小小從 450MB 減少到 400MB。D。圖 5 配置非自動(dòng)動(dòng)緩沖參數(shù)的效果果但如果有足夠的可用內(nèi)內(nèi)存,或者上述風(fēng)風(fēng)險(xiǎn)可能不是那么么明顯,那應(yīng)該怎怎么辦?如果這樣樣的話,可以通過(guò)過(guò)不指定參數(shù)文件件中的參數(shù) SGA_TARGET、通過(guò)在文件中將將其設(shè)為 0,或或者通過(guò)使用 ALTER SYSTEM 動(dòng)態(tài)地將其修改改為 0 來(lái)關(guān)閉閉自動(dòng)大小調(diào)整。當(dāng)當(dāng) SGA_TARGET 被設(shè)為 0 時(shí)時(shí),池的當(dāng)前值被被自動(dòng)設(shè)為它們的的參數(shù)。 9。5.4.

53、3 使用 Enterprise Manager 還可以使用 Enterprise Manager 10g 來(lái)處理這這些參數(shù)。從數(shù)據(jù)據(jù)庫(kù)主頁(yè)中單擊超超鏈接 Memory Parameters,如圖 6 所示。 q。圖 6 在 Enterprise Manager 中調(diào)整自動(dòng)共享享內(nèi)存管理7。注意紅圈中的項(xiàng)目:數(shù)數(shù)據(jù)庫(kù)在 Automatic Shared Memory Management 模式下運(yùn)行,總總大小為 564MB,與與在參數(shù) SGA_TARGET 中指定的值相同同??梢栽诖诵薷母乃?,然后單擊Apply按按鈕接受這些值,可調(diào)整的參數(shù)將將自動(dòng)調(diào)整。 為為每個(gè)池指定一個(gè)個(gè)最小值,假定將 SG

54、A_TARGET 設(shè)為 600MB,并并且各個(gè)池已自動(dòng)動(dòng)分配。p。表1 各個(gè)池的最小小值池大小(MB)緩沖池404Java 池4大型池4共享池148看上述值,可能推斷 4MB 的 Java 池和大型池可能能有點(diǎn)不足,這個(gè)個(gè)值在運(yùn)行時(shí)無(wú)疑疑需要增加。因此此,可能想確保這這些池至少在最初初時(shí)具有更高的值值,比如說(shuō),分別別為 8MB 和和 16MB。可以通過(guò)在參數(shù)數(shù)文件中顯式地指指定這些池的值或或動(dòng)態(tài)使用 ALTER SYSTEM 來(lái)實(shí)現(xiàn)這一目的的(如下所示)。 X。alter system set large_pool_size = 16M;O。alter system set java_pool

55、_size = 8M;3。現(xiàn)在查看這些池,可以以看到SQL select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;c。POOL MBYTES- -java pool 8large pool 16shared pool 148SQL select current_size from v$buffer_pool;0。CURRENT_SIZE- 388表2 池的重新分分配顯示如下池大?。∕B)緩沖池388Java 池8大型池16共享池148如表2所示Java 池和大型池被重重新配置為 8MB 和 16MB,并并且為

56、了使總的 SGA 保持在在 600MB 以下,緩沖池已已從 404MB 減少為 388MB。當(dāng)當(dāng)然,這些池仍然然由自動(dòng)共享內(nèi)存存管理控制它們的大小將將根據(jù)需求縮小或或擴(kuò)展。顯式指定定的值為池的大小小設(shè)定了一個(gè)下限限;它們將永遠(yuǎn)不不會(huì)縮小到低于這這個(gè)界限。 X。5.4.4 小結(jié) Oracle SGA 中的各種池的內(nèi)內(nèi)存需求不是靜態(tài)態(tài)的。相反,它們根據(jù)據(jù)系統(tǒng)上的需求而而變化。Oracle 數(shù)數(shù)據(jù)庫(kù) 10g 中的自動(dòng)動(dòng)共享內(nèi)存管理特特性通過(guò)動(dòng)態(tài)地將將資源重新分配到到最需要它們的地地方同時(shí)施加一個(gè)個(gè)指定的最大值以以防止分頁(yè)和交換換,使得Oracle 10g 數(shù)據(jù)庫(kù)的的內(nèi)存得到更好的的優(yōu)化配置。b。6

57、調(diào)整I/OOracle RDBMS的性能能與操作系統(tǒng)和I/O子系統(tǒng)密切相相關(guān)。某些時(shí)候,操操作系統(tǒng)會(huì)阻礙Oracle的性性能。Oracle幾乎乎就是它自己的操操作系統(tǒng)。管理員員必須利用操作系系統(tǒng)來(lái)實(shí)現(xiàn)幾個(gè)關(guān)關(guān)鍵任務(wù),這些任務(wù)包括內(nèi)內(nèi)存管理系統(tǒng)、進(jìn)程調(diào)度程序和和I/O子系統(tǒng)等。在在操作系統(tǒng)的這些些任務(wù)中,I/O子系統(tǒng)及I/O子系統(tǒng)的性性能對(duì)Oracle RDBMS的性性能是非常重要的的12。Oracle的主主要功能是為數(shù)據(jù)據(jù)庫(kù)用戶提供和維維護(hù)數(shù)據(jù);數(shù)據(jù)庫(kù)的數(shù)據(jù)(不在內(nèi)存中時(shí))就是存放在I/O子系統(tǒng)中的。Oracle的性性能是和I/O子系統(tǒng)的性性能直接相關(guān)的。s。6.1 定位I/O性能問(wèn)題如何確定

58、系統(tǒng)的主要問(wèn)問(wèn)題是I/O問(wèn)題,并定定位存在I/O性能瓶頸的的設(shè)備是解決I/O性能問(wèn)題的第第一步。使用操作作系統(tǒng)的監(jiān)控工具具可以實(shí)時(shí)監(jiān)控I/O的情況。第一一種方法是使用vrnstat工具,使使用該工具,可以以查看b列的值,如果該該值比較大,說(shuō)明明等待I/O的進(jìn)程比較較多,I/O可能存在問(wèn)問(wèn)題,如圖7所示示。C。圖7 vmstat輸出出 圖8 sar輸出出然后,通過(guò)sar1命令或者iostat命令令可以進(jìn)一步確認(rèn)認(rèn),如圖8所示,從上圖中發(fā)現(xiàn)wio值長(zhǎng)時(shí)間高高于40(這個(gè)值是個(gè)個(gè)經(jīng)驗(yàn)值,根據(jù)不不同的系統(tǒng),這個(gè)個(gè)值可以調(diào)整),這這說(shuō)明I/O等待比較嚴(yán)嚴(yán)重。此時(shí)可以通通過(guò)sar-d命令來(lái)來(lái)監(jiān)控到底哪些I

59、/O設(shè)備存在性能能問(wèn)題。如果發(fā)現(xiàn)現(xiàn)某個(gè)設(shè)備的繁忙忙度長(zhǎng)時(shí)間超過(guò)90%,那就說(shuō)明明該設(shè)備比較繁忙忙,如果該設(shè)備的的平均服務(wù)時(shí)間比比較大或者比其它它設(shè)備高很多。那那么就說(shuō)明該設(shè)備備存在性能問(wèn)題。7。通過(guò)Oracle的statspack工具也可以檢查系統(tǒng)的I/O問(wèn)題,如果系統(tǒng)的性能不佳,并且從報(bào)告中看到的db file sequential read等待事件是系統(tǒng)等待事件中排在前幾位的事件,占系統(tǒng)總等待時(shí)間的比例比較高,那么系統(tǒng)很可能存在I/O性能問(wèn)題??梢酝ㄟ^(guò)檢查文件I/O情況來(lái)進(jìn)一步確認(rèn)并找出存在性能問(wèn)題的設(shè)備。方法是通過(guò)檢查文件I/O中的平均讀響應(yīng)時(shí)間,如果某個(gè)文件的平均讀響應(yīng)時(shí)間超過(guò)20毫秒

60、,那么說(shuō)明該文件所在的設(shè)備可能存在性能問(wèn)題。應(yīng)該注意的是,20毫秒是一個(gè)相對(duì)的參數(shù),在不同的應(yīng)用環(huán)境下可能選擇不同的參考值。通過(guò)比對(duì)操作系統(tǒng)的情況,數(shù)據(jù)庫(kù)管理員應(yīng)該很快就能確定所管理的系統(tǒng)的平均讀響應(yīng)時(shí)間和操作系統(tǒng)I/O情況的對(duì)應(yīng)關(guān)系。T。檢查讀平均響應(yīng)時(shí)間的的時(shí)候還要注意幾幾個(gè)問(wèn)題。第一個(gè)個(gè)問(wèn)題是在報(bào)告時(shí)時(shí)間區(qū)域內(nèi)的I/O量,如果某個(gè)個(gè)文件在報(bào)告時(shí)間間區(qū)間內(nèi)的I/O數(shù)量很小,那那么此平均響應(yīng)時(shí)時(shí)間可能缺乏代表表性,可以通過(guò)檢檢查存放在相同設(shè)設(shè)備上的其它文件件來(lái)進(jìn)一步確認(rèn)。另另外一種情況是平平均每次讀的數(shù)據(jù)據(jù)量比較多(每次次讀的塊數(shù)比較多多),那么略高的的平均讀響應(yīng)時(shí)間間也是正常的。下下面圖3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論