国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle9i進程內存占用問題解決方法

2024-08-29 13:41:59
字體:
來源:轉載
供稿:網友
2004年3月5日,發現Oracle公布了有關此問題的一些說明和部分解決方法。大致的內容是,AIX5.2可以打個補丁來獲得更好的效果,而其他版本只能通過設置以下環境變量來減少消耗:
  
  AIXTHREAD_SCOPE=S;eXPort AIXTHREAD_SCOPE
  
  NUM_SPAREVP=1; export NUM_SPAREVP(AIX4.3和5.1)
  
  具體內容參考Metalink文檔:259983.1 "Memory Consumption on AIX",此文檔是18-DEC-2003創建的,最近更新28-JAN-2004。
  
  2004年3月12日,我們拿了一臺新的M85,安裝了AIX5.2開始測試這一結果。設置這些環境可以起一定的作用,但沒有明顯效果。
  
  根據文檔說明,安裝AIX APAR IY49415補丁,執行如下步驟:
  
  從這里下在相關腳本:http://updates.oracle.com/ARULink/PatchDetails/PRocess_form?aru=5336110
  1) save your current version of $ORACLE_HOME/oracle
  2) create a working Directory $ORACLE_HOME/relink
  3) cd to $ORACLE_HOME/relink
  4) unzip the relinking package
  5) link $ORACLE_HOME/bin/oracle to ./oracle0
  6) run the script ./genscript to generate some required files and scripts
  7) run ./relink.sh to generate the new oracle binary oracle0.new.$$
  8) copy oracle0.new.$$ to $ORACLE_HOME/bin/oracle and verify that the permissions match the original oracle binary.
  
  驗證結果很明顯,內存占用改善了很多,沒有打補丁的一個空連接server進程占用最低都是5M多,而現在只有2M多,改善了50%!
  hawk1> ps v 17686600 (沒打補丁的空連接)
  PID TTY STAT TIME PGIN SIZE rss LIM TSIZ TRS %CPU %MEM COMMAND
  17686600 - A 0:00 0 5496 24600 xx 45561 19104 0.0 0.0 oracle
  localhost> ps v 557160 (打過補丁的空連接)
  PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
  557160 - A 0:00 815 2360 15432 32768 46449 13072 0.0 1.0 oracleor
  
  雖然說這里ps v看到的結果不是很準確,但是二者使用相同的標準計算,并不影響對比結果,而且和我們使用NMON的統計結果也是一致的。
  
  至此,Oracle9i在AIX上的內存占用問題算是基本解決了,前后經歷了快一年的時間,這恐怕是我關注一個Oracle問題時間最久的一次,理由很簡單,這是工作需要,生產需要,要知道這么隨便一搞,給我們剩下了很多麻煩,之前為了答應更多的連接,我們不得不將內存從12G擴容到24G,現在一降下來可以為企業節省很多硬件投入,究竟這玩藝內存賣的還是挺貴的,而這是無成本的。
  
  過去這段時間,我工作的其中之一就是在為一個電信業務系統的升級做預備,在兩臺IBM M85(6CPU*12G MEM AIX 5L)上對ORACLE9I RAC做具體的測試工作,開始的時候一切都很順利,但后來卻碰到一個難題,就是Oracle 9i的單個進程占用的內存過多。
  
  經過一段時間測試,在先后解決了其它問題后,最后的主要問題集中到了內存上,ORACLE9i在AIX 5L上每個進程都占用了很多內存,一個空連接進程就會用到5M多的內存,而眾所周知,Oracle8i的單個進程占用的內存一般是2~3M,所以這就引起了我們的高度重視,因為假如按此計算,1000個連接什么事不做就要5G內存了!而我們的實際應用連接數比這還要多。
  
  在出現問題之后,我先后對ORACLE進行了不同方向的調整,也問過了一些朋友以及IBM和ORACLE的技術支持, 翻遍了國內外我所知道的論壇,都沒有看到任何有意思的消息,更不要說解決方案了。這讓我開始懷疑是Oracle9i的BUG,果然在6月底Oracle公布了這個BUG(我是在7月底看到的,因為7月份的大部分時間在處理別的事)!造成這個問題是因為AIX上C的編譯器問題,使得本來可以共享的部分,最后都沒有共享,造成每個進程都浪費了大約1MB的內存。詳情參見本文最后BUG:3028673的描述。
  
  為了驗證確實是AIX的問題,我在另外一臺HP-UX B11.11上進行了同樣的測試,結果顯示Oracle9i的單個進程仍然占用很多內存!經過分析發現這是由于兩方面原因造成的:
  
  1、Oracle9i的初始化參數CURSOR_SPACE_FOR_TIME從默認的FALSE改成了TRUE;
  
  2、HP-UX上的Oracle9i將虛擬內存數據頁(virtual memory data pages)的默認值從原來的D(4KB)改成了L(1GB)。
  
  使用/usr/bin/chatr $ORACLE_HOME/bin/oracle查看oracle程序的內部屬性 ,我們發現虛擬內存的text段從原來的16M改成了64M,而DATA段從原來的64M改成了L(最大可達到1GB)。經過測試驗證 ,DATA段這個參數直接影響了Oracle9i單個進程所占用的內存的大小 。對于空連接來說,4MB是擴展的臨界點,因為空連接是擴不到16MB(4MB的下一個可設DATA段大小)。
  
  Oracle8i和Oracle9i虛擬內存默認值對比:
  8i
  ......
  shared library binding:
    deferred
  global hash table disabled shared vtable support disabled segments:
    index type address flags size
     5 text 4000000000000000 z-r-c 16M
     6 data 8000000100000000 ---m- 64M
  executable from stack: D (default)kernel assisted branch prediction enabled lazy swap allocation for dynamic segments disabled
  
  9i
  .........
  shared library binding:
    deferred
  global hash table disabled shared vtable support disabled segments:
    index type address flags size
     5 text 4000000000000000 z-r-c 64M
     6 data 8000000100000000 ---m- L (largest possible)executable from stack: D (default)kernel assisted branch prediction enabled lazy swap allocation for dynamic segments disabled
  
  我們可以使用/usr/bin/chatr +pd newsize $ORACLE_HOME/bin/oracle來更改DATA段的可用內存大小,對于text段的內存大小我們也可以使用chatr +pi來改,但gototop并不建議你這樣做,因為text段是給命令用的。
  
  至此,我就在想了,自然在HP-UX上是因為這個原因造成的,那么在AIX上除了C編譯器的原因之外,是否也存在著同樣的問題呢?到目前為止,gototop還沒有的等到任何可靠的消息來證實這一點,但我猜想可能性很大。
  
  附、BUG:3028673描述
  
