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

下載本文檔

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

文檔簡介

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

2、內(nèi)存分配、磁盤I/O以及SQL語語句等方面的性能能調(diào)整與優(yōu)化問題題作為主要研究內(nèi)內(nèi)容,對其進(jìn)行了了深入地分析和討討論,給出了一般般情況下Oracle數(shù)數(shù)據(jù)庫應(yīng)用系統(tǒng)的的性能調(diào)整策略及及優(yōu)化方法。關(guān)鍵詞:Oracle 10g 數(shù)據(jù)庫;體系結(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ù)庫管理系統(tǒng)作作為信息系統(tǒng)的基基本支撐在信息化化建設(shè)中扮演著重重要的要色。目前前的Oracle 10g數(shù)據(jù)庫是業(yè)業(yè)界首個為網(wǎng)格計計算而設(shè)計的數(shù)據(jù)據(jù)庫,是一種高效效率、可靠性好的適應(yīng)應(yīng)高吞吐量的數(shù)據(jù)據(jù)庫解決方案,該該方案可讓客戶將將多臺標(biāo)準(zhǔn)服務(wù)器器系統(tǒng)整合成一套套可擴(kuò)充的容錯運(yùn)運(yùn)算平臺。然而,隨著數(shù)據(jù)庫規(guī)模模的擴(kuò)大及用戶數(shù)數(shù)量的增加,數(shù)據(jù)據(jù)庫應(yīng)用系統(tǒng)的響響應(yīng)速度下降,性性能問題越來越突突出。y。Oracle 10g數(shù)據(jù)庫系統(tǒng)統(tǒng)體系結(jié)構(gòu)龐大、技術(shù)細(xì)節(jié)繁雜,如如何合理有效地建建立基于Oracle的數(shù)數(shù)據(jù)庫系統(tǒng)及如何何調(diào)整使系統(tǒng)性能能達(dá)到最優(yōu),成為為Oracle數(shù)據(jù)據(jù)庫應(yīng)用領(lǐng)域的

8、熱熱點(diǎn)問題。本課題題通過對Oracle 10g數(shù)據(jù)庫系統(tǒng)統(tǒng)的深入分析,設(shè)設(shè)計一套完整的Oracle數(shù)據(jù)據(jù)性能評測指標(biāo)和和方法,并針對發(fā)發(fā)現(xià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ù)庫構(gòu)成的。下面是Oracle 10g數(shù)據(jù)庫的體系結(jié)構(gòu)圖:m。圖1 Oracle 10g數(shù)據(jù)庫體系系結(jié)構(gòu)2.1 ORACLE實(shí)例例Oracle 實(shí)例包包括系統(tǒng)全局共享享區(qū)System Global Are 和后臺進(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ù)庫的一個大緩緩沖池,這里的數(shù)數(shù)據(jù)可以被ORACLE的各各個進(jìn)程共用1。其大小可以通通過如下語句查看看:r。SQL select * from v$sga;NAME VALUE- -Fixed Size 39816Variable Size Database Buffers 1.049E+09Redo Buffers 主要包括以下幾個部分分: 共共享池(Shared pool)共享池是SGA中最關(guān)關(guān)鍵的內(nèi)存片段,特特別是在性能和可可伸縮性上。一個個太小的共享池會會扼

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

11、QL 比第二次運(yùn)行的SQL要慢一點(diǎn)的原因。7。下面舉例說明parse的的時間SQL select count(*) fromscpass ;K。COUNT(*)-243Elapsed: 00:00:00.08這是在Share_pool 和Data buffer 都沒有數(shù)據(jù)緩沖沖區(qū)的情況下所用用的時間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 的時間間差上可以看出該該SQL 的Parse 時間約為00:00:00.02。O。對于保存在共享池中的的SQL語句,可可以從V$Sqltext、v$Sqlarea中中查詢到,對于編編程者來說,要盡盡量提高語句的重重用率,減少語句句的分析時間。一一個設(shè)計的差的應(yīng)應(yīng)用程序可以毀掉掉整個數(shù)據(jù)庫的Share pool,提高高SQL語句的重重用率必須先養(yǎng)成成良好的變成習(xí)慣慣,盡量使用Bind變變量。X。(2)數(shù)據(jù)字典緩沖區(qū)區(qū)(Data Dictionary Ca

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

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

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

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

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

18、具,就就可以看到包含在在這里進(jìn)程中的線線程。I。在Unix上可以通過過如下方法查看后后臺進(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個基本進(jìn)程他們們是:DBWR(數(shù)據(jù)文件寫寫入進(jìn)程)LGWR(日志文件件寫入進(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ù)寫入進(jìn)程程)2。將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫寫入數(shù)據(jù)文件,是是負(fù)責(zé)數(shù)據(jù)緩沖區(qū)區(qū)管理的一個后臺臺進(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ù)寫入數(shù)據(jù)文件,保保持?jǐn)?shù)據(jù)緩沖區(qū)的的“干凈”。由于數(shù)據(jù)緩沖區(qū)區(qū)的數(shù)據(jù)被用戶修修改并占用,空閑閑數(shù)據(jù)緩沖區(qū)會不不斷減少,

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

