通过修改/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 |
