Oracle常用性能监控SQL语句
### Oracle常用性能监控SQL语句知识点详解 #### 1. 监控高磁盘读取的SQL区域 **SQL语句:** ```sql select * from sys.v_$sqlarea where disk_reads > 100; ``` - **知识点解读:** - `sys.v_$sqlarea` 视图提供了SQL执行区域的信息,包括执行次数、解析次数等。 - `disk_reads` 字段记录了SQL执行时从磁盘上读取的数据块数量。 - 该查询用于找出磁盘读取超过100次的SQL语句,以便优化这些SQL语句减少磁盘IO操作。 #### 2. 查询等待事件统计 **SQL语句:** ```sql select event, sum(decode(wait_time, 0, 0, 1)) "Prev", sum(decode(wait_time, 0, 1, 0)) "Curr", count(*) "Tot" from v$session_wait group by event order by 4; ``` - **知识点解读:** - `v$session_wait` 视图提供关于会话等待时间的信息,可以用来诊断系统中的等待事件。 - `wait_time` 字段表示等待时间是否为零(0表示没有等待,非0表示有等待)。 - 此查询通过分组统计不同的等待事件,计算出每个事件的当前等待次数 (`Curr`)、前一个采样点的等待次数 (`Prev`) 和总的等待次数 (`Tot`),便于理解当前系统的等待情况。 #### 3. 检查回滚段状态 **SQL语句:** ```sql select name, waits, gets, waits/gets "Ratio" from v$rollstata, v$rollname b where a.usn = b.usn; ``` - **知识点解读:** - `v$rollstata` 和 `v$rollname` 视图分别提供关于回滚段的状态和名称信息。 - `waits` 字段表示回滚段等待的次数。 - `gets` 字段表示回滚段获取的次数。 - 通过计算 `waits/gets` 的比例,可以帮助我们了解回滚段的使用效率。 #### 4. 查询当前活跃会话正在执行的SQL语句 **SQL语句:** ```sql select user_name, sql_text from v$open_cursor where sid in (select sid from (select sid, serial#, username, program from v$session where status = 'ACTIVE')); ``` - **知识点解读:** - `v$open_cursor` 视图包含了所有当前打开的游标信息,即正在执行的SQL语句。 - `sid` 字段标识了会话ID。 - `status` 字段表示会话的状态,其中 `'ACTIVE'` 表示活跃状态。 - 此查询结合了 `v$session` 和 `v$open_cursor` 视图,用于找出所有活跃会话正在执行的SQL语句,对于排查性能问题非常有用。 #### 5. 表空间中表的大小排序 **SQL语句:** ```sql select segment_name, tablespace_name, bytes, blocks from user_segments where segment_type = 'TABLE' ORDER BY bytes DESC, blocks DESC; ``` - **知识点解读:** - `user_segments` 视图提供了用户对象的段信息。 - `segment_type` 字段标识了段类型,`'TABLE'` 表示表。 - `bytes` 字段记录了段占用的空间大小。 - `blocks` 字段记录了段占用的数据块数。 - 此查询用于找出用户所有的表,并按照空间大小降序排列,有助于管理和优化表空间使用。 #### 6. 计算自由空间碎片化指数 **SQL语表:** ```sql select tablespace_name, round(sqrt(max(blocks) / sum(blocks)) * (100 / sqrt(sqrt(count(blocks)))), 2) FSFI from dba_free_space group by tablespace_name order by 1; ``` - **知识点解读:** - `dba_free_space` 视图提供了数据库中每个表空间的自由空间信息。 - `blocks` 字段表示自由空间的块数。 - 此查询通过计算每个表空间的自由空间碎片化指数(FSFI),帮助评估表空间中自由空间的分布情况。 #### 7. 查看表空间使用率 **SQL语句:** ```sql select b.file_id, b.tablespace_name, b.bytes, (b.bytes - sum(nvl(a.bytes, 0))) "Used", sum(nvl(a.bytes, 0)) "Free", sum(nvl(a.bytes, 0)) / (b.bytes) * 100 "Free %" from dba_free_space a, dba_data_files b where a.file_id = b.file_id group by b.tablespace_name, b.file_id, b.bytes order by b.file_id; ``` - **知识点解读:** - `dba_free_space` 视图提供了每个文件中自由空间的信息。 - `dba_data_files` 视图包含了数据文件的信息。 - 此查询用于计算每个文件的已用空间和剩余空间,并进一步计算表空间的使用率。 #### 8. 查看会话事务信息 **SQL语句:** ```sql SELECT r.name "TXN", s.sid, s.serial#, s.username "User", t.status, t.cr_get, t.phy_io, t.used_ublk, t.noundo, substr(s.program, 1, 78) FROM sys.v_$session s, sys.v_$transaction t, sys.v_$rollname r WHERE t.addr = s.taddr AND t.xidusn = r.usn ORDER BY t.cr_get, t.phy_io; ``` - **知识点解读:** - `v_$session` 视图提供了关于会话的信息。 - `v_$transaction` 视图提供了关于事务的信息。 - `v_$rollname` 视图提供了关于回滚段的信息。 - 此查询通过连接这三个视图来查看所有活跃事务的信息,包括事务状态、物理IO次数等。 #### 9. 查看SGA剩余内存 **SQL语句:** ```sql select name, sgasize / 1024 / 1024 "Allocated (M)", bytes / 1024 "Used (K)", round(bytes / sgasize * 100, 2) "Used %" from (select sum(bytes) sgasize from sys.v_$sgastat) s, sys.v_$sgastat f where f.name = 'free_memory'; ``` - **知识点解读:** - `v_$sgastat` 视图提供了SGA的统计信息。 - `free_memory` 字段表示SGA中的剩余内存。 - 通过计算SGA的分配大小和剩余内存,可以评估SGA的使用率。 #### 10. 监控文件系统I/O **SQL语句:** ```sql select df.tablespace_name "Name", df.file_name "File", f.phyrdspy, f.phyblkrdpbr, f.phywrtspyw, f.phyblkwrtpbw from v$filestat f, dba_data_files df where f.file# = df.file_id order by df.tablespace_name; ``` - **知识点解读:** - `v$filestat` 视图提供了关于文件系统I/O的统计信息。 - `dba_data_files` 视图提供了数据文件的信息。 - 此查询用于查看不同文件的物理读写情况,帮助识别I/O瓶颈。 #### 11. 查看SGA逻辑读与物理读比率 **SQL语句:** ```sql select a.value + b.value "Logical Reads", c.value "Physical Reads", round(100 * ((a.value + b.value) - c.value) / (a.value + b.value)) "Buffer Hit Ratio" from v$sysstat a, v$sysstat b, v$sysstat c where a.statistic# = 38 and b.statistic# = 39 and c.statistic# = 40; ``` - **知识点解读:** - `v$sysstat` 视图提供了关于系统级别的统计信息。 - `statistic#` 字段用于标识统计指标。 - 通过计算逻辑读和物理读的数量,可以评估缓存命中率,进而判断缓存的使用效率。 #### 12. 查看SGA缓存命中率 **SQL语句:** ```sql select parameter, gets, Getmisses, getmisses / (gets + getmisses) * 100 "Miss Ratio", (1 - (sum(getmisses) / (sum(gets) + sum(getmisses)))) * 100 "Hit Ratio" from (select * from v$librarycache) l; ``` - **知识点解读:** - `v$librarycache` 视图提供了关于库缓存的信息。 - `gets` 字段表示从库缓存获取的次数。 - `getmisses` 字段表示未能从库缓存获取的次数。 - 此查询用于计算库缓存的命中率和未命中率,帮助评估库缓存的有效性。 通过以上SQL语句的详细介绍,我们可以看到Oracle数据库性能监控的重要性和复杂性。每一条SQL语句都针对特定的问题进行了设计,通过对这些SQL语句的理解和应用,可以有效地提升数据库的性能并解决各种性能问题。
- s3162970252020-09-03看星下载吧,同学们
- 粉丝: 3
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 磁共振测试机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- pyqt编写界面,打开笔记本摄像头,支持缩放拖拽,并标记位置
- UI页面布局分析(5)- 评分弹窗的实现
- CentOS7与欧拉系统中达梦8数据库安装手册
- 1、C++SOCKET同步阻塞、异步非阻塞通信服务端、客户端代码,支持多个客户端连接 2、断线重连(服务端或客户端没有启动顺序要求,先开启的等待另一端连接); 3、服务端支持同时连接多个客户端;
- VMware虚拟机安装指南:下载、配置与启动操作详解
- gamebox.h-C++头文件,1.0版本
- 使用mysql存储过程和触发器实现审计日志记录.zip
- 计算机科学教育-数据结构课程设计目标与实践
- 磁环组装自动压合平衡测试设备工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 医疗器械质量管理体系内审员试卷考题,GBT42061,ISO13485
- 三相交错LLC谐振仿真闭环,Y型联接(图1主回路图),自均流(图2三相谐振电流波形),软开关(图3是原边mos的驱动和DS和电流波形),每相移相120度(图4驱动波形),图5输出电压电流波形 ,送对
- VSCode下C/C++开发环境配置指南
- MATLAB语音识别 matlab语音识别,可以识别数字0-9,有gui界面,注释齐全,有报告 (本程序测试版本为Matlab 2019b,低于此版本的请安装新版,以免无法运行) 链接为电子资料
- Java开发IDE-IntelliJ IDEA的下载与安装指南
- 线控转向系统Carsim和Simulink联合仿真模型,带Carsim数据库,C级车 【正向建模,利用三环PID控制算法控制无刷直流电机获得前轮转角】 主要根据Carsim自带的转向系统,查出小齿轮