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

Oralce数据库巡检SQL脚本

文章目录

    • Oralce数据库巡检SQL脚本
      • 1 检查表空间使用情况
      • 2 检查是否有 offline 状态的表空间
      • 3 在线日志是否存在小于 50M 的及状态不正常
      • 4 检查锁阻塞
      • 5 查看是否有僵死进程
      • 6 检查是否有失效索引
      • 7 检查不起作用的约束
      • 8 缓冲区命中率
      • 9 数据字典命中率
      • 10 库缓存命中率
      • 11 内存中的排序
      • 12 磁盘中的排序
      • 13 临时空间使用率
      • 14 检查ORACLE实例状态
      • 15 检查ORACLE表空间的状态
      • 16 检查ORACLE所有数据文件状态
      • 17 检查所有回滚段状态
      • 18 检查一些扩展异常的对象
      • 19 DISK READ最高的SQL语句的获取
      • 20 性能最差的前10条SQL
      • 21 检查运行很久的SQL
      • 22 检查碎片程度高的表
      • 23 检查死锁及处理
      • 24 失效的触发器
      • 25 失败的JOB

Oralce数据库巡检SQL脚本

1 检查表空间使用情况

SELECT B.TABLESPACE_NAME          TABLESPACE,A.EXTENT_MANAGEMENT        EXT_MGT,A.SEGMENT_SPACE_MANAGEMENT SEG_MGT,A.STATUS,A.LOGGING,B.TOTAL,B.FREE,B.USED_PCTFROM DBA_TABLESPACES A,(SELECT D.TABLESPACE_NAME TABLESPACE_NAME,ROUND((D.SUMBYTES / 1024 / 1024 / 1024), 2) || 'GB' TOTAL,ROUND(DECODE(F.SUMBYTES, NULL, 0, F.SUMBYTES) / 1024 / 1024 / 1024,2) || 'GB' FREE,ROUND((D.SUMBYTES - DECODE(F.SUMBYTES, NULL, 0, F.SUMBYTES)) * 100 /D.SUMBYTES,2) || '%' USED_PCTFROM (SELECT TABLESPACE_NAME, SUM(BYTES) SUMBYTESFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT TABLESPACE_NAME,     SUM(BYTES) SUMBYTESFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME) DWHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAMEORDER BY D.TABLESPACE_NAME) BWHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME;

2 检查是否有 offline 状态的表空间

SELECT FILE_ID AS ID,RELATIVE_FNO "FNO",ROUND(BYTES / 1024 / 1024) AS MBYTES,ROUND(MAXBYTES / 1024 / 1024) MAXMBYTES,BLOCKS,MAXBLOCKS,AUTOEXTENSIBLE "AUTO",INCREMENT_BY "INC",ROUND(USER_BYTES / 1024 / 1024) "NOW_MB",USER_BLOCKS,STATUS,ONLINE_STATUS "ONLINE_S"FROM DBA_DATA_FILES;

3 在线日志是否存在小于 50M 的及状态不正常

SELECT A.GROUP#, A.STATUS, A.BYTES, B.MEMBER, A.ARCHIVEDFROM V$LOG A, V$LOGFILE BWHERE A.GROUP# = B.GROUP#;

4 检查锁阻塞

SELECT DECODE(REQUEST, 0, '阻塞者:', '等待者:') || SID SID,ID1,ID2,LMODE,REQUEST,TYPEFROM V$LOCKWHERE (ID1, ID2, TYPE) IN(SELECT ID1, ID2, TYPE FROM V$LOCK WHERE REQUEST > 0)ORDER BY ID1, REQUEST;

5 查看是否有僵死进程

SELECT SPID FROM V$PROCESS WHERE ADDR NOT IN (SELECT PADDR FROM V$SESSION);

6 检查是否有失效索引

SELECT OWNER, A.INDEX_NAME, A.INDEX_TYPE, A.STATUSFROM DBA_INDEXES AWHERE STATUS = 'UNUSABLE';SELECT A.INDEX_NAME, A.PARTITION_NAME, A.TABLESPACE_NAME, A.STATUSFROM DBA_IND_PARTITIONS AWHERE STATUS = 'UNUSABLE';

7 检查不起作用的约束

SELECT OWNER, CONSTRAINT_NAME, TABLE_NAME, CONSTRAINT_TYPE, STATUSFROM DBA_CONSTRAINTSWHERE STATUS = 'DISABLE'AND CONSTRAINT_TYPE = 'P';

8 缓冲区命中率

缓冲命中率应大于90%。

SELECT (1 - (SUM(DECODE(NAME, 'PHYSICAL READS', VALUE, 0)) /(SUM(DECODE(NAME, 'DB BLOCK GETS', VALUE, 0)) +SUM(DECODE(NAME, 'CONSISTENT GETS', VALUE, 0))))) * 100 "HIT RATIO"FROM V$SYSSTAT;

9 数据字典命中率

