Oracle数据库巡检
一 、系统层面
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.csdn.net/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设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
二 、数据库层面
1 检查数据库状态
2 检查归档日志
3 检查表空间使用情况
SQL> select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100) "% Free"
2 from (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name)a,
3 (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f
4 WHERE a.tablespace_name = f.tablespace_name(+) order by "% Free";
如果空闲率%Free小于10%以上(包含10%),则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G或者4G,自动扩展的最大限制在8G。
4 检查异常扩展的对象
select Segment_Name, Segment_Type, TableSpace_Name,(Extents/Max_extents)*100 Percent From sys.DBA_Segments Where Max_Extents != 0 and (Extents/Max_extents)*100>=95 order By Percent;
如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数。
5 检查system表空间的内容
select distinct(owner) from dba_tables where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM' union select distinct(owner) from dba_indexes where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM';
如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。
6 检查对象的下一扩展与表空间的最大扩展值
select a.table_name, a.next_extent, a.tablespace_name from all_tables a, (select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent > f.big_chunk union select a.index_name, a.next_extent, a.tablespace_name from all_indexes a,(select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent > f.big_chunk;
如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。
7 检查Oracle表空间的状态
8 检查Oracle所有数据文件状态
select name,status from v$datafile;输出结果中“STATUS”应该都为“ONLINE”。
9 检查无效对象
select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象.
检查之后发现大量无效对象
10 查看当前会话连接数,是否属于正常范围。
SQL> select count(*) from v$session;
select sid,serial#,username,program,machine,status from v$session;
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
11 检查对象状态
11.1 检查控制文件状态
SQL> select status,name from v$controlfile;
STATUS NAME
/data/oradata/CKDB/control01.ctl
/data/oradata/CKDB/control02.ctl
/data/oradata/CKDB/control03.ctl
输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空。状态为空表示控制文件状态正常。
11.2 检查在线日志状态
SQL> select group#,status,type,member from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------
3 ONLINE /data/oradata/CKDB/redo03.log
2 ONLINE /data/oradata/CKDB/redo02.log
1 ONLINE /data/oradata/CKDB/redo01.log
4 ONLINE /data/oradata/CKDB/redo04.log
5 ONLINE /data/oradata/CKDB/redo05.log
6 ONLINE /data/oradata/CKDB/redo06.log
6 rows selected
输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。注:“STATUS”显示为空表示正常。
11.3 检查表空间的状态
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
SJ1 ONLINE
ADM_INDEX ONLINE
HOME_DATA ONLINE
HOME_INDEX ONLINE
PHOTO_DATA ONLINE
PHOTO_INDEX ONLINE
输出结果中STATUS应该都为ONLINE。
11.4 检查所有数据文件状态
SQL> select name,status from v$datafile;
NAME STATUS
-------------------------------------------------- -------
/data/oradata/CKDB/system01.dbf SYSTEM
/data/oradata/CKDB/undotbs01.dbf ONLINE
/data/oradata/CKDB/sysaux01.dbf ONLINE
/data/oradata/CKDB/users01.dbf ONLINE
/data/oradata/CKDB/sj.dbf ONLINE
/data/oradata/CKDB/HOME_DATA1.dbf ONLINE
/data/oradata/CKDB/HOME_INDEX1.dbf ONLINE
/data/oradata/CKDB/PHOTO_DATA1.dbf ONLINE
/data/oradata/CKDB/PHOTO_INDEX1.dbf ONLINE
/data/oradata/CKDB/BLOG_DATA1.dbf ONLINE
/data/oradata/CKDB/BLOG_INDEX1.dbf ONLINE
/data/oradata/CKDB/AUDIO_DATA1.dbf ONLINE
/data/oradata/CKDB/AUDIO_INDEX1.dbf ONLINE
/data/oradata/CKDB/VIDEO_DATA1.dbf ONLINE
/data/oradata/CKDB/VIDEO_INDEX1.dbf ONLINE
/data/oradata/CKDB/SYS_DATA1.dbf ONLINE
/data/oradata/CKDB/SYS_INDEX1.dbf ONLINE
/data/oradata/CKDB/ADM_DATA1.dbf ONLINE
/data/oradata/CKDB/ADM_INDEX1.dbf ONLINE
/data/oradata/CKDB/perfstat.dbf ONLINE
输出结果中“STATUS”应该都为“ONLINE”。或者:
SQL> select file_name,status from dba_data_files;
FILE_NAME STATUS
--------------------------------------------- ---------
/data/oradata/CKDB/users01.dbf AVAILABLE
/data/oradata/CKDB/sysaux01.dbf AVAILABLE
/data/oradata/CKDB/undotbs01.dbf AVAILABLE
/data/oradata/CKDB/system01.dbf AVAILABLE
/data/oradata/CKDB/sj.dbf AVAILABLE
/data/oradata/CKDB/perfstat.dbf AVAILABLE
/data/oradata/CKDB/HOME_DATA1.dbf AVAILABLE
/data/oradata/CKDB/HOME_INDEX1.dbf AVAILABLE
/data/oradata/CKDB/PHOTO_DATA1.dbf AVAILABLE
输出结果中“STATUS”应该都为“AVAILABLE”。
11.5 检查无效对象
sql>select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
no rows selected
如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象,或者:
SELECT owner, object_name, object_type FROM dba_objects WHERE status= 'INVALID';
11.6 检查所有回滚段状态
SQL> select segment_name,status from dba_rollback_segs;
SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
_SYSSMU1$ ONLINE
_SYSSMU2$ ONLINE
_SYSSMU3$ ONLINE
_SYSSMU4$ ONLINE
_SYSSMU5$ ONLINE
_SYSSMU6$ ONLINE
_SYSSMU7$ ONLINE
_SYSSMU8$ ONLINE
_SYSSMU9$ ONLINE
_SYSSMU10$ ONLINE
11 rows selected
输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
部分引用https://developer.aliyun.com/article/284556#slide-1里的内容。
Oracle数据库巡检相关推荐
- Oracle数据库巡检模版
巡检人: 报告生成日期: yyyy-mm-dd 目录 1. 检查介绍 1.1 检查系统 1.2 检查范围 2. 硬件配置 2.1 主机配置 3. 系统 ...
- oracle数据库巡检-全面检查
实际工作中,不管是接手管理一个新的数据库还是定期对数据进行检查,我们都需要一个全面系统的工作,以下是我自己的实际工作操作并结合网上一些前辈对oracle巡检的经验总结的一篇文章,希望可以给到新人以参考 ...
- Oracle 数据库巡检模板
XXXXX Oracle数据库健康检查与评估 (模板) 1. 检查介绍 1.1 检查系统 系统主要包括1个数据库,具体情况如下: 数据库名称 数据库实例名 应用名称 应用类型OLTP/DSS/Batc ...
- oracle数据库巡检内容
1 操作系统错误记录 errpt /var/log/messages 2 网卡状态 ifconfig 3 操作系统总体状态 top topas cpu user% ...
- Oracle数据库巡检表--服务器、操作系统、存储、数据库
概述 在对数据库做整体优化的时候,我们需要先针对一个新的系统做整体巡检,涉及服务器.操作系统.存储.数据库多个层面,这里简单整理一个检查表,内容如下:
- oracle巡检项,Oracle数据库巡检参考项
是否为归档模式 数据库是否为归档模式,可以使用archivelog list查看 是否为force logging模式 数据库是否启用了force logging 是否使用spfile 这个新特性,其 ...
- oracle 数据库日常巡检:数据库基本状况、oracle资源使用、数据备份结果、性能、cpu等、数据安全、归档日志、会话、SGA/PGA使用情况
巡检目录 1. 检查数据库基本状况 2. 检查Oracle相关资源的使用情况 3. 检查Oracle数据库备份结果 4. 检查Oracle数据库性能 5. 检查数据库cpu.I/O.内存性能 6. 检 ...
- oracle数据库优化 -DBA常用Oracle数据库检查报告
DBA常用 Oracle数据库巡检脚本 本文链接:https://blog.csdn.net/zfr629/article/details/87938013 目录 1. 检查数据库基本状况 1.1. ...
- oracle ogg巡检,oracle 巡检内容
oracle数据库巡检内容 1操作系统错误记录 errpt /var/log/messages 2网卡状态 ifconfig 3操作系统总体状态 top topas cpu user% disk bu ...
最新文章
- 如何利用离散Hopfield神经网络进行数字识别(2)
- ios预支付系统 java_支付系统的预发布环境如何搭建
- const的用法,特别是用在函数前面与后面的区别
- 中国充换电行业产销需求预测与转型升级战略分析报告2022-2028年版
- NYOJ 514 1的个数
- 由web项目中上传图片所引出的路径问题
- 虚拟机中dns配置好了但是域名ping不同_弱电工程中常用的几个网络命令,学会后轻松变高手...
- java设计模式 单例_java设计模式--单例模式
- 酒局中同事说“不把这杯酒喝了就是不给我面子”,我该怎么办?
- 这位BAT大佬写的Leetcode刷题笔记,让我offer拿到手软
- 代码实现 | 方程组的实现
- VS、Unity安装和使用Nuget包
- DIV+CSS图片和文字如何显示同一行
- Java 简单计算器
- 企业盈利能力五大指标之:净利润现金流比率
- 【ZZULIOJ】1026: 字符类型判断
- 区块链学习一--初始比特币
- 使用Hydra通过ssh破解密码
- 电脑开机蓝屏怎么解决
- SWAT模型参数率定和验证
热门文章
- 一文学会VOS2009对接网关指定走某个落地网关
- hive :简单查询不走mapreduce
- 白话机器学习-卷积神经网络CNN
- JS、JQ Bootstrap基本样式(一 )
- 融云发送图片消息_基于融云的IM通讯
- 重新理解Linux交叉编译及编译流程
- 2、采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超30年的职工加1000元工资,并输出工资变化后的所有职工的信息
- 第七周毛概课学习心得
- discern the words in the picture and then search it on the web
- 霍桑效应(英语:Hawthorne Effect)