分享
 
 
 

Linux上shmmax参数的设置及含义

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

shmmax内核参数定义单个共享内存段的最大值,如果该参数设置小于Oracle SGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有