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

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle數(shù)據(jù)庫分析和解決ora-4030錯誤

2024-08-29 13:37:11
字體:
供稿:網(wǎng)友

  ORA-4030意味著什么?
  
  這個錯誤意味著Oracle服務(wù)器進程不能從操作系統(tǒng)獲得更多的內(nèi)存。這里的內(nèi)存指的是PGA(程序全局區(qū))以及由配置決定的它的子項。對于專用的服務(wù)器進程,內(nèi)存包括堆棧區(qū)、UGA(用戶全局區(qū))。UGA包括用戶會話數(shù)據(jù)、游標信息和排序區(qū)。在多線程配置中(共享服務(wù)器),UGA處于SGA(系統(tǒng)全局區(qū))中,它不會造成ora-4030錯誤。
  
  因此,ora-4030意味著進程需要更多的內(nèi)存(堆棧、UGA或者PGA)來執(zhí)行它的工作。
  
  是什么引起了這個錯誤?
  
  這個錯誤表示操作系統(tǒng)不能分配足夠的內(nèi)存。這個錯誤可能是你的進程本身引起的,例如你的進程需要太多的內(nèi)存,或者其它的原因引起操作系統(tǒng)內(nèi)存枯竭,例如SGA區(qū)分得太大或者太多的進程競爭系統(tǒng)虛擬內(nèi)存(物理內(nèi)存+交換分區(qū))。許多操作系統(tǒng)會限制某個進程獲得的內(nèi)存以保證系統(tǒng)穩(wěn)定。
  
  請按以下步驟檢查你的系統(tǒng):
  
  ·是否仍有足夠的內(nèi)存供分配?
  
  ·操作系統(tǒng)是否有限制?
  
  ·Oracle數(shù)據(jù)庫是否有限制?
  
  ·哪一個進程需要過多的內(nèi)存?
  
  ·如何收集那個(需要過多內(nèi)存的)進程正在做什么的信息?
  
  這些將在下一節(jié)里討論。
  
  進一步討論主題:
  
  ·避免此類錯誤的一般建議
  
  ·參考
  
  是否仍有足夠的內(nèi)存供分配?
  
  要回答這個問題,我們需要使用操作系統(tǒng)特定的工具來檢測內(nèi)存使用情況。
  
  1.OpenVMS系統(tǒng):顯示那些能告訴你物理內(nèi)存和頁面文件使用情況的信息。
  
  Physical Memory Usage (pages):
  
  Total     Free      In Use      Modified    Main Memory (256.00Mb)    32768      24849      7500        419
  
  ……
  
  Paging File Usage(blocks):
  
  Free  Reservable Total
  
  DISK$BOBBIEAXPSYS:[SYS0.SYSEXE]SWAPFILE.SYS  30720  30720   39936 DISK$BOBBIEAXPSYS:[SYS0.SYSEXE]PAGEFILE.SYS  2261   60201088 249984  DISK$BOBBIE_USER3:[SYS0.PAGEFILE]PAGEFILE.SYS 462224  405296  499968
  
  作為一般的原則,頁面文件中的空閑容量總量應(yīng)該不低于總?cè)萘康囊话搿=粨Q文件應(yīng)該幾乎不使用,空閑的容量應(yīng)該幾乎和總?cè)萘恳粯印?br />  
  1.Windows系統(tǒng):在任務(wù)治理器中查看內(nèi)存使用情況。
  
  2.Unix系統(tǒng):每一個Unix系統(tǒng)都有自己的工具來檢測全部內(nèi)存的使用情況,例如top,vmstat…..,并且每一個系統(tǒng)都有所不同。
  
  o top常用來顯示物理內(nèi)存和交換空間的情況。
  
  o swapon –s 顯示交換空間使用情況
  
  o vmstat 顯示空閑物理內(nèi)存情況
  
  Sample top output on linux:
  
  在Linux上“top”的輸出例子:
  
  top - 10:17:09 up  1:27,  4 users,  load average: 0.07, 0.12, 0.05
  
  Tasks: 110 total,  4 running, 105 sleeping,   0 stopped,   1 zombie
  
  Cpu(s):  0.3% user,  1.6% system,  0.0% nice,  98.0% idle
  
  Mem:  1033012k total,  452520k used,  580492k free,  59440k buffers
  
  Swap:  1052248k total,  0k used,    1052248k free,  169192k cached
  .....
  
  假如有足夠的內(nèi)存,那么請檢查一下是否操作系統(tǒng)有強制限制。假如內(nèi)存被耗盡了,我們就要找出這些內(nèi)存被用在了哪里。
  
  操作系統(tǒng)是否有限制?
  
  假如仍有充足的虛擬內(nèi)存剩余,可能是我們不能使用申請使用的那部分內(nèi)存。請檢查操作系統(tǒng)是否有限制。
  
  1.OpenVMS系統(tǒng):要檢查你能使用的物理內(nèi)存的總量,請檢查工作(頁面)區(qū)配額(working set quotas)和頁面文件配額(pagefile quota)。
