11g内存管理新特性的internal表现
生活随笔
收集整理的這篇文章主要介紹了
11g内存管理新特性的internal表现
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
11g中自動(dòng)內(nèi)存管理(Automatic Memory Management ,amm), 令dba在數(shù)據(jù)庫(kù)內(nèi)存配置的相關(guān)工作更加簡(jiǎn)單. AMM現(xiàn)在將SGA與PGA整合到一起管理,而您只需要設(shè)置memory_target參數(shù)即可限定Oracle將使用到的內(nèi)存尺寸,Oracle將自動(dòng)分配這些內(nèi)存空間. 您一定很困惑Oracle在unix平臺(tái)上是如何對(duì)共享的sga內(nèi)存空間與私有的pga內(nèi)存空間進(jìn)行切換的?這意味著Oracle需要經(jīng)常釋放sga中的部分內(nèi)存以便允許pga去使用它們.傳統(tǒng)的sys V 使用的共享內(nèi)存shm接口不具備如此的靈活性.我們來(lái)看看Oracle是如何做到的? 先來(lái)獲取我們需要的11g實(shí)例共享內(nèi)存id(shared memory id) [oracle@rh2 ~]$ sysresv // 該命令需要設(shè)置了正確的LD_LIBRARY_PATH IPC Resources for ORACLE_SID "T11" : Shared Memory: ID????????????? KEY 65537?????????? 0x95c84bb8 Semaphores: ID????????????? KEY 327681????????? 0xdf521034 Oracle Instance alive for sid "T11" 試著找出對(duì)應(yīng)的sys V共享內(nèi)存段: [oracle@rh2 ~]$ ipcs -m ------ Shared Memory Segments -------- key??????? shmid????? owner????? perms????? bytes????? nattch???? status 0x95c84bb8 65537????? oracle??? 660??????? 4096?????? 0 對(duì)應(yīng)的存在著共享內(nèi)存段,但該段很小只有 4096 byte哦,既然Oracle不再把sga放到共享段中,那藏到哪里去了呢? 我們接下來(lái)檢查Oracle實(shí)例進(jìn)程的內(nèi)存影射狀況. [oracle@rh2 ~]$? pmap `pgrep -f lgwr`|less 14889:?? ora_lgwr_T11 0000000000400000 155016K r-x--? /usr/oracle/product/11g/db_1/bin/oracle 0000000009c62000? 12404K rw---? /usr/oracle/product/11g/db_1/bin/oracle 000000000a87f000??? 732K rwx--??? [ anon ] 0000000060000000????? 4K r--s-? /dev/shm/ora_T11_65537_0 0000000060001000? 16380K rw-s-? /dev/shm/ora_T11_65537_0 0000000061000000? 16384K rw-s-? /dev/shm/ora_T11_65537_1 0000000062000000? 16384K rw-s-? /dev/shm/ora_T11_65537_2 0000000063000000? 16384K rw-s-? /dev/shm/ora_T11_65537_3 0000000064000000? 16384K rw-s-? /dev/shm/ora_T11_65537_4 0000000065000000? 16384K rw-s-? /dev/shm/ora_T11_65537_5 0000000066000000? 16384K rw-s-? /dev/shm/ora_T11_65537_6 0000000067000000? 16384K rw-s-? /dev/shm/ora_T11_65537_7 0000000068000000? 16384K rw-s-? /dev/shm/ora_T11_65537_8 0000000069000000? 16384K rw-s-? /dev/shm/ora_T11_65537_9 000000006a000000? 16384K rw-s-? /dev/shm/ora_T11_65537_10 000000006b000000? 16384K rw-s-? /dev/shm/ora_T11_65537_11 000000006c000000? 16384K rw-s-? /dev/shm/ora_T11_65537_12 000000006d000000? 16384K rw-s-? /dev/shm/ora_T11_65537_13 000000006e000000? 16384K rw-s-? /dev/shm/ora_T11_65537_14 000000006f000000? 16384K rw-s-? /dev/shm/ora_T11_65537_15 0000000070000000? 16384K rw-s-? /dev/shm/ora_T11_65537_16 0000000071000000? 16384K rw-s-? /dev/shm/ora_T11_65537_17 0000000072000000? 16384K rw-s-? /dev/shm/ora_T11_65537_18 0000000073000000? 16384K rw-s-? /dev/shm/ora_T11_65537_19 0000000074000000? 16384K rw-s-? /dev/shm/ora_T11_65537_20 0000000075000000? 16384K rw-s-? /dev/shm/ora_T11_65537_21 0000000076000000? 16384K rw-s-? /dev/shm/ora_T11_65537_22 0000000077000000? 16384K rw-s-? /dev/shm/ora_T11_65537_23 0000000078000000? 16384K rw-s-? /dev/shm/ora_T11_65537_24 0000000079000000? 16384K rw-s-? /dev/shm/ora_T11_65537_25 000000007a000000? 16384K rw-s-? /dev/shm/ora_T11_65537_26 000000007b000000? 16384K rw-s-? /dev/shm/ora_T11_65537_27 000000007c000000? 16384K rw-s-? /dev/shm/ora_T11_65537_28 000000007d000000? 16384K rw-s-? /dev/shm/ora_T11_65537_29 000000007e000000? 16384K rw-s-? /dev/shm/ora_T11_65537_30 000000007f000000? 16384K rw-s-? /dev/shm/ora_T11_65537_31 0000000080000000? 16384K rw-s-? /dev/shm/ora_T11_65537_32 0000000081000000? 16384K rw-s-? /dev/shm/ora_T11_65537_33 0000000082000000? 16384K rw-s-? /dev/shm/ora_T11_65537_34 0000000083000000? 16384K rw-s-? /dev/shm/ora_T11_65537_35 0000000084000000? 16384K rw-s-? /dev/shm/ora_T11_65537_36 0000000085000000? 16384K rw-s-? /dev/shm/ora_T11_65537_37 0000000086000000? 16384K rw-s-? /dev/shm/ora_T11_65537_38 0000000087000000? 16384K rw-s-? /dev/shm/ora_T11_65537_39 0000000088000000? 16384K rw-s-? /dev/shm/ora_T11_65537_40 0000000089000000? 16384K rw-s-? /dev/shm/ora_T11_65537_41 000000008a000000? 16384K rw-s-? /dev/shm/ora_T11_65537_42 ............ 0000003e79109000????? 4K rw---? /lib64/tls/librt-2.3.4.so 0000003e7910a000???? 64K rw---??? [ anon ] 0000003e79600000???? 84K r-x--? /lib64/libnsl-2.3.4.so 0000003e79615000?? 1020K -----? /lib64/libnsl-2.3.4.so 0000003e79714000????? 4K r----? /lib64/libnsl-2.3.4.so 0000003e79715000????? 4K rw---? /lib64/libnsl-2.3.4.so 0000003e79716000????? 8K rw---??? [ anon ] 0000007fbfff3000???? 52K rwx--??? [ stack ] ffffffffff600000????? 4K r-x--??? [ anon ] total????????? 2497724K pmap工具詮釋了進(jìn)程相關(guān)共享內(nèi)存的情況,可以看到許多個(gè)16MB的"文件"對(duì)應(yīng)了Oracle服務(wù)進(jìn)程的空間地址.這是linux上POSIX風(fēng)格的共享內(nèi)存管理模式,使用"文件"形式包含共享內(nèi)存段. 借助于將sga分割成許多塊,Oracle可以很容易地把sga部分內(nèi)存返回給OS,而服務(wù)器進(jìn)程即可以利用到這些內(nèi)存.(當(dāng)memory_max_target>1024時(shí),顆粒為16MB,否則為4MB). 接下來(lái)我們測(cè)試下Oracle是如何釋放部分sga內(nèi)存的. 對(duì)比實(shí)例啟動(dòng)前后: 啟動(dòng)前: [oracle@rh2 ~]$ ls -l /dev/shm 總用量 0 啟動(dòng)后: [oracle@rh2 ~]$ ls -l /dev/shm 總用量 1373704 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_0 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_1 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_10 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_100 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_101 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_102 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_103 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_104 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_105 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_106 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_107 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_108 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_109 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_11 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_110 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_111 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_112 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_113 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_114 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_115 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_116 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_117 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_118 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_119 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_12 可以看到啟動(dòng)后出現(xiàn)的16MB文件形式共享內(nèi)存中部分大小為0,這些塊被選出當(dāng)發(fā)生內(nèi)存交換時(shí)來(lái)被'destory'.使用pmap工具仍可以看到該部分影射,而實(shí)際上已經(jīng)被Oracle釋放了. 現(xiàn)在我們加大pga,觀察其交換情況. SQL> alter system set pga_aggregate_target=1900M ; System altered. [oracle@rh2 ~]$ ls -l /dev/shm 總用量 289984 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_0 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_1 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_10 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_100 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_101 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_102 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_103 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_104 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_105 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_106 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_107 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_108 -rw-r-----? 1 oracle oinstall 16777216? 9月 27 18:59 ora_T11_327680_109 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_11 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_110 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_111 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_112 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_113 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_114 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_115 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_116 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_117 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_118 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_119 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 18:59 ora_T11_327680_12 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_120 -rw-r-----? 1 oracle oinstall??????? 0? 9月 27 19:09 ora_T11_327680_121 可以看到出現(xiàn)了大量size為0的"文件",期許的交換出現(xiàn)了. 可見(jiàn)在11g中Oracle采用了新的共享內(nèi)存實(shí)現(xiàn)方式,區(qū)別于舊的"一塊式"共享段,更為靈活了.
總結(jié)
以上是生活随笔為你收集整理的11g内存管理新特性的internal表现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 磁盘怎么改图标 磁盘图标修改方法,一键轻
- 下一篇: PCB板查短路点的一种技巧 (转载)