针对Oracle用户的Linux高级命令详解之资源管理篇(三)

2014-11-24 12:48:35 · 作者: · 浏览: 3
号组

要删除某个共享内存段,注意ipcs命令输出中它的shmid,然后使用-m选项删除该段,要删除
ID为3735562段,使用:
[sql]
[root@Think ~]# ipcrm -m 3735562
ipcrm: already removed id (3735562)

这将删除该共享内存,还可以使用该命令删除信号和IPC消息队列(使用-s和-q参数)

针对Oracle用户的用法

有时当您关闭数据库实例时,Linux内核可能未完全清除共享内存段
留下的共享内存没有什么用处,但是它会占用 系统资源,从而使可用于其他进程的内存更少
这种情况下,可以检查oracle用户所拥有的任何延迟共享内存段,然后删除它们,如果有这样
的段,使用ipcrm删之

⑷ vmstat

vmstat是最早用于显示所有与内存和进程相关信息的命令
调用时,该命令持续运行并发布其信息
它有两个参数:
vmstat
是两次运行之间的时间间隔,以秒为单位
是vmstat重复的次数
下面是当我们希望vmstat每隔5秒运行一次并在第10次运行后停止时的例子
每5秒之后都会输出一行并显示此时的统计信息
[sql]
[root@Think ~]# vmstat 5 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 38576 76284 639688 0 0 25 24 98 186 1 1 97 1 0
0 0 0 38532 76292 639716 0 0 0 22 102 194 0 0 99 0 0
0 0 0 38516 76292 639720 0 0 0 13 99 187 0 0 99 0 0
0 0 0 38524 76300 639720 0 0 0 68 121 232 1 0 99 0 0
0 0 0 38524 76304 639720 0 0 0 16 165 298 1 1 99 0 0
0 0 0 38540 76308 639720 0 0 0 16 84 176 0 0 99 0 0
0 0 0 38524 76316 639840 0 0 0 81 94 187 0 0 99 0 0
1 0 0 38404 76324 639848 0 0 0 17 89 181 0 0 100 0 0
0 0 0 38404 76324 639848 0 0 0 13 93 180 0 0 99 0 0
2 0 0 38420 76328 639848 0 0 0 11 220 364 1 1 99 0 0

该输出显示有关系统资源的大量信息,我们来详细介绍他们:
\

有时,还存在另外一列,该列位于标题“w”下,显示可以运行但已经交换到交换分区的进程数
"b"下的数值应该接近于0,如果"w"下的数值很高,可能需要运行更多的内存

下表显示了内存指标:
\

缓冲区内存(buff)用来存储文件元数据(如i-nodes)以及原始块设备中的数据
缓存内存(cache)用于文件数据本身

下表显示了交换活动
\

下表显示了I/O活动
\

下表显示了系统相关活动
\

最后这张表可能用得最多---有关CPU负载的信息
\

让我们看一下如何解释这些值
输出的第一行是自从系统重新启动以来所有指标的平均值
因此,可忽略该行,因为它并不显示当前状态,其他行则显示实时指标

理想情况下,等待或阻塞的进程数量(位于"procs"标题下)应该为0或接近于0
如果数值较高,则表示系统没有足够的资源(如CPU 内存或I/O)
诊断性能问题时,该信息非常重要

"swap"下的数据表明交换是否过多,如果交换过多,则表明物理内存可能不足
应该减少内存需求或增加物理RAM

"io"下的数据表示往返于磁盘的数据流,这表明正在进行的磁盘活动量,这并不一定表明
存在问题
如果您看到"procs"的"b"(正在阻塞的进程)下有较大的数值和较高的I/O,则可能出现严重的
I/O争用问题

"cpu"标题下是最有用的信息,"id"列显示空闲CPU,如果用100减去该值,则会得到繁忙
CPU的百分比
与top相比,top显示每个CPU的空闲百分比,而vmstat显示所有CPU的空闲百分比

vmstat命令还显示CPU的使用情况的划分: Linux系统使用多少,用户进程使用多少以及等
待I/O使用多少
通过该划分,您可以确定CPU消耗的组成,如果系统CPU负载过高,能表明正在运行某个
根进程吗?

一段时间内的系统负载应该一致,如果系统显示较高的值,请配合使用top命令确定占有CPU
的系统进程

www.2cto.com
针对Oracle用户的用法

Oracle进程(后台进程和服务器进程)和用户进程(sqlplus,apache等)位于"us"下
如果该数值较高,则使用top来确定进程;如果"wa"列显示较高数值,则表明I/O系统无法跟上
读取或写入的数量
有时这可能是因为在数据库中进行大量的更新,从而导致switch log以及后续的大量归档进程
但是,如果他持续显示一个较大的数值,则表明可能存在I/O瓶颈

Oracle数据库中的I/O瓶颈可能会造成严重的问题,与性能问题不同,慢速I/O可能导致控制文件
写入速度缓慢
这会导致等待获取控制文件的进程加入队列,如果等待超过900秒且等待者是关键进程
(如LGWR),则会关闭数据库实例