請查詢OpenVMS使用指南確定配額情況和如何修改它們。根據(jù)使用進程的不同以及啟動它們方式的不同,配額使用將不同于oracle的統(tǒng)計。Process/id=<process id>/quota將顯示對于一個特定的進程還有多少剩余配額可使用。
  
  UAF> show oracle7
  
  Username: ORACLE7               Owner:  Oracle7 DBA
  
  Account:  SUPPORT               UIC: [200,2] ([SUPPORT,ORACLE7])
  
  CLI:   DCL                  Tables: DCLTABLES
  
  Default:  DISK$BOBBIE_USER1:[ORACLE7]
  
  LGICMD:   LOGINFlags:
  
  PRimary days:     Mon    Tue    Wed    Thu    Fri
  
  Secondary days:                     Sat    Sun
  
  No access restrictions
  
  Expiration:    (none) Pwdminimum: 6   Login Fails: 0
  
  Pwdlifetime:   (none) Pwdchange:   3-DEC-1997 15:38
  
  Last Login: 27-MAY-2003 14:54 (interactive), 26-MAY-2003 16:15 (non-interactive)
  
  Maxjobs: 0  Fillm:  1200  Bytlm:  180000
  
  Maxacctjobs:0 Shrfillm:  0  Pbytlm:    0
  
  Maxdetach: 0 BIOlm:  500  JTquota:  8192
  
  Prclm: 20  DIOlm:  500  WSdef:   2500
  
  Prio:  4  ASTlm:  4000  WSquo:  4096
  
  Queprio:0  TQElm:  4000  WSextent:  30000
  
  CPU: (none) Enqlm: 18000  Pgflquo:   750000
  
  Authorized Privileges: .....
  
  $ sho proc/id=20200139/quota
  
  24-JUN-2003 12:30:54.39 User: ORACLE7 Process ID: 20200139
  
  Node: BOBBIE  Process name: "ORA_BOB901_PMON"
  
  Process Quotas:
  
  Account name: SUPPORT
  
  CPU  limit:  Infinite  Direct I/O limit:100
  
  Buffered I/O byte count quota:   9994816  Buffered I/O limit: 100
  
  Timer queue entry quota: 99  Open file quota:29997
  
  Paging file quota: 145968  Subprocess quota: 10
  
  Default page fault cluster:64  AST quota: 496
  
  Enqueue quota: 49995  Shared file limit: 0
  
  Max detached processes: 0  Max active jobs: 0
  
  2.Windows系統(tǒng):在微軟的windows操作系統(tǒng)上,oracle進程集作為一個進程的許多線程來運行。地址空間不能超過2GB(包括堆棧、PGA、SGA)。這個限制可以突破到3GB或更高。(請看oracle文檔<NOTE:46001.1>)。關(guān)于oracle數(shù)據(jù)庫和Windows NT內(nèi)存結(jié)構(gòu)的情況,請查詢技術(shù)公告板。Oracle進程使用的總的內(nèi)存情況(不包括進程堆棧和代碼)可以用query查看。
  
  3.Unix系統(tǒng):使用內(nèi)置的shell命令: limit/ulimit。注重那些unlimited的不一定意味著無限制,而是可能有著老系統(tǒng)的限制,例如2GB。
  
  Linux系統(tǒng)上輸出的一個例子:
  
  aroelant@aroelant-be:~> ulimit -a
  
  core file size(blocks, -c)    0
  
  data seg size(kbytes, -d)   unlimited
  
  file size(blocks, -f)    unlimited
  
  max locked memory(kbytes, -l)    unlimited
  
  max memory size(kbytes, -m)    unlimited
  
  open files(-n)    1024
  
  pipe size(512 bytes, -p)    8
  
  stack size(kbytes, -s)    unlimited
  
  cpu time(seconds, -t)    unlimited
  
  max user processes(-u)    7168
  
  virtual memory(kbytes, -v)  unlimited
  
  有可能是內(nèi)存限制定得太小了,需要增大它。
也可能是我們需索得太多
  
  Oracle數(shù)據(jù)庫是否有限制?
  
  從oracle 9i以后,有一個參數(shù)決定一個oracle實例可以分配到PGA總量。<Note:223730.1>"Automatic PGA Memory Managment in 9i"提供了更多關(guān)于這方面的信息。下面的查詢可以用來找出分配給所有會話的PGA區(qū)域的內(nèi)存總量。
  
  SQL> select  sum(value)/1024/1024 Mb from v$sesstat s, v$statname n
  
  Where n.STATISTIC# = s.STATISTIC# and name =’session pga memory’;
  
  哪一個進程需要過多的內(nèi)存?  某些操作需要大量的內(nèi)存例如巨大PL/SQL表或者大量的排序操作。在這種情況下,在返回ora-4030錯誤之前進程將運行一段時間。希望我們可以找出內(nèi)存被分配給哪個進程以及為什么被分配。你可以使用如下的查詢查出oracle數(shù)據(jù)庫PGA和UGA的運行情況。
  
  SQL>col name format a30SQL>select sid,name,value from  v$statname n,v$sesstat s
  
  where n.STATISTIC# = s.STATISTIC# and name like 'session%memory%' order by 3 asc;
  
  這個查詢將顯示

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒲江县| 绥德县| 嘉鱼县| 宜昌市| 都昌县| 鄂温| 胶南市| 房产| 铅山县| 佛冈县| 宝清县| 东平县| 南岸区| 吉木萨尔县| 房产| 新沂市| 民权县| 孝感市| 长岛县| 卢氏县| 仁化县| 保山市| 民权县| 溧阳市| 庄浪县| 芦山县| 林州市| 赣榆县| 达州市| 灵川县| 湖州市| 五寨县| 高要市| 山阴县| 三台县| 东台市| 桦甸市| 新昌县| 泉州市| 清流县| 太谷县|