数据字典命中率应大于 95%。

SELECT (1 - (SUM(GETMISSES) / SUM(GETS))) * 100 "HIT RATIO" FROM V$ROWCACHE;

10 库缓存命中率

库缓存命中率应大于 95%。

SELECT SUM(PINS) / (SUM(PINS) + SUM(RELOADS)) * 100 "HIT RATIO" FROM V$LIBRARYCACHE;

11 内存中的排序

如果存在大量的磁盘排序,则表明检查目前系统中消耗大量磁盘的 SQL 是否已经经过调整。

SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE '%SORTS%';

12 磁盘中的排序

检查使用磁盘排序的会话信息,可以定位执行了大量磁盘排序的会话。

SELECT B.NAME, A.SID, A.VALUEFROM V$SESSTAT A, V$STATNAME BWHERE A.STATISTIC# = B.STATISTIC#AND B.NAME = 'SORTS (DISK)'AND A.VALUE > 0AND ROWNUM < 10ORDER BY A.VALUE DESC;

13 临时空间使用率

SELECT * FROM V$TEMP_SPACE_HEADER;

14 检查ORACLE实例状态

其中“STATUS”表示ORACLE当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示ORACLE当前数据库的状态,必须为“ACTIVE”。

SELECT INSTANCE_NAME, HOST_NAME, STARTUP_TIME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

15 检查ORACLE表空间的状态

输出结果中STATUS应该都为ONLINE。

SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES;

16 检查ORACLE所有数据文件状态

输出结果中“STATUS”应该都为“ONLINE”。

SELECT NAME, STATUS FROM V$DATAFILE;

输出结果中“STATUS”应该都为“AVAILABLE”。

SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES;

17 检查所有回滚段状态

输出结果中所有回滚段的“STATUS”应该为“ONLINE”。

SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS;

18 检查一些扩展异常的对象

如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值,对于这些对象要修改它的存储结构参数。

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;

19 DISK READ最高的SQL语句的获取

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

20 性能最差的前10条SQL

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

21 检查运行很久的SQL

SELECT USERNAME,SID,OPNAME,ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS PROGRESS,TIME_REMAINING,SQL_TEXTFROM V$SESSION_LONGOPS, V$SQLWHERE TIME_REMAINING <> 0AND SQL_ADDRESS = ADDRESSAND SQL_HASH_VALUE = HASH_VALUE;

22 检查碎片程度高的表

SELECT SEGMENT_NAME TABLE_NAME, COUNT(*) EXTENTSFROM DBA_SEGMENTSWHERE OWNER NOT IN ('SYS', 'SYSTEM')GROUP BY SEGMENT_NAME
HAVING COUNT(*) = (SELECT MAX(COUNT(*))FROM DBA_SEGMENTSGROUP BY SEGMENT_NAME);

23 检查死锁及处理

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;

24 失效的触发器

SELECT OWNER, TRIGGER_NAME, TABLE_NAME, STATUSFROM DBA_TRIGGERSWHERE STATUS = 'DISABLED';

25 失败的JOB

SELECT JOB, WHAT, LAST_DATE, NEXT_DATE, FAILURES, BROKENFROM DBA_JOBSWHERE SCHEMA_USER = 'USER';

原文链接:https://mp.weixin.qq.com/s?__biz=MzkxNzI1OTE3Mw==&mid=2247493675&idx=1&sn=2d8caece9f669925cda2f364ebfdb9c3&chksm=c141fee1f63677f7bb22b74db64d0849830e7b11adce56472bc33afab5b022c223666c624fbf#rd

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20241123222431668

http://www.lryc.cn/news/490665.html

相关文章:

  • CentOS使用中遇到的问题及解决方法
  • ThinkPad t61p 作SMB服务器,打印服务器,pc ,android ,ipad利用此服务器互传文件
  • php:使用Ratchet类实现分布式websocket服务
  • 储能场站安全风险挑战
  • Ubuntu系统为同一逻辑网口配置不同网段的IP
  • MySQL出现Waiting for table metadata lock的原因以及解决方法(已亲测)
  • 学会Lambda,让程序Pythonic一点
  • GDPU 信息安全 期末复习
  • Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程
  • 【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究
  • Mysql的UPDATE(更新数据)详解
  • 基于Java Springboot高校奖助学金系统
  • 如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
  • Python爬虫:深入探索1688关键词接口获取之道
  • Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
  • JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路
  • xxl-job入门
  • 100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1
  • 大模型 VS 大语言模型
  • Linux高阶——1117—TCP客户端服务端
  • 【Qt】Qt 在main.cpp中使用tr()函数报错
  • 面向对象高级(5)接口
  • uniapp发布android上架应用商店权限
  • Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤
  • 电路模型和电路定理(二)
  • 瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
  • Qt常用控件 按钮
  • MySQL学习/复习10视图/用户/权限/语言连接数据库
  • vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册
  • c#:winform调用bartender实现打印(学习整理笔记)