21、志達(dá)達(dá)到一定數(shù)量時,由由LGWR將日志數(shù)據(jù)寫入入到日志文件組,再再經(jīng)過日志切換, 由歸檔進(jìn)程(ARCH)將將日志數(shù)據(jù)寫入歸歸檔進(jìn)程(前提是是數(shù)據(jù)庫運(yùn)行在歸歸檔模式下)。數(shù)數(shù)據(jù)庫遵循寫日志志優(yōu)先原則,即在在寫數(shù)據(jù)之前先寫寫日志。K。(3)SMON工作主要包含:清除臨時空間在系統(tǒng)啟動時,完成系系統(tǒng)實(shí)例恢復(fù)聚結(jié)空閑空間從不可用的文件中恢復(fù)復(fù)事務(wù)的活動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)程來同步。CKPT會會更新數(shù)據(jù)文件/控制文件的頭信信息。Q。CKPT工作的主要條條件如下:a.在日志切換的時候候。b.數(shù)據(jù)庫用Immediate ,Transaction , Normal 選選項Shutdown 數(shù)據(jù)庫的時候。Q。c.根據(jù)初始化文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET、的設(shè)置數(shù)值來確定。j。d.用戶觸發(fā)。 以以下進(jìn)程的啟動需需要手工配置(1)ARCH當(dāng)數(shù)據(jù)

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

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

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

26、復(fù)復(fù)變的很復(fù)雜??乜刂莆募畔⒖梢砸詮腣$Controlfile中查詢獲得。b。2.2.2 數(shù)據(jù)文文件(數(shù)據(jù)文件的的詳細(xì)信息記載在在控制文件中)可以通過如下方式查看看數(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ù),但是用用戶腳本,如過程程,函數(shù),包等卻卻是保存在數(shù)據(jù)字字典中的。(數(shù)據(jù)字典是一些些系統(tǒng)表或視圖,他他存放系統(tǒng)的信息息,他包括數(shù)據(jù)庫庫版本,數(shù)據(jù)文件件信息,表與索引引等段信息,系統(tǒng)統(tǒng)的運(yùn)行狀態(tài)等各各種和系統(tǒng)有關(guān)的的信息和用戶腳本本信息。數(shù)據(jù)庫管管理員可以通過對對數(shù)據(jù)字典的查詢詢,就可以了解到到Oracle的運(yùn)運(yùn)行狀態(tài)。)0。 回回滾段文件(rbs_01.dbf)如果數(shù)據(jù)庫進(jìn)行對數(shù)據(jù)據(jù)的修改,那么就就必須使用回滾段段,回滾段是用來來臨時存放修改前前的數(shù)據(jù)(B

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

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

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

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

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

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

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

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

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

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

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

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

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

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

42、的話,數(shù)數(shù)據(jù)庫管理員可以以降低spin_count參數(shù)數(shù)值,來消除高的的CPU使用率。Y。5 內(nèi)存參數(shù)的調(diào)整內(nèi)存參數(shù)的調(diào)整主要是是指ORACLE數(shù)據(jù)據(jù)庫的系統(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)境而不同同,沒有一種普通通的最佳方案,我我們在設(shè)置它之前要先考慮以以下的幾個方面:物理內(nèi)存多大;操作系統(tǒng)是那種種及占多大的內(nèi)存存,數(shù)據(jù)庫系統(tǒng)是是文件系統(tǒng)還是裸裸設(shè)備;數(shù)據(jù)庫運(yùn)行的模模式8。SGA包包括:Fixed size、Variable Buffers、Redo B

43、uffers。SGA占有物理內(nèi)存的比例沒有嚴(yán)格的規(guī)定,只能遵從一般的規(guī)則:SGA占據(jù)物理內(nèi)存的40%60%左右。如果通過直觀的公式化來表達(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此時 SGA 的當(dāng)前前總大小近似為 500MB,并并且這個值將變?yōu)闉?SGA_TARGET 的值。接下來,執(zhí)執(zhí)行語句: O。alter system set sga_target = 500M scope=both;E。

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

45、自動共享內(nèi)存管理理特性。企業(yè)管理理器將完成剩下的的工作。 V。在配置了自動內(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)大小中中自動進(jìn)行分配。如圖2所示緩沖高速緩

46、存大小是 340MB,Java 池是 4MB,大型池是 4MB,共享池是 148MB。它們合起來總的大小為 (340+4+4+148=) 496MB,近似與 500MB 的目標(biāo) SGA 的大小相同。 M。圖 2 池的初始始分配現(xiàn)在假定提供給Oracle的主主機(jī)內(nèi)存從 500MB 減少為 300MB,這這意味著必須減少少總 SGA 的的大小。可以通過過減小目標(biāo) SGA 大小來反映這種種變化。 H。alter system set sga_target = 300M scope=both;5?,F(xiàn)在查看各個池,可以以看到: 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 改變時,如何自自動重新分配池。 X。圖 3 在將 SGA 大小減少到 300MB 之后重新分配池池X。這些池的大小是動態(tài)的的。池將根據(jù)工作作負(fù)載擴(kuò)展,以容容納需求的增長,或

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

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

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

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

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

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

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

55、_size = 8M;3?,F(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 池的重新分分配顯示如下池大小(MB)緩沖池388Java 池8大型池16共享池148如表2所示Java 池和大型池被重重新配置為 8MB 和 16MB,并并且為

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

57、調(diào)整I/OOracle RDBMS的性能能與操作系統(tǒng)和I/O子系統(tǒng)密切相相關(guān)。某些時候,操操作系統(tǒng)會阻礙Oracle的性性能。Oracle幾乎乎就是它自己的操操作系統(tǒng)。管理員員必須利用操作系系統(tǒng)來實(shí)現(xiàn)幾個關(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)的性性能對Oracle RDBMS的性性能是非常重要的的12。Oracle的主主要功能是為數(shù)據(jù)據(jù)庫用戶提供和維維護(hù)數(shù)據(jù);數(shù)據(jù)庫的數(shù)據(jù)(不在內(nèi)存中時)就是存放在I/O子系統(tǒng)中的。Oracle的性性能是和I/O子系統(tǒng)的性性能直接相關(guān)的。s。6.1 定位I/O性能問題如何確定

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

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

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

溫馨提示

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

評論

0/150

提交評論