亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Oracle9i的動態SGA特性探索

瀏覽:2日期:2023-11-17 11:36:50
 Oracle9i數據庫在內部特性方面有著非常大的增強,其中一個最令Oracle DBA興奮的莫過于可以動態設置全部的Oracle SGA控制參數。 與8i不同的是,原來都將初始化參數放到一個文本文件中,并且在數據庫啟動的時候讀取,Oracle9i卻可以通過ALTER DATABASE和ALTER SYSTEM命令復位全部的Oracle參數。在9i前,假如想對Oracle數據庫的處理模式作一些改變的話,Oracle治理員必須關閉數據庫并且重新設置INIT.ORA文件中的參數,然后重新啟動數據庫。對于白天使用OLTP模式運作,晚上切換到數據倉庫模式的Oracle數據庫來說,這種重新設置是經常做的。對于需要停止和重新啟動Oracle數據庫來修改參數來說,Oracle9i在這方面有明顯的加強,它令實現數據庫連續可用的目標變得更加簡單。這種可以在Oracle SGA中動態增加和縮小不同區域的能力為Oracle數據庫治理員提供了一些令人激動的新特性。SGA每個區域的數據庫活動都可以獨立地被監視,而且也可以在Oracle數據庫中,根據使用的模式分配和取回資源。我們首先來看以下Oracle9i數據庫和Oracle8i數據庫的一些區別。Oracle9i的一個最重要的加強是對于連接到Oracle數據庫的全部專用連接,都無需要擁有一個獨立的PGA空間。在Oracle8i中,對于專用的Oracle連接,我們都需要在內存中分配一個獨立的區域,稱為Program Global Area或者PGA。PGA空間中包含有SORT_AREA_SIZE和額外的RAM控制結構以用來維護連接任務的狀態。在Oracle9i中,PGA空間已經被Oracle SGA中的一個新內存空間代替,它是通過PGA_AGGREGATE_TARGET參數來設置的(見圖1)。*********圖一************?。∣racle8i與Oracle9i在內存分配上的區別)由于全部的內存使用都在Oracle SGA中分配,所以Oracle數據庫治理員可以將分配給Oracle服務器的內存加大,可以分配至直到Orace服務器全部內存的80%。Oracle建議將服務器其余的20%內存保留給操作系統的任務。當用戶連接到Oracle9i數據庫時,排序工作所需要的內存將會在Oracle9i的PGA_AGGREGATE_TARGET區域中分配。這可以令Oracle9i比Oracle8i跑得更快,這是由于內存只在需要的期間才分配,并且在完成后就可以馬上釋放給其它連接的Oracle任務使用。動態修改SGA區域由于Oracle治理員現在可以增加和減少SGA的全部區域,因此我們可以快速地查看一下SGA區域是怎樣的,這樣我們就可以知道Oracle DBA如何監視這些區域的使用并且為Oracle數據庫更有效地重新分配內存。SGA的區域可以分為以下的部分。數據緩沖(Data buffers)--Oracle9i擁有多達7個獨立的數據緩沖來保存磁盤送來的數據塊。這些包含有傳統的KEEP pool,RECYCLE pool和DEFAULT pool,還有為每個Oracle數據庫支持的塊大小(2K, 4K, 8K, 16K和32K) 而建立的獨立數據緩沖池(見圖2)?!D2 獨立的Oracle9i數據緩沖我們可以監視這7個數據緩沖區域的命中率,假如緩沖的命中率保持在百分之九十以上,我們可以減少分配給這些數據緩沖的內存,并且將它們重新分配給其它Oracle實例中需要額外內存的地方。當數據緩沖的命中率(DBHR)下降時,我們可以將內存由一個數據緩沖中分離出來,并且將它重新分配給其它的數據緩沖(如圖3所示)。圖3 在Oracle9i的數據緩沖之間重新分配內存共享池(Shared pool)--Oracle9i的共享池有一個很重要的作用是分析和執行Oracle SQL語句。低的library cache命中率表示分配給library cache的內存不足,當shared pool需要對SQL語句進行大量的分析和執行時,Oracle9i的數據庫治理員可以使用ALTER SYSTEM來為shared pool加入額外的內存。PGA區域--分配給PGA_AGGREGATE_TARGET的內存是用來讓Oracle連接維護與連接相關的信息(例如游標的狀態),并且對SQL的結果集進行排序。Log buffer--對于Oracle redo log緩沖是否有大量活動,我們可以在log switch(日志轉換)的頻率上看出來。Oracle治理員可以監視redo log區域的活動,并且在Oracle數據庫需要額外的內存為原始的緩沖區域服務時,動態地增加內存?,F在就讓我們來仔細看以下這些內存區域之間是如何作用的。改變PGA的內存分配當以下的其中一個條件是真時,我們將需要動態地修改PGA_AGGREGATE_TARGET參數。。當V$SYSSTAT中對'estimated PGA memory for one-pass' 的統計值超出PGA_AGGREGATE_TARGET時,我們就需要增加PGA_AGGREGATE_TARGET的值。。當V$SYSSTAT中對'workarea executions - multipass' 的統計值超過百分之一時,數據庫將會由更多的內存中得到好處。 你可能過高地估計了PGA內存的空間,當V$SYSSTAT中'workarea executions - optimal'的值一直是100%時,可以考慮減少PGA_AGGREGATE_TARGET的值。我們可以通過一個簡單的腳本來查看shared pool是否需要更多的內存。量度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明顯缺少內存。我們就可以在這段期間動態地重新設置shared_pool參數以由db_cache_size中分配額外的內存。SGA的閥值摘要由下面的表一可以看到,在監視SGA的內存使用時,有幾個明顯的閥值可以利用。我們可以寫一些腳本并在其中集成一些智能,這樣就可以在處理的需求變化時重新設置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內存區域的負載Oracle9i使用了一些新的內部視圖或者在現有的視圖中加入新的列來幫助查看Oracle9i中的內部內存分配情況。以下的新V$視圖可以幫助監視Oracle9i連接的內存使用。V$PROCESS -在Oracle9i中加入了三個新的列以監視PGA內存的使用,新列的名字是pga_used_mem, pga_alloc_mem 和pga_max_mem。V$SYSSTAT -加入了很多新的統計行,包括有area statistics for optimal, one-pass和multi-pass。V$PGASTAT -該新視圖展示了全部后臺進程和專用連接的PGA內存使用V$SQL_PLAN--這個新視圖包含了全部當前執行的SQL的執行計劃信息。對于需要最優化的SQL語句的性能調整專家來說這是非常吸引人的。V$WORKAREA -這個新視圖提供了Oracle9i連接的累積內存統計的具體信息。V$WORKAREA_ACTIVE - 這個新的視圖提供了當前全部正在執行的SQL語句的內部內存使用信息。它們的目的是通過這些V$視圖來監視SGA中的內存使用,然后根據Oracle實例的處理要求,通過ALTER SYSTEM命令重新分配內存。我們以下來看一些這些新的Oracle9i特性和腳本,它可以幫助我們查看具體的內存使用。當然我們不可能在這里詳述所有的技術,以下就讓我們看一個簡單的例子,它通過使用V$SYSSTAT視圖來決定何時重新設置PGA_AGGREGATE_TARGET參數。以下的查詢可以得到自數據庫實例啟動后work areas被執行的全部數目和百分比。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%');這個查詢的輸出可能如下:PROFILE CNT PERCENTAGE----------------------------------- ---------- ----------workarea executions - optimal 5395 95workarea executions - onepass 284 5workarea executions - multipass 0 0這個查詢的輸出是用來告訴DBA何時動態調整PGA_AGGREGATE_TARGET參數。 在通常的情況下,假如multi-pass的執行大于0,就需要增加PGA_AGGREGATE_TARGET的值,并且在optimal executions是100%時減少它的值。我們還可以使用V$PGASTAT視圖來決定我們的Oracle實例的內存使用。V$PGASTAT視圖提供了PGA使用和自動內存治理的實例級摘要統計信息。以下的腳本提供了全部Oracle9i連接的整體內存使用的統計信息。以下是一個用來檢測Oracle9i中PGA內存使用的簡單腳本。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顯示中我們可以看到以下的統計。Aggregate PGA auto target -該列給出了可用于Oracle9i連接的全部內存。我們已經提過,這個值是由PGA_AGGREGATE_TARGET設置的。Global memory bound -該統計表示work area的最大值,Oracle建議在該統計值下降到1M時,你應該增加PGA_AGGREGATE_TARGET的值。Total PGA allocated - 這個統計顯示了數據庫中全部PGA內存使用的高水位線。當使用增加時,你應該看到這個值接近PGA_AGGREGATE_TARGET的值。Total PGA used for auto workareas - 這個統計監視內存的使用或者全部運行在自動內存模式中的全部連接。要記住的是,并不是全部的內部進程使用自動內存特性。例如,Java和PL/SQL 將分配內存,但是這部分將不會統計到這個值中。因此我們可使用整體PGA的值來減去該值,以得到連接和Java and PL/SQL使用的內存。Estimated PGA memory for optimal/one-pass - 該統計估計optimal模式下執行全部的連接任務所需要的內存。要記住的是,假如Oracle9i碰到內存不足時,它就會調用multi-pass操作。這個統計對于監視Oracle9i中的內存使用是非常重要的,大多數的Oracle DBA將會增加PGA_AGGREGATE_TARGET到這個值。現在我們已經了解了這個概念,以下就讓我們來看一下自動重新配置SGA有哪些方法。總述在一個UNIX環境中,在處理需求改變時通過定時任務來修改內存配置是非常簡單的。例如,許多Oracle數據庫在一般的工作時間以OLTP模式運作,在晚上的時候則運行對內存需求很大的批量報告。我們知道在一個OLTP數據庫中應該將DB_CACHE_SIZE設置為一個較大的值,而在需求內存很大的批量任務中則需要給PGA_AGGREGATE_TARGET分配額外的內存。以下的UNIX腳本可以用來重新設置OLTP和DSS的SGA值而無需將實例停下來。在這個例子中,我們假定有一個孤立的帶有8GB內存的的Oracle服務器。我們還假定保留20%的內存供UNIX使用,而剩下的6GB內存則用作Oracle和Oracle連接。這些腳本是在HP/UX或者Solaris中使用的,并且接受$ORACLE_SID作為一個參數。DSS_CONFIG.KSH腳本將在每晚的6:00 p.m運行,以重新設置Oracle在晚上運行對內存需求很大的批量任務。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!現在我們已經知道了一個常見的方式來修改Oracle的配置,我們也很輕易地看到可以很簡單地開發一個技術來連續地監控Oracle的處理需求,并且根據現有的數據庫需求來使用ALTER SYSTEM作修改。 結論雖然Oracle9i中的內存治理仍然需要很多的手工操作,不過大部分的Oracle治理員可以使用工具來連續地監控Oracle SGA中的內存使用,并且可以根據Oracle instance中現在的使用情況來自動地重新分配內存。這樣就可以令Oracle 治理員根據系統的變化來靈活地重新設置他們的系統。
