当前位置: 首页 > news >正文

Oracle 服务器日常巡检

文章目录

    • 1、数据库基本状况检查
    • 2、数据库相关资源使用情况检查
    • 3、检查Oracle数据库性能
    • 4、数据库服务器CPU、MEM、I/O性能
    • 5、数据库服务器安全检查

Oracle数据库的日常巡检内容包括:

(1)Oracle数据库基本状况检查;

(2)Oracle相关资源的使用情况检查;

(3)Oracle数据库性能检查;

(4)数据库服务器cpu、mem和I/O性能检查;

(5)数据库服务器安全性及其他事项检查。

1、数据库基本状况检查

###(1)数据库实例状况检查

select instance_name,host_name,startup_time,status,database_status from v$instance;
说明:其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。

###(2)数据库表空间状态检查

select tablespace_name,status from dba_tablespaces;
说明:输出结果中STATUS应该都为“ONLINE”。

###(3)数据库数据文件检查

select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024,STATUS from dba_data_files;
说明:输出结果中“STATUS”应该都为“AVAILABLE”。

###(4)数据库在线日志检查

col MEMBER for a60
select group#,status,type,member from v$logfile;
说明:输出结果应该有3条或3条以上记录,“STATUS”应该为非“INVALID”,非“DELETED”。“STATUS”的值为空表示正常。

###(5)数据库回滚段检查

select segment_name,status from dba_rollback_segs;
说明:输出结果中所有回滚段的“STATUS”应该为“ONLINE”。

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;说明:STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;如果建立了过多的连接,会消耗数据库的资源,同时,对一些“挂死”的连接可能需要手工进行清理。

###(3)检查表空间使用情况

select f.tablespace_name,a.total,f.free,round((f.free / a.total)*100) "% Free"from (select tablespace_name, sum(bytes / (1024 * 1024)) totalfrom dba_data_filesgroup by tablespace_name) a,(select tablespace_name, round(sum(bytes / (1024 * 1024))) freefrom dba_free_spacegroup by tablespace_name) fWHERE a.tablespace_name = f.tablespace_name(+)order by "% Free";说明:如果空闲率【%Free】小于10%以上,则注意要增加数据文件来扩展表空间而不是用数据文件的自动扩展功能。

###(4)检查system表空间内的内容

select distinct (owner)from dba_tableswhere tablespace_name = 'SYSTEM'and owner != 'SYS'and owner != 'SYSTEM'
union
select distinct (owner)from dba_indexeswhere 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 PercentFrom sys.DBA_SegmentsWhere Max_Extents != 0and (Extents / Max_extents) * 100 >= 95order By Percent;说明:如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数。

###(6)检查对象的下一扩展值与表空间的最大扩展值

select a.table_name, a.next_extent, a.tablespace_namefrom all_tables a,(select tablespace_name, max(bytes) as big_chunkfrom dba_free_spacegroup by tablespace_name) fwhere f.tablespace_name = a.tablespace_nameand a.next_extent > f.big_chunk
union
select a.index_name, a.next_extent, a.tablespace_namefrom all_indexes a,(select tablespace_name, max(bytes) as big_chunkfrom dba_free_spacegroup by tablespace_name) fwhere f.tablespace_name = a.tablespace_nameand a.next_extent > f.big_chunk;说明:如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。

3、检查Oracle数据库性能

###(1)检查数据库的等待事件

set pages 80 
set lines 120
col event for a40
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%';说明:如果数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。

###(2)等待时间最多的5个系统等待事件

SELECT *FROM (SELECT *FROM V$SYSTEM_EVENTWHERE EVENT NOT LIKE 'SQL%'ORDER BY TOTAL_WAITS DESC)WHERE ROWNUM <= 5;

###(3)查找前十条性能差的sql

SELECT *FROM (SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXTFROM V$SQLAREAORDER BY DISK_READS DESC)WHERE ROWNUM < 10;

###(4)Disk Read最高的SQL语句的获取

SELECT SQL_TEXTFROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS)WHERE ROWNUM <= 5;

###(5)检查死锁及处理

select sid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,o.object_idfrom dba_objects o, v$locked_object l, v$session swhere o.object_id = l.object_idand s.sid = l.session_id;

4、数据库服务器CPU、MEM、I/O性能

###(1)CPU查询指令

# top

###(2)内存查询指令

# free -m

###(3)I/O查询指令

# iostat -k 1 3

###(4)系统负载情况查询指令

# uptime

###(5)僵尸进程查询指令

select spid from v$process where addr not in (select paddr from v$session);

###(6)日志缓冲区查询指令

select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');说明:如果【redo buffer allocation retries】/【redo entries】的值超过1%,则需要增大log_buffer。

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';

###(3)检查失效的索引

select index_name, table_name, tablespace_name, status From dba_indexes Where owner = 'system' And status <> 'VALID';说明:分区表上的索引status为空是正常的,如有失效索引则对该索引做rebuild。其指令为alter index INDEX_NAME rebuild tablespace TABLESPACE_NAME;
http://www.lryc.cn/news/231663.html

相关文章:

  • 【轨道机器人】实现Windows与下位机串口通信(未完成)
  • 无人机内存卡数据恢复
  • 基于SSM的校园二手物品交易市场设计与实现
  • Android14 Beta 5
  • 力扣labuladong——一刷day32
  • Day01_《MySQL索引与性能优化》摘要
  • BMS系统项目
  • sql server 多行数据合并一行显示
  • 「我的AIGC咒语库:分享和AI对话交流的秘诀——如何利用Prompt和AI进行高效交流?」
  • 强国有我助力苔花绽放 | 爱心捐赠仪式在西安顺利举办
  • Flink SQL -- CheckPoint
  • Load-balanced-online-OJ-system 负载均衡的OJ系统项目
  • ES6 导入导出
  • 【Liunx】部署Ansible自动化运维工具
  • Python的基础语法
  • Skywalking流程分析_8(拦截器插件的加载)
  • 智能AI系统ChatGPT网站源码+支持OpenAI DALL-E3文生图+支持ai绘画(Midjourney)/支持GPT全模型+国内AI全模型
  • 腾讯云服务器可用区是什么意思?可用区选择方法
  • Jupyter运行显存爆炸,明明上一个单元格已经运行完毕为什么还是会炸?
  • 【ICE】webrtc lite 1:cmake构建
  • 国内最受欢迎电商API接口调用淘宝商品详情API接口数据
  • 第五篇 基于JSP 技术的网上购书系统——主页面和登录页面实现(网上商城、仿淘宝、当当、亚马逊)
  • 【 云原生 | K8S 】kubeadm 部署Kubernetes集群
  • 微信小程序rich-text 文本首行缩进和图片居中和富文本rich-text 解析多个空格不成功 nbsp
  • uniapp 设置重写uni-body-page样式,输入字母转大写,条形码扫描
  • 【uniapp/uview1.x】u-upload 在 v-for 中的使用时, before-upload 如何传参
  • 求组合数(笔记)
  • 《视觉SLAM十四讲》-- 后端 1(下)
  • io+day8
  • 【图像处理:OpenCV-Python基础操作】