IPC 资源、kernel.shmmax和Oracle 共享内存的调整
2013-06-29 21:26
549 查看
㈠ IPC 资源查看与释放
[root@david ~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
...
...
0xbe3bb918 5439503 oracle 640 419438592 22
[root@david ~]# ipcs -m -i 5439503
Shared memory Segment shmid=5439503
uid=501 gid=502 cuid=501 cgid=502
mode=0640 access_perms=0640
bytes=419438592 lpid=5335 cpid=5283 nattch=21
att_time=Sat Jun 29 18:50:06 2013
det_time=Sat Jun 29 18:51:07 2013
change_time=Sat Jun 29 18:49:33 2013
注释:
cuid:创建这个共享内存的用户ID
cgid:创建这个共享内存的组ID
lpid:最后一次访问这个共享内存的PID
nattch: 连接到共享内存段的进程数
att_time:最后一次调用shmat()的时间
det_time:最后一次调用shmdt()的时间 [shmdt函数释放共享内存]
change_time:最后一次用shmctl()修改共享内存段的时间 [shmctl删除共享内存]
[root@david ~]# ipcrm -m 5439503
[root@david ~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
...
...
0x00000000 5439503 oracle 640 419438592 20 dest
此时 status 变成 dest、而key变成 0x00000000
[root@david ~]# ipcs -m -i 5439503
Shared memory Segment shmid=5439503
uid=501 gid=502 cuid=501 cgid=502
mode=01640 access_perms=0640
bytes=419438592 lpid=5993 cpid=5283 nattch=19
att_time=Sat Jun 29 19:29:42 2013
det_time=Sat Jun 29 19:29:42 2013
change_time=Sat Jun 29 18:49:33 2013
㈡ 共享内存
shmmax 内核参数定义单个共享内存段的最大值、如果该参数设置小于Oracle SGA设置
那么SGA就会被分配多个共享内存段、引发性能下降、为了避免多个共享内存段、
我们可以修改shmmax 内核参数、使SGA 存在于一个共享内存段中
修改shmmax方法:
1) 直接编辑/etc/sysctl.conf
2) sysctl -w kernel.shmmax=xxx
3) echo "kernel.shmmax=xxxx" >> /etc/sysctl.conf
修改完之后、sysctl -p
在Oracle 里面、如果开启 NUMA特性、则共享内存是要分段的、这会引发很多的bug
DBA 在启动一个特性时、一定要了解该特性的来龙去脉以及全面评估该特性所产生的影响!
所以、我们一般:
alter system set "_enable_numa_optimization"= false scope=spfile;
不过、这个隐藏参数到 11gR2 好像被废除了、11gR1还存在的
这也从侧面告诉我们、Oracle的东东、我们还是使用R2 的比较放心哈
㈢ 查看Oracle共享内存的使用情况
sys@ORCL> oradebug setmypid
Statement processed.
sys@ORCL> oradebug ipc
Information written to trace file.
sys@ORCL> oradebug TRACEFILE_NAME
/u01/app/oracle/admin/orcl/udump/orcl_ora_6161.trc
将trc文件结合ipcs -m -i shmid 来对照查看、这里就不赘述了
By David Lin
2013-06-29
Good Luck
[root@david ~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
...
...
0xbe3bb918 5439503 oracle 640 419438592 22
[root@david ~]# ipcs -m -i 5439503
Shared memory Segment shmid=5439503
uid=501 gid=502 cuid=501 cgid=502
mode=0640 access_perms=0640
bytes=419438592 lpid=5335 cpid=5283 nattch=21
att_time=Sat Jun 29 18:50:06 2013
det_time=Sat Jun 29 18:51:07 2013
change_time=Sat Jun 29 18:49:33 2013
注释:
cuid:创建这个共享内存的用户ID
cgid:创建这个共享内存的组ID
lpid:最后一次访问这个共享内存的PID
nattch: 连接到共享内存段的进程数
att_time:最后一次调用shmat()的时间
det_time:最后一次调用shmdt()的时间 [shmdt函数释放共享内存]
change_time:最后一次用shmctl()修改共享内存段的时间 [shmctl删除共享内存]
[root@david ~]# ipcrm -m 5439503
[root@david ~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
...
...
0x00000000 5439503 oracle 640 419438592 20 dest
此时 status 变成 dest、而key变成 0x00000000
[root@david ~]# ipcs -m -i 5439503
Shared memory Segment shmid=5439503
uid=501 gid=502 cuid=501 cgid=502
mode=01640 access_perms=0640
bytes=419438592 lpid=5993 cpid=5283 nattch=19
att_time=Sat Jun 29 19:29:42 2013
det_time=Sat Jun 29 19:29:42 2013
change_time=Sat Jun 29 18:49:33 2013
㈡ 共享内存
shmmax 内核参数定义单个共享内存段的最大值、如果该参数设置小于Oracle SGA设置
那么SGA就会被分配多个共享内存段、引发性能下降、为了避免多个共享内存段、
我们可以修改shmmax 内核参数、使SGA 存在于一个共享内存段中
修改shmmax方法:
1) 直接编辑/etc/sysctl.conf
2) sysctl -w kernel.shmmax=xxx
3) echo "kernel.shmmax=xxxx" >> /etc/sysctl.conf
修改完之后、sysctl -p
在Oracle 里面、如果开启 NUMA特性、则共享内存是要分段的、这会引发很多的bug
DBA 在启动一个特性时、一定要了解该特性的来龙去脉以及全面评估该特性所产生的影响!
所以、我们一般:
alter system set "_enable_numa_optimization"= false scope=spfile;
不过、这个隐藏参数到 11gR2 好像被废除了、11gR1还存在的
这也从侧面告诉我们、Oracle的东东、我们还是使用R2 的比较放心哈
㈢ 查看Oracle共享内存的使用情况
sys@ORCL> oradebug setmypid
Statement processed.
sys@ORCL> oradebug ipc
Information written to trace file.
sys@ORCL> oradebug TRACEFILE_NAME
/u01/app/oracle/admin/orcl/udump/orcl_ora_6161.trc
将trc文件结合ipcs -m -i shmid 来对照查看、这里就不赘述了
By David Lin
2013-06-29
Good Luck
相关文章推荐
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- 查看ipc资源情况及其删除共享内存命令
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- 将Oracle数据库操作模式改为共享服务器模式--调整ORACLE内存设置--修改Oracle最大连接数
- 将Oracle数据库操作模式改为共享服务器模式--调整ORACLE内存设置--修改Oracle最大连接
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- 进程间通信(IPC)---共享内存
- 细说linux IPC(五):system V共享内存
- Linux C编程--进程间通信(IPC)5--System V IPC 机制3--共享内存
- IPC最快的方式----共享内存(shared memory)
- oracle实例内存(SGA和PGA)调整
- linux ipc机制-共享内存
- Oracle 在AIX上的性能调整 -- 内存篇
- oracle实例的内存(SGA和PGA)进行调整,优化数据库性
- linux-c: ipc_共享内存
- Oracle的实例占用内存调整
- ipc连接时出来这个提示: 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的连接,然后在试一次...
- 对oracle实例的内存(SGA和PGA)进行调整,优化数据库性
- oracle自动内存共享管理测试。修改 oracle 11g SGA_MAX_SIZE。