標簽: Oracle 數據庫
主站蜘蛛池模板: 免费毛片看 | 精品一二| a大片久久爱一级 | 久久国产精品久久久 | 国产一区中文字幕在线观看 | 男人和女人全黄一级毛片 | 中文字幕一区二区三区不卡 | 免费看成人国产一区二区三区 | 2021年韩国r级理论片在线观看 | 97视频免费在线观看 | 国产成 人 色综合 亚洲 | 香蕉97超级碰碰碰碰碰久 | 国产成人小视频 | 国产视频自拍一区 | 国产午夜视频在线观看第四页 | 久久国产精品高清一区二区三区 | 国产成人三级视频在线观看播放 | 国产精品美女自在线观看免费 | ppypp日本欧美一区二区 | 一级无毛片 | 男女草| 国产成人精品微拍视频 | 又黄又免费的视频 | 国产第一草草影院 | 国产一区视频在线 | 亚洲精品欧美一区二区三区 | 麻豆麻豆必出精品入口 | 欧美一区二区在线 | 尤蜜视频在线观看播放 | 亚洲日本欧美产综合在线 | 新一级毛片国语版 | 国产主播精品在线 | 一级做a爰片久久毛片免费看 | 麻豆自拍 | 国产伦精品一区二区三区视频小说 | 日韩中文字幕在线观看 | 国产高清视频在线观看不卡v | 一级毛片免费不卡 | 亚洲精品专区一区二区欧美 | 久草在线资源福利站 | 久久黄网 |