Oracle9i進程內存占用問題解決方法


  問題陳述:
  
  ORACLE ON AIX DOES NOT SHARE MANY CONST STRUCTS - PER PROCESS MEMORY OVERHEAD
  
  --------------------------------------------------------------------------------
  
  *** 06/27/03 10:31 am ***
  
  =========================  
  
  PROBLEM:
  
  1. Clear description of the problem encountered:
  
  Oracle on IBM AIX platforms (AIX 5L and 4.3.3) use a large amount of memory per dedicated connection. For Oracle 9.2 on AIX 5L the memory required per idle Oracle process appears to be about 5Mb. A significant portion of this is related to non-shared const structures (probably about 1Mb) . 
  
  This bug is to track the issue of the non-shared const structures.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平和县| 沁源县| 普定县| 乡宁县| 连云港市| 松江区| 西安市| 大姚县| 双流县| 华容县| 宁波市| 土默特右旗| 潞城市| 礼泉县| 大足县| 海阳市| 定远县| 沾益县| 石首市| 弋阳县| 宁都县| 潮州市| 乐山市| 睢宁县| 新干县| 临颍县| 水城县| 杭州市| 二连浩特市| 融水| 大庆市| 清丰县| 兴城市| 浮梁县| 突泉县| 资中县| 昭通市| 湄潭县| 凭祥市| 湄潭县| 常德市|