Linux上shmmax引數的設定及含義
shmmax核心引數定義單個共享記憶體段的最大值,如果該引數設定小於Oracle SGA設定,那麼SGA就會被分配多個共享記憶體段。這在繁忙的系統中可能成為效能負擔,帶來系統問題。
Linux上該引數的預設值通常為32M。
可以透過ipcs命令檢視此設定下共享記憶體的分配,我們可以看到Oracle分配了多個共享記憶體段以滿足SGA設定的需要:
使用pmap我們可以看到每個共享記憶體段的地址空間
為了避免多個共享記憶體段,我們可以修改shmmax核心引數,使SGA存在於一個共享記憶體段中。
透過修改/proc/sys/kernel/shmmax引數可以達到此目的。
這裡設為1G。
對於shmmax檔案的修改,系統重新啟動後會復位。可以透過修改 /etc/sysctl.conf 使更改永久化。
在該檔案內新增以下一行
這個更改在系統重新啟動後生效
kernel.shmmax = 1073741824
重起資料庫使更改生效:
此時程式的pmap對映顯示為:
實際上,如果沒有修改shmmax引數,Oracle在啟動過程中就會報出以下錯誤:
注:轉 大師的文章。
-----------------------------------------------------------------------------------------------------------------------
2014.5.16 11:08
share you knowledge with the world.
Linux上該引數的預設值通常為32M。
[root@neirong root]# more /proc/sys/kernel/shmmax 33554432 |
可以透過ipcs命令檢視此設定下共享記憶體的分配,我們可以看到Oracle分配了多個共享記憶體段以滿足SGA設定的需要:
[root@neirong root]# ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 884736 oracle 640 4194304 14 0x00000000 917505 oracle 640 33554432 14 0x00000000 950274 oracle 640 33554432 14 0x00000000 983043 oracle 640 33554432 14 0x00000000 1015812 oracle 640 33554432 14 0x00000000 1048581 oracle 640 33554432 14 0x00000000 1081350 oracle 640 33554432 14 0x00000000 1114119 oracle 640 33554432 14 0x00000000 1146888 oracle 640 33554432 14 0x00000000 1179657 oracle 640 33554432 14 0x00000000 1212426 oracle 640 33554432 14 0x00000000 1245195 oracle 640 33554432 14 0x00000000 1277964 oracle 640 33554432 14 0x00000000 1310733 oracle 640 33554432 14 0x00000000 1343502 oracle 640 33554432 14 0x00000000 1376271 oracle 640 33554432 14 0x00000000 1409040 oracle 640 33554432 14 0x00000000 1441809 oracle 640 33554432 14 0x00000000 1474578 oracle 640 33554432 14 0x00000000 1507347 oracle 640 33554432 14 0x00000000 1540116 oracle 640 33554432 14 0x00000000 1572885 oracle 640 33554432 14 0x00000000 1605654 oracle 640 33554432 14 0x00000000 1638423 oracle 640 33554432 14 0x00000000 1671192 oracle 640 33554432 14 0x00000000 1703961 oracle 640 33554432 14 0x7a9c9900 1736730 oracle 640 4194304 56 ------ Semaphore Arrays -------- key semid owner perms nsems 0xfcf02e10 229376 oracle 640 154 ------ Message Queues -------- key msqid owner perms used-bytes messages |
使用pmap我們可以看到每個共享記憶體段的地址空間
[root@neirong root]# ps -ef|grep 3102 oracle 3102 1 0 09:27 ? 00:00:26 ora_dbw0_hsmkt root 3447 3397 0 10:39 pts/4 00:00:00 grep 3102 [root@neirong root]# pmap 3102 ora_dbw0_hsmkt[3102] 08048000 (37308 KB) r-xp (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0a4b7000 (8804 KB) rw-p (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0ad50000 (380 KB) rw-p (00:00 0) 50000000 (4096 KB) rw-s (00:04 884736) /SYSV00000000 51000000 (32768 KB) rw-s (00:04 917505) /SYSV00000000 53000000 (32768 KB) rw-s (00:04 950274) /SYSV00000000 55000000 (32768 KB) rw-s (00:04 983043) /SYSV00000000 57000000 (32768 KB) rw-s (00:04 1015812) /SYSV00000000 59000000 (32768 KB) rw-s (00:04 1048581) /SYSV00000000 5b000000 (32768 KB) rw-s (00:04 1081350) /SYSV00000000 5d000000 (32768 KB) rw-s (00:04 1114119) /SYSV00000000 5f000000 (32768 KB) rw-s (00:04 1146888) /SYSV00000000 61000000 (32768 KB) rw-s (00:04 1179657) /SYSV00000000 63000000 (32768 KB) rw-s (00:04 1212426) /SYSV00000000 65000000 (32768 KB) rw-s (00:04 1245195) /SYSV00000000 67000000 (32768 KB) rw-s (00:04 1277964) /SYSV00000000 69000000 (32768 KB) rw-s (00:04 1310733) /SYSV00000000 6b000000 (32768 KB) rw-s (00:04 1343502) /SYSV00000000 6d000000 (32768 KB) rw-s (00:04 1376271) /SYSV00000000 6f000000 (32768 KB) rw-s (00:04 1409040) /SYSV00000000 71000000 (32768 KB) rw-s (00:04 1441809) /SYSV00000000 73000000 (32768 KB) rw-s (00:04 1474578) /SYSV00000000 75000000 (32768 KB) rw-s (00:04 1507347) /SYSV00000000 77000000 (32768 KB) rw-s (00:04 1540116) /SYSV00000000 79000000 (32768 KB) rw-s (00:04 1572885) /SYSV00000000 7b000000 (32768 KB) rw-s (00:04 1605654) /SYSV00000000 7d000000 (32768 KB) rw-s (00:04 1638423) /SYSV00000000 7f000000 (32768 KB) rw-s (00:04 1671192) /SYSV00000000 81000000 (32768 KB) rw-s (00:04 1703961) /SYSV00000000 83000000 (4 KB) r--s (00:04 1736730) /SYSV7a9c9900 83001000 (644 KB) rw-s (00:04 1736730) /SYSV7a9c9900 830a2000 (4 KB) r--s (00:04 1736730) /SYSV7a9c9900 830a3000 (3444 KB) rw-s (00:04 1736730) /SYSV7a9c9900 b6ec2000 (44 KB) r-xp (68:03 32811) /lib/libnss_files-2.3.2.so b6ecd000 (4 KB) rw-p (68:03 32811) /lib/libnss_files-2.3.2.so b6ece000 (512 KB) rw-p (68:03 40360) /dev/zero b6f4e000 (1140 KB) rw-p (00:00 0) b706b000 (1224 KB) r-xp (68:03 114692) /lib/tls/libc-2.3.2.so b719d000 (12 KB) rw-p (68:03 114692) /lib/tls/libc-2.3.2.so b71a0000 (12 KB) rw-p (00:00 0) b71a3000 (72 KB) r-xp (68:03 32795) /lib/libnsl-2.3.2.so b71b5000 (4 KB) rw-p (68:03 32795) /lib/libnsl-2.3.2.so b71b6000 (8 KB) rw-p (00:00 0) b71b8000 (52 KB) r-xp (68:03 114696) /lib/tls/libpthread-0.60.so b71c5000 (4 KB) rw-p (68:03 114696) /lib/tls/libpthread-0.60.so b71c6000 (8 KB) rw-p (00:00 0) b71c8000 (132 KB) r-xp (68:03 114694) /lib/tls/libm-2.3.2.so b71e9000 (4 KB) rw-p (68:03 114694) /lib/tls/libm-2.3.2.so b71ea000 (8 KB) r-xp (68:03 32791) /lib/libdl-2.3.2.so b71ec000 (4 KB) rw-p (68:03 32791) /lib/libdl-2.3.2.so b71ed000 (2940 KB) r-xp (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b74cc000 (1088 KB) rw-p (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b75dc000 (12 KB) rw-p (00:00 0) b75df000 (4 KB) r-xp (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e0000 (8 KB) rw-p (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e2000 (4 KB) r-xp (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e3000 (4 KB) ---p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e4000 (4 KB) rw-p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e5000 (4 KB) r-xp (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e6000 (4 KB) rw-p (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e7000 (4 KB) r-xp (68:03 101245) /etc/libcwait.so b75e8000 (4 KB) rw-p (68:03 101245) /etc/libcwait.so b75ea000 (4 KB) rw-p (00:00 0) b75eb000 (84 KB) r-xp (68:03 32778) /lib/ld-2.3.2.so b7600000 (4 KB) rw-p (68:03 32778) /lib/ld-2.3.2.so bfff8000 (32 KB) rwxp (00:00 0) mapped: 881332 KB writable/private: 12056 KB shared: 827392 KB |
為了避免多個共享記憶體段,我們可以修改shmmax核心引數,使SGA存在於一個共享記憶體段中。
透過修改/proc/sys/kernel/shmmax引數可以達到此目的。
[root@neirong root]# echo 1073741824 > /proc/sys/kernel/shmmax [root@neirong root]# more /proc/sys/kernel/shmmax 1073741824 |
這裡設為1G。
對於shmmax檔案的修改,系統重新啟動後會復位。可以透過修改 /etc/sysctl.conf 使更改永久化。
在該檔案內新增以下一行
這個更改在系統重新啟動後生效
kernel.shmmax = 1073741824
重起資料庫使更改生效:
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> ! [oracle@neirong oracle]$ ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status ------ Semaphore Arrays -------- key semid owner perms nsems ------ Message Queues -------- key msqid owner perms used-bytes messages [oracle@neirong oracle]$ exit exit SQL> startup ORACLE instance started. Total System Global Area 839980852 bytes Fixed Size 452404 bytes Variable Size 201326592 bytes Database Buffers 637534208 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> ! ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x7a9c9900 1769472 oracle 640 859832320 35 ------ Semaphore Arrays -------- key semid owner perms nsems 0xfcf02e10 360448 oracle 640 154 ------ Message Queues -------- key msqid owner perms used-bytes messages |
此時程式的pmap對映顯示為:
[oracle@neirong bdump]$ pmap 4178 ora_lgwr_hsmkt[4178] 08048000 (37308 KB) r-xp (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0a4b7000 (8804 KB) rw-p (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0ad50000 (3320 KB) rw-p (00:00 0) 50000000 (835584 KB) rw-s (00:04 1835008) /SYSV7a9c9900 83000000 (4 KB) r--s (00:04 1835008) /SYSV7a9c9900 83001000 (644 KB) rw-s (00:04 1835008) /SYSV7a9c9900 830a2000 (4 KB) r--s (00:04 1835008) /SYSV7a9c9900 830a3000 (3444 KB) rw-s (00:04 1835008) /SYSV7a9c9900 b6bb7000 (4112 KB) rw-p (00:00 0) b6fbb000 (44 KB) r-xp (68:03 32811) /lib/libnss_files-2.3.2.so b6fc6000 (4 KB) rw-p (68:03 32811) /lib/libnss_files-2.3.2.so b6fc7000 (512 KB) rw-p (68:03 40360) /dev/zero b7047000 (144 KB) rw-p (00:00 0) b706b000 (1224 KB) r-xp (68:03 114692) /lib/tls/libc-2.3.2.so b719d000 (12 KB) rw-p (68:03 114692) /lib/tls/libc-2.3.2.so b71a0000 (12 KB) rw-p (00:00 0) b71a3000 (72 KB) r-xp (68:03 32795) /lib/libnsl-2.3.2.so b71b5000 (4 KB) rw-p (68:03 32795) /lib/libnsl-2.3.2.so b71b6000 (8 KB) rw-p (00:00 0) b71b8000 (52 KB) r-xp (68:03 114696) /lib/tls/libpthread-0.60.so b71c5000 (4 KB) rw-p (68:03 114696) /lib/tls/libpthread-0.60.so b71c6000 (8 KB) rw-p (00:00 0) b71c8000 (132 KB) r-xp (68:03 114694) /lib/tls/libm-2.3.2.so b71e9000 (4 KB) rw-p (68:03 114694) /lib/tls/libm-2.3.2.so b71ea000 (8 KB) r-xp (68:03 32791) /lib/libdl-2.3.2.so b71ec000 (4 KB) rw-p (68:03 32791) /lib/libdl-2.3.2.so b71ed000 (2940 KB) r-xp (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b74cc000 (1088 KB) rw-p (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b75dc000 (12 KB) rw-p (00:00 0) b75df000 (4 KB) r-xp (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e0000 (8 KB) rw-p (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e2000 (4 KB) r-xp (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e3000 (4 KB) ---p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e4000 (4 KB) rw-p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e5000 (4 KB) r-xp (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e6000 (4 KB) rw-p (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e7000 (4 KB) r-xp (68:03 101245) /etc/libcwait.so b75e8000 (4 KB) rw-p (68:03 101245) /etc/libcwait.so b75ea000 (4 KB) rw-p (00:00 0) b75eb000 (84 KB) r-xp (68:03 32778) /lib/ld-2.3.2.so b7600000 (4 KB) rw-p (68:03 32778) /lib/ld-2.3.2.so bfffc000 (16 KB) rwxp (00:00 0) mapped: 899660 KB writable/private: 18096 KB shared: 839680 KB |
實際上,如果沒有修改shmmax引數,Oracle在啟動過程中就會報出以下錯誤:
Starting ORACLE instance (normal) Thu Nov 17 09:27:29 2005 WARNING: EINVAL creating segment of size 0x0000000033400000 fix shm parameters in /etc/system or equivalent |
注:轉 大師的文章。
-----------------------------------------------------------------------------------------------------------------------
2014.5.16 11:08
share you knowledge with the world.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1162535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux上shmmax引數的設定及含義(轉)LinuxHMM
- 安裝oracle時引數shmmax,shmall的含義OracleHMM
- 安裝ORACLE時在Linux上設定核心引數的含義OracleLinux
- Oracle安裝時shmmax引數的設定OracleHMM
- Linux核心引數(如kernel.shmmax)及Oracle相關引數調整LinuxHMMOracle
- Python 中 key 引數的含義及用法Python
- Python中key引數的含義及用法Python
- Nginx常用配置引數的含義Nginx
- plsql下nocopy引數的含義SQL
- 【LC】locale設定查詢及相關環境變數含義及示例變數
- 【Linux】kernel.shmmax和shmall設定LinuxHMM
- shmmax的設定問題HMM
- Linux 核心(kernel)引數 sysctl.conf , shmmaxLinuxHMM
- GoldenGate 基本引數含義Go
- Linux 下kernel.shmmax 的設定問題LinuxHMM
- Linux核心引數(如kernel.shmmax)及Oracle相關引數調整(如SGA_MAX_SIZE)LinuxHMMOracle
- php引數3個點的含義PHP
- Linux下變數的定義及引用Linux變數
- 函式定義、函式的引數、函式的預設引數函式
- mysqldump --master-data=2引數的含義MySqlAST
- 安裝oracle時核心引數的含義Oracle
- histb 引導核心 boot_cmd 引數含義boot
- 關於Linux 下kernel.shmmax 的設定問題 。LinuxHMM
- Linux各種變數的含義Linux變數
- 部分Oracle 配置檔案引數含義Oracle
- CLUSTER_DATABASE_INSTANCES 引數的真正含義Database
- 安裝oracle資料庫時,設定linux核心引數的意義Oracle資料庫Linux
- Oracle歸檔模式、引數意義、設定Oracle模式
- Python命令列引數定義及注意事項Python命令列
- LINUX下安裝ORACLE的常用設定引數及環境變數說明LinuxOracle變數
- 核心的 shmall 和 shmmax 引數(http://wdicc.com/)HMMHTTP
- JTAG各類介面針腳定義及含義
- CBO,ORACLE,隱含引數,_sort_elimination_cost_ratio的含義Oracle
- Linux中的特殊符號含義及作用!Linux符號
- 詳解數字簽名的含義及作用
- Linux核心網路引數的意義及應用(轉)Linux
- 核心引數kernel.shmall和kernel.shmmaxHMM
- 方法(函式)的定義與引數函式