Oracle数据库巡检

本文详述了如何检查和分析系统层面的磁盘空间、CPU使用、内存和负载,以及数据库层面的状况,包括数据库状态、归档日志、表空间使用、异常扩展的对象、系统表空间内容、对象的下一扩展、表空间状态、数据文件状态、无效对象、会话连接数和对象状态。通过对各项指标的监控和诊断,可以有效识别和解决性能问题。

一  、系统层面

1 df -h 检查磁盘空间

如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。

2  检查cpu使用情况

3  检查内存sar -r 2 3 

此输出结果中,各个参数表示的含义如下:

kbmemfree:表示空闲的物理内存的大小;

kbmemeused:表示已使用的物理内存的大小;

%memused:表示已使用内存占总内存大小的百分比;

kbbuffers:表示缓冲区所使用的物理内存的大小;

kbcached:表示告诉缓存所使用的物理内存的大小;

kbcommit 和 %commit:分别表示当前系统中应用程序使用的内存大小和百分比;

4 查看系统负载uptime

 发现系统超负载

根据上述平均负载的定义,能够导致平均负载升高的场景有:

1、处于Running状态的进程大量消耗cpu(CPU密集型进程)

2、大量处于Runnable的进程,cpu会频繁进行上下文切换(寄存器、程序计数器)

     4.1 分析cpu命令mpstat -P ALL 1

        CPU 的用户层(%usr)使用率;

        CPU 的系统层(%sys)使用率;

        CPU 的 I/0 - 等待(%iowait)占用率;

        CPU 的空闲率(%idle)

      看到有一个 CPU 的使用率为 100%,但它的 iowait 只有 0。这说明,平均负载的升高正是由于 CPU 使用率为 100% 。

      通过pidstat查询到哪个进程导致cpu使用率100%

查到有三个进程cpu使用率过高

4.2 查看系统负载vmstat

 r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
该部分原文链接:https://blog.youkuaiyun.com/gu_study/article/details/81942939

  4.3  查看磁盘负载

  rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
   wrqm/s:   每秒进行 merge 的写操作数目。即 delta(wmerge)/s
   r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/s
   w/s:       每秒完成的写 I/O 设备次数。即 delta(wio)/s
   rsec/s: 每秒读扇区数。即 delta(rsect)/s
   wsec/s: 每秒写扇区数。即 delta(wsect)/s
   rkB/s:   每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
   wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
   avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
   avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
   await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
   svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
   %util:    一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)  
   如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
   可能存在瓶颈。
   idle小于70% IO压力就较大了,一般读取速度有较多的wait.

    4.4 ps -axjf  查看是否存在 D 状态进程。

stat 中的参数意义如下:
   D 不可中断 Uninterruptible(usually IO)
   R 正在运行,或在队列中的进程
   S 处于休眠状态
   T 停止或被追踪
   Z 僵尸进程
   W 进入内存交换(从内核2.6开始无效)
   X   死掉的进程

无D进程,证明不是D进程导致负载过高

4.5  解决方法1 :使用top直接终止cpu消耗大的进程。

5  查看系统日志

var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure 与安全相关的日志信息

/var/log/maillog 与邮件相关的日志信息

/var/log/cron 与定时任务相关的日志信息

/var/log/spooler 与UUCP和news设备相关的日志信息

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值