电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle9i的動(dòng)態(tài)SGA特性探索

瀏覽:5日期:2023-11-17 11:36:50
 Oracle9i數(shù)據(jù)庫在內(nèi)部特性方面有著非常大的增強(qiáng),其中一個(gè)最令Oracle DBA興奮的莫過于可以動(dòng)態(tài)設(shè)置全部的Oracle SGA控制參數(shù)。 與8i不同的是,原來都將初始化參數(shù)放到一個(gè)文本文件中,并且在數(shù)據(jù)庫啟動(dòng)的時(shí)候讀取,Oracle9i卻可以通過ALTER DATABASE和ALTER SYSTEM命令復(fù)位全部的Oracle參數(shù)。在9i前,假如想對(duì)Oracle數(shù)據(jù)庫的處理模式作一些改變的話,Oracle治理員必須關(guān)閉數(shù)據(jù)庫并且重新設(shè)置INIT.ORA文件中的參數(shù),然后重新啟動(dòng)數(shù)據(jù)庫。對(duì)于白天使用OLTP模式運(yùn)作,晚上切換到數(shù)據(jù)倉(cāng)庫模式的Oracle數(shù)據(jù)庫來說,這種重新設(shè)置是經(jīng)常做的。對(duì)于需要停止和重新啟動(dòng)Oracle數(shù)據(jù)庫來修改參數(shù)來說,Oracle9i在這方面有明顯的加強(qiáng),它令實(shí)現(xiàn)數(shù)據(jù)庫連續(xù)可用的目標(biāo)變得更加簡(jiǎn)單。這種可以在Oracle SGA中動(dòng)態(tài)增加和縮小不同區(qū)域的能力為Oracle數(shù)據(jù)庫治理員提供了一些令人激動(dòng)的新特性。SGA每個(gè)區(qū)域的數(shù)據(jù)庫活動(dòng)都可以獨(dú)立地被監(jiān)視,而且也可以在Oracle數(shù)據(jù)庫中,根據(jù)使用的模式分配和取回資源。我們首先來看以下Oracle9i數(shù)據(jù)庫和Oracle8i數(shù)據(jù)庫的一些區(qū)別。Oracle9i的一個(gè)最重要的加強(qiáng)是對(duì)于連接到Oracle數(shù)據(jù)庫的全部專用連接,都無需要擁有一個(gè)獨(dú)立的PGA空間。在Oracle8i中,對(duì)于專用的Oracle連接,我們都需要在內(nèi)存中分配一個(gè)獨(dú)立的區(qū)域,稱為Program Global Area或者PGA。PGA空間中包含有SORT_AREA_SIZE和額外的RAM控制結(jié)構(gòu)以用來維護(hù)連接任務(wù)的狀態(tài)。在Oracle9i中,PGA空間已經(jīng)被Oracle SGA中的一個(gè)新內(nèi)存空間代替,它是通過PGA_AGGREGATE_TARGET參數(shù)來設(shè)置的(見圖1)。*********圖一************ (Oracle8i與Oracle9i在內(nèi)存分配上的區(qū)別)由于全部的內(nèi)存使用都在Oracle SGA中分配,所以O(shè)racle數(shù)據(jù)庫治理員可以將分配給Oracle服務(wù)器的內(nèi)存加大,可以分配至直到Orace服務(wù)器全部?jī)?nèi)存的80%。Oracle建議將服務(wù)器其余的20%內(nèi)存保留給操作系統(tǒng)的任務(wù)。當(dāng)用戶連接到Oracle9i數(shù)據(jù)庫時(shí),排序工作所需要的內(nèi)存將會(huì)在Oracle9i的PGA_AGGREGATE_TARGET區(qū)域中分配。這可以令Oracle9i比Oracle8i跑得更快,這是由于內(nèi)存只在需要的期間才分配,并且在完成后就可以馬上釋放給其它連接的Oracle任務(wù)使用。動(dòng)態(tài)修改SGA區(qū)域由于Oracle治理員現(xiàn)在可以增加和減少SGA的全部區(qū)域,因此我們可以快速地查看一下SGA區(qū)域是怎樣的,這樣我們就可以知道Oracle DBA如何監(jiān)視這些區(qū)域的使用并且為Oracle數(shù)據(jù)庫更有效地重新分配內(nèi)存。SGA的區(qū)域可以分為以下的部分。數(shù)據(jù)緩沖(Data buffers)--Oracle9i擁有多達(dá)7個(gè)獨(dú)立的數(shù)據(jù)緩沖來保存磁盤送來的數(shù)據(jù)塊。這些包含有傳統(tǒng)的KEEP pool,RECYCLE pool和DEFAULT pool,還有為每個(gè)Oracle數(shù)據(jù)庫支持的塊大小(2K, 4K, 8K, 16K和32K) 而建立的獨(dú)立數(shù)據(jù)緩沖池(見圖2)。 圖2 獨(dú)立的Oracle9i數(shù)據(jù)緩沖我們可以監(jiān)視這7個(gè)數(shù)據(jù)緩沖區(qū)域的命中率,假如緩沖的命中率保持在百分之九十以上,我們可以減少分配給這些數(shù)據(jù)緩沖的內(nèi)存,并且將它們重新分配給其它Oracle實(shí)例中需要額外內(nèi)存的地方。當(dāng)數(shù)據(jù)緩沖的命中率(DBHR)下降時(shí),我們可以將內(nèi)存由一個(gè)數(shù)據(jù)緩沖中分離出來,并且將它重新分配給其它的數(shù)據(jù)緩沖(如圖3所示)。圖3 在Oracle9i的數(shù)據(jù)緩沖之間重新分配內(nèi)存共享池(Shared pool)--Oracle9i的共享池有一個(gè)很重要的作用是分析和執(zhí)行Oracle SQL語句。低的library cache命中率表示分配給library cache的內(nèi)存不足,當(dāng)shared pool需要對(duì)SQL語句進(jìn)行大量的分析和執(zhí)行時(shí),Oracle9i的數(shù)據(jù)庫治理員可以使用ALTER SYSTEM來為shared pool加入額外的內(nèi)存。PGA區(qū)域--分配給PGA_AGGREGATE_TARGET的內(nèi)存是用來讓Oracle連接維護(hù)與連接相關(guān)的信息(例如游標(biāo)的狀態(tài)),并且對(duì)SQL的結(jié)果集進(jìn)行排序。Log buffer--對(duì)于Oracle redo log緩沖是否有大量活動(dòng),我們可以在log switch(日志轉(zhuǎn)換)的頻率上看出來。Oracle治理員可以監(jiān)視r(shí)edo log區(qū)域的活動(dòng),并且在Oracle數(shù)據(jù)庫需要額外的內(nèi)存為原始的緩沖區(qū)域服務(wù)時(shí),動(dòng)態(tài)地增加內(nèi)存。現(xiàn)在就讓我們來仔細(xì)看以下這些內(nèi)存區(qū)域之間是如何作用的。改變PGA的內(nèi)存分配當(dāng)以下的其中一個(gè)條件是真時(shí),我們將需要?jiǎng)討B(tài)地修改PGA_AGGREGATE_TARGET參數(shù)。。當(dāng)V$SYSSTAT中對(duì)'estimated PGA memory for one-pass' 的統(tǒng)計(jì)值超出PGA_AGGREGATE_TARGET時(shí),我們就需要增加PGA_AGGREGATE_TARGET的值。。當(dāng)V$SYSSTAT中對(duì)'workarea executions - multipass' 的統(tǒng)計(jì)值超過百分之一時(shí),數(shù)據(jù)庫將會(huì)由更多的內(nèi)存中得到好處。 你可能過高地估計(jì)了PGA內(nèi)存的空間,當(dāng)V$SYSSTAT中'workarea executions - optimal'的值一直是100%時(shí),可以考慮減少PGA_AGGREGATE_TARGET的值。我們可以通過一個(gè)簡(jiǎn)單的腳本來查看shared pool是否需要更多的內(nèi)存。量度Library Cache的丟失率set lines 80;set pages 999;column mydate heading 'Yr. Mo Dy Hr.' format a16column c1 heading 'execs' format 9,999,999column c2 heading 'Cache MissesWhile Executing' format 9,999,999column c3 heading 'Library CacheMiss Ratio' format 999.99999break on mydate skip 2;select to_char(snap_time,'yyyy-mm-dd HH24') mydate,sum(new.pins-old.pins) c1,sum(new.reloads-old.reloads) c2,sum(new.reloads-old.reloads)/sum(new.pins-old.pins) library_cache_miss_ratiofrom stats$librarycache old,stats$librarycache new,stats$snapshot snwherenew.snap_id = sn.snap_idandold.snap_id = new.snap_id-1andold.namespace = new.namespacegroup byto_char(snap_time,'yyyy-mm-dd HH24')Cache MissesYr. Mo Dy Hr. execs While Executing LIBRARY_CACHE_MISS_RATIO---------------- ---------- --------------- ------------------------2001-12-11 10 10,338 3 .000292001-12-12 10 182,477 134 .000732001-12-14 10 190,707 202 .001062001-12-16 10 2,803 11 .00392由上面的例子看到,在天天的9:00AM到10:AM之間,shared pool明顯缺少內(nèi)存。我們就可以在這段期間動(dòng)態(tài)地重新設(shè)置shared_pool參數(shù)以由db_cache_size中分配額外的內(nèi)存。SGA的閥值摘要由下面的表一可以看到,在監(jiān)視SGA的內(nèi)存使用時(shí),有幾個(gè)明顯的閥值可以利用。我們可以寫一些腳本并在其中集成一些智能,這樣就可以在處理的需求變化時(shí)重新設(shè)置SGA。RAM Area Too-small Condition Too-Large Condition Shared pool Library cache misses No misses Data buffer cache Hit ratio < 90% Hit ratio > 95% PGA aggregate high multi-pass executions 100% optimal executions 表1:SGA中的異常條件指示查看SGA內(nèi)存區(qū)域的負(fù)載Oracle9i使用了一些新的內(nèi)部視圖或者在現(xiàn)有的視圖中加入新的列來幫助查看Oracle9i中的內(nèi)部?jī)?nèi)存分配情況。以下的新V$視圖可以幫助監(jiān)視Oracle9i連接的內(nèi)存使用。V$PROCESS -在Oracle9i中加入了三個(gè)新的列以監(jiān)視PGA內(nèi)存的使用,新列的名字是pga_used_mem, pga_alloc_mem 和pga_max_mem。V$SYSSTAT -加入了很多新的統(tǒng)計(jì)行,包括有area statistics for optimal, one-pass和multi-pass。V$PGASTAT -該新視圖展示了全部后臺(tái)進(jìn)程和專用連接的PGA內(nèi)存使用V$SQL_PLAN--這個(gè)新視圖包含了全部當(dāng)前執(zhí)行的SQL的執(zhí)行計(jì)劃信息。對(duì)于需要最優(yōu)化的SQL語句的性能調(diào)整專家來說這是非常吸引人的。V$WORKAREA -這個(gè)新視圖提供了Oracle9i連接的累積內(nèi)存統(tǒng)計(jì)的具體信息。V$WORKAREA_ACTIVE - 這個(gè)新的視圖提供了當(dāng)前全部正在執(zhí)行的SQL語句的內(nèi)部?jī)?nèi)存使用信息。它們的目的是通過這些V$視圖來監(jiān)視SGA中的內(nèi)存使用,然后根據(jù)Oracle實(shí)例的處理要求,通過ALTER SYSTEM命令重新分配內(nèi)存。我們以下來看一些這些新的Oracle9i特性和腳本,它可以幫助我們查看具體的內(nèi)存使用。當(dāng)然我們不可能在這里詳述所有的技術(shù),以下就讓我們看一個(gè)簡(jiǎn)單的例子,它通過使用V$SYSSTAT視圖來決定何時(shí)重新設(shè)置PGA_AGGREGATE_TARGET參數(shù)。以下的查詢可以得到自數(shù)據(jù)庫實(shí)例啟動(dòng)后work areas被執(zhí)行的全部數(shù)目和百分比。work_area.sqlselectname profile, cnt, decode(total, 0, 0, round(cnt*100/total)) percentagefrom (select name, value cnt, (sum(value) over ()) totalfromv$sysstat wherename like 'workarea exec%');這個(gè)查詢的輸出可能如下:PROFILE CNT PERCENTAGE----------------------------------- ---------- ----------workarea executions - optimal 5395 95workarea executions - onepass 284 5workarea executions - multipass 0 0這個(gè)查詢的輸出是用來告訴DBA何時(shí)動(dòng)態(tài)調(diào)整PGA_AGGREGATE_TARGET參數(shù)。 在通常的情況下,假如multi-pass的執(zhí)行大于0,就需要增加PGA_AGGREGATE_TARGET的值,并且在optimal executions是100%時(shí)減少它的值。我們還可以使用V$PGASTAT視圖來決定我們的Oracle實(shí)例的內(nèi)存使用。V$PGASTAT視圖提供了PGA使用和自動(dòng)內(nèi)存治理的實(shí)例級(jí)摘要統(tǒng)計(jì)信息。以下的腳本提供了全部Oracle9i連接的整體內(nèi)存使用的統(tǒng)計(jì)信息。以下是一個(gè)用來檢測(cè)Oracle9i中PGA內(nèi)存使用的簡(jiǎn)單腳本。check_pga.sqlcolumn name format a30column value format 999,999,999selectname, value fromv$pgastatThe output of this query might look like the following: NAME VALUE ------------------------------------------------------ ----------aggregate PGA auto target 736,052,224global memory bound 21,200total eXPected memory 141,144total PGA inuse 22,234,736total PGA allocated 55,327,872maximum PGA allocated 23,970,624total PGA used for auto workareas 262,144maximum PGA used for auto workareas 7,333,032total PGA used for manual workareas 0maximum PGA used for manual workareas 0estimated PGA memory for optimal 141,395maximum PGA memory for optimal 500,123,520estimated PGA memory for one-pass 534,144maximum PGA memory for one-pass 在上面的v$pgastat顯示中我們可以看到以下的統(tǒng)計(jì)。Aggregate PGA auto target -該列給出了可用于Oracle9i連接的全部?jī)?nèi)存。我們已經(jīng)提過,這個(gè)值是由PGA_AGGREGATE_TARGET設(shè)置的。Global memory bound -該統(tǒng)計(jì)表示work area的最大值,Oracle建議在該統(tǒng)計(jì)值下降到1M時(shí),你應(yīng)該增加PGA_AGGREGATE_TARGET的值。Total PGA allocated - 這個(gè)統(tǒng)計(jì)顯示了數(shù)據(jù)庫中全部PGA內(nèi)存使用的高水位線。當(dāng)使用增加時(shí),你應(yīng)該看到這個(gè)值接近PGA_AGGREGATE_TARGET的值。Total PGA used for auto workareas - 這個(gè)統(tǒng)計(jì)監(jiān)視內(nèi)存的使用或者全部運(yùn)行在自動(dòng)內(nèi)存模式中的全部連接。要記住的是,并不是全部的內(nèi)部進(jìn)程使用自動(dòng)內(nèi)存特性。例如,Java和PL/SQL 將分配內(nèi)存,但是這部分將不會(huì)統(tǒng)計(jì)到這個(gè)值中。因此我們可使用整體PGA的值來減去該值,以得到連接和Java and PL/SQL使用的內(nèi)存。Estimated PGA memory for optimal/one-pass - 該統(tǒng)計(jì)估計(jì)optimal模式下執(zhí)行全部的連接任務(wù)所需要的內(nèi)存。要記住的是,假如Oracle9i碰到內(nèi)存不足時(shí),它就會(huì)調(diào)用multi-pass操作。這個(gè)統(tǒng)計(jì)對(duì)于監(jiān)視Oracle9i中的內(nèi)存使用是非常重要的,大多數(shù)的Oracle DBA將會(huì)增加PGA_AGGREGATE_TARGET到這個(gè)值。現(xiàn)在我們已經(jīng)了解了這個(gè)概念,以下就讓我們來看一下自動(dòng)重新配置SGA有哪些方法。總述在一個(gè)UNIX環(huán)境中,在處理需求改變時(shí)通過定時(shí)任務(wù)來修改內(nèi)存配置是非常簡(jiǎn)單的。例如,許多Oracle數(shù)據(jù)庫在一般的工作時(shí)間以O(shè)LTP模式運(yùn)作,在晚上的時(shí)候則運(yùn)行對(duì)內(nèi)存需求很大的批量報(bào)告。我們知道在一個(gè)OLTP數(shù)據(jù)庫中應(yīng)該將DB_CACHE_SIZE設(shè)置為一個(gè)較大的值,而在需求內(nèi)存很大的批量任務(wù)中則需要給PGA_AGGREGATE_TARGET分配額外的內(nèi)存。以下的UNIX腳本可以用來重新設(shè)置OLTP和DSS的SGA值而無需將實(shí)例停下來。在這個(gè)例子中,我們假定有一個(gè)孤立的帶有8GB內(nèi)存的的Oracle服務(wù)器。我們還假定保留20%的內(nèi)存供UNIX使用,而剩下的6GB內(nèi)存則用作Oracle和Oracle連接。這些腳本是在HP/UX或者Solaris中使用的,并且接受$ORACLE_SID作為一個(gè)參數(shù)。DSS_CONFIG.KSH腳本將在每晚的6:00 p.m運(yùn)行,以重新設(shè)置Oracle在晚上運(yùn)行對(duì)內(nèi)存需求很大的批量任務(wù)。dss_config.ksh#!/bin/ksh# First, we must set the environment . . . .ORACLE_SID=$1export ORACLE_SIDORACLE_HOME=`cat /etc/oratabgrep ^$ORACLE_SID:cut -f2 -d':'`#ORACLE_HOME=`cat /var/opt/oracle/oratabgrep ^$ORACLE_SID:cut -f2 -d':'`export ORACLE_HOMEPATH=$ORACLE_HOME/bin:$PATHexport PATH$ORACLE_HOME/bin/sqlplus -s /nologin<connect system/manager as sysdba;ALTER SYSTEM set db_cache_size=1500m;ALTER SYSTEM set shared_pool_size=500m;ALTER SYSTEM set pga_aggregate_target=400m;exit!現(xiàn)在我們已經(jīng)知道了一個(gè)常見的方式來修改Oracle的配置,我們也很輕易地看到可以很簡(jiǎn)單地開發(fā)一個(gè)技術(shù)來連續(xù)地監(jiān)控Oracle的處理需求,并且根據(jù)現(xiàn)有的數(shù)據(jù)庫需求來使用ALTER SYSTEM作修改。 結(jié)論雖然Oracle9i中的內(nèi)存治理仍然需要很多的手工操作,不過大部分的Oracle治理員可以使用工具來連續(xù)地監(jiān)控Oracle SGA中的內(nèi)存使用,并且可以根據(jù)Oracle instance中現(xiàn)在的使用情況來自動(dòng)地重新分配內(nèi)存。這樣就可以令Oracle 治理員根據(jù)系統(tǒng)的變化來靈活地重新設(shè)置他們的系統(tǒng)。
標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 变频器维修公司_plc维修_伺服驱动器维修_工控机维修 - 夫唯科技 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 模具钢_高速钢_不锈钢-万利钢金属材料| YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 派财经_聚焦数字经济内容服务平台 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 高压直流电源_特种变压器_变压器铁芯-希恩变压器定制厂家 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 不锈钢水管-不锈钢燃气管-卫生级不锈钢管件-不锈钢食品级水管-广东双兴新材料集团有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 |