Oracle 数据库日常巡检指令
链接:https://cloud.tencent.com/developer/article/2346699
数据库的日常巡检可以说是保障系统稳定运行的基础,虽然不同的运维团队、不同的数据库,都会有适合自己的巡检体系,但是其中很多内容还是可以互相借鉴的。这篇文章《Oracle数据库日常巡检指令》给我们提供了Oracle数据库日常巡检指令,虽然只针对Oracle,但是一些巡检的方向还是值得借鉴和学习的。
Oracle数据库的日常巡检内容包括:
(1)Oracle数据库基本状况检查;
(2)Oracle相关资源的使用情况检查;
(3)Oracle数据库性能检查;
(4)数据库服务器cpu、mem和I/O性能检查;
(5)数据库服务器安全性及其他事项检查。
需要指出的是这些巡检指令不仅在巡检过程中用得上,某些故障的诊断场景中同样可以利用,还是比较通用的。
1、数据库基本状况检查
(1)数据库实例状况检查
说明:其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
(2)数据库表空间状态检查
说明:输出结果中STATUS应该都为“ONLINE”。
(3)数据库数据文件检查
select tablespace_name,status from dba_tablespaces;
(4)数据库在线日志检查
select group#,status,type,member from v$logfile;
(5)数据库回滚段检查
select segment_name,status from dba_rollback_segs;
2、数据库相关资源使用情况检查
(1)检查Oracle初始化文件中相关参数值
select resource_name,max_utilization,initial_allocation, limit_value from v$resource_limit;
说明:若字段值【LIMIT_VALU】-【MAX_UTILIZATION】<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/orcl/pfile/initORCL.ora来修改。
(2)检查数据库连接情况
select sid,serial#,username,program,machine,status from v$session;
(3)检查表空间使用情况
select f.tablespace_name,a.total,f.free,round((f.free / a.total) 100) "% Free" from (select tablespace_name, sum(bytes / (1024 1024)) total from dba_data_files group by tablespace_name) a, (select tablespace_name, round(sum(bytes / (1024 * 1024))) free from dba_free_space group by tablespace_name) f WHERE a.tablespace_name =f.tablespace_name(+) order by "% Free";
(4)检查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表空间,同时应该检查这些对象属主的缺省表空间值。
(5)检查一些扩展异常的对象
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;
(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;
3、检查Oracle数据库性能
(SQLPLUS的界面设置参数set pages 80 set lines 120 col event for a40)
(1)检查数据库的等待事件
select sid, event, p1, p2, p3, WAIT_TIME, SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';
(2)等待时间最多的5个系统等待事件
SELECT FROM (SELECT FROM V$SYSTEM_EVENT WHERE EVENT NOT LIKE 'SQL%' ORDER BY TOTAL_WAITS DESC) WHERE ROWNUM <= 5;
SELECT * FROM (SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS, SQL_TEXT FROM V$SQLAREA ORDER BY DISK_READS DESC) WHERE ROWNUM < 10;
SELECT SQL_TEXT FROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS) WHERE ROWNUM <= 5;
select sid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,o.object_id from dba_objects o, vlockedobjectl,vsession s where o.object_id = l.object_id and s.sid = l.session_id;
(1)CPU查询指令 top
(2)内存查询指令 free -m
(3)I/O查询指令 iostat -k 1 3
(4)系统负载情况查询指令 uptime
(5)僵尸进程查询指令
select spid from vprocesswhereaddrnotin(selectpaddrfromvsession);
select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');
5、数据库服务器安全检查
(1)系统安全日志检查
检查登录成功日志的查询指令为 # grep -i accepted /var/log/secure
检查登录失败日志的查询指令为 # grep -i inval /var/log/secure &&grep -i failed /var/log/secure
(2)crontab任务检查
Oracle Job是否有失败任务的查询
select job,what,last_date,next_date,failures,broken from dba_jobs Where schema_user='system';
select index_name, table_name, tablespace_name, status From dba_indexes Where owner = 'system' And status <> 'VALID';
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604215
Linux技术交流群:2636170
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者