数据库
oracle数据库自启动和关闭脚本调用
数据库灾备恢复小结
DMS使用文档
Oracle12C安装文档_李光升
Centos配置yum源的操作步骤-李光升
CCS数据库突然卡顿问题解决-徐铭
Centos 7.9静默安装oracle 12cR2详细步骤
mysql5.7数据库sql语句数据类型隐式转换的反逻辑BUG
RDS MySQL临时文件导致实例磁盘空间满且出现“锁定中”状态
关于Mysql引擎Myisam和InnoDB的使用
MySQL查询语句中in和exists区别详解-知识点
Mysql 的存储过程中 WITH AS 的语法和使用
Mysql 性能调优-详解
oracle数据库DG搭建
SUSE linux 配置时钟同步服务NTP/Chrony
oracle数据库实例开启操作文档
oracle数据库实例关闭操作文档
oracle数据库DBS备份配置文档v2
ALiYun ECS CENTOS数据上传到OSS操作手册
Oracle - LOGMINER配置方法
oracle sysaux表空间爆满清理unified auditing数据
sysaux表空间爆满WRI$_ADV_OBJECTS占用严重
SAP权限对象
SYSAUX表空间WRI$\_ADV\_OBJECTS表过大清理V2
oracle:表访问方式
ORA性能诊断调优
数据字典(DICT)和性能事件类型(EVENT)
日志挖掘LogMiner
RMAN sql_id “0az7czjdw8z7j” 执行计划异常
Oracle11g Active Data Guard搭建、管理
ORACLE LOGMINER配置v2
oracle日志组调整
ECS linux服务器挂载nas磁盘失败
oracle数据库修改字符集
datapump数据泵导入导出
OA系统数据库ADG架构搭建
IPS数据库SQL执行异常:ORA-00600
oracle 12c 创建PDB
oracle数据库监听异常
lvm:阿里云磁盘扩容,lvm扩容
Redis基本操作
SAP S4 CLIENT COPY(800->400)
日常数据库操作
PGSQL操作
# ORA-00054: resource busy问题处理
OA数据库服务器故障分析报告
CCS数据库生产数据库(北京中心)覆盖到VER环境数据库(乌兰察布):使用nonpdb to pdb迁移方式
WINDOWS环境Django框架连接MySQL数据库配置
Django开发学习实战
什么是向量嵌入?
OA数据库服务器内次异常增长问题分析
基于AI的自动化服务器管理
AI技术发展趋势及其在农牧食品行业的创新应用
IPS数据库日志表数据归档&表分区
国产编程模型GLM-4.6海外爆火:性能媲美ClaudeSonnet,性价比优势显著
免费开源的零代码平台 / 无代码平台,敲敲云 v2.2.0 版本
数据库原理与应用
AI发展近况分析
ORACLE ADG环境下解除ADG关系并激活备库为独立数据库
麦肯锡重磅报告:关于未来的生存指南,当57%的工作被自动化,我们如何与AI结成利益共同体
【Oracle】Cursor(游标)
ORACLE数据库在曾经的备库(路径一致)进行不完全恢复
获取执行计划的6种方法
人工智能行业的发展已进入“系统竞争”时代
2026年AI与机器人发展趋势
事务未提交导致行锁等待问题处理
MongoDB日常操作命令
2026年人工智能前沿技术趋势与应用落地分析
Doris开发
人工智能在数据库运维工作中的应用趋势与落地场景研究
帆软报表开发学习
AI 助手在 Oracle DBA 工作中的辅助能力研究报告
AI原生数据库发展趋势白皮书
OpenClaw数据库管理应用实践
Apache Doris 简介
AI在实际工作中的应用案例分享
人形机器人现状
从十大AI技术趋势,窥见“未来”
AI 在辅助投资股票方面的落地方案与实际使用价值
从原理到实践,一文读懂主流 AI 技术
AI Agent 从零开始学习路线图
AI 驱动的内容生产工作流探索 —— 基于微信公众号文章编写与视频号视频生成的实践
本文档使用「觅思文档专业版」发布
-
+
首页
数据字典(DICT)和性能事件类型(EVENT)
# 数据字典(DICT)和性能事件类型(EVENT) 1. 1.内部表(x$) 1. v$fixed\_table:可查看所有内部表 2. x$bh 3. x$kvit 2. 2. 数据字典表(TAB$) 1. TAB$ 2. OBJ$ 3. TS$ 4. AUD$ 3. 3. 静态数据字典视图(DBA\_) 1. DICT(SYS.DICTIONARY):可查看所有静态数据字典视图 2. DBA\_视图包含了数据库所有相关对象的信息,用户需要SELECT ANY TABLE权限才能访问 1. DBA\_HIST\_ACTIVE\_SESS\_HISTORY:每10S采样一次v$session,AWR报告数据来源 2. DBA\_HIST\_SYSSTAT:采样v$sysstat,AWR全局信息来源 3. ALL\_视图包含了用户有权限访问的所有对象信息 4. USER\_视图包含了用户所拥有的相关对象信息 4. 4.动态性能视图(v$) 1. v$fixed\_table:可查看所有动态性能视图 2. v$session 1. SID:会话ID 2. PADDR:关联v$process的ADDR 3. SQL\_CHILD\_NUMBER:关联v$sql\_plan查执行计划 4. SQL\_EXEC\_START:语句执行开始时间 5. PREV\_SQL\_ID:上一个SQL语句 6. ROW\_WAIT\_OBJ#:关联DBA\_OBJECTS.OBJECT\_ID查询正在等待的对象 7. LOGON\_TIME:登录时间 8. BLOCKING\_SESSION:阻塞会话 9. FINAL\_BLOCKING\_SESSION:最终阻塞会话 10. EVENT:等待事件名称:首先需要关注的内容 11. WAIT\_CLASS:等待类型(IDLE非等待) 3. v$process 1. ADDR:关联v$session.paddr 2. SPID:server process id 关联操作系统进程号 4. v$active\_session\_history 1. 每一秒采样一次v$session,ASH报告数据来源 5. v$sql 1. EXECUTIONS:执行次数 2. DISK\_READS:物理读 3. ELAPSED\_TIME:执行时间 4. BUFFER\_GETS:逻辑读 6. v$sqlarea 1. 跟v$sql差不多 7. v$sql\_bind\_data 1. 绑定变量 8. v$sql\_shared\_cursor 1. 分析执行计划不共享的原因 9. v$sysstat 1. 全局信息(AWR报告) 2. NAME:指标项 3. VALUE:相关指标的值 10. v$statname 1. 指标定义 11. v$fast\_start\_transactions 1. 大事务回滚状态,进度 12. v$sga\_target\_advice 13. v$db\_cache\_advice 14. v$shared\_pool\_advice 15. v$px\_session 1. 查看并发数 16. v$instance 1. 基础信息功能视图 17. v$database 1. 基础信息功能视图 2. 数据来自controlfile 18. v$datafile 1. 基础信息功能视图 2. 数据来自controlfile 19. v$datafile\_header 1. 会扫描数据文件读取实际值 20. v$logfile 21. v$log 22. v$log\_history 23. v$archived\_log 24. v$controlfile 25. v$rman\_status 5. 5.等待事件 1. 等待事件分类 1. 空闲等待 1. 类型为IDLE 2. 非空闲等待 1. select sql\_id,event,count(*) from v$session where wait\_class<>'Idle' group by sql\_Id,event; 3. 详细分类 1. select wait\_class,count(*) from v$event\_name group by wait\_class order by 2; 2. 检查步骤 1. 确定等待事件类型 1. select event,count(*) from v$session group by event order by 2 desc; 2. select * from (select event,count(*) from v$active\_session\_history where sample\_time>=to\_timestamp('&begin\_time','yyyy-mm-dd hh24:mi:ss') and sample\_time<=to\_timestamp('&end\_time','yyyy-mm-dd hh24:mi:ss') group by event order by 2 desc)where rownum<=10; 3. select * from dba\_hist\_snapshot order by snap\_id desc; --确认snapshot范围 select * from (select event,count(*) from dba\_hist\_active\_sess\_history where snap\_id between &begin\_snap and &end\_snap group by event order by 2 desc)where rownum<=10; --可以根据实际情况加入其它条件 2. 确定等待事件SQL\_ID 1. select * from (select event,sql\_id,count(*) from v$session where status='ACTIVE' and sql\_id is not null group by event,sql\_id order by 3 desc) where rownum<=10; 2. select * from (select event,sql\_id,count(*) from v$active\_session\_history where sample\_time>=to\_timestamp('&begin\_time','yyyy-mm-dd hh24:mi:ss') and sample\_time<=to\_timestamp('&end\_time','yyyy-mm-dd hh24:mi:ss') and event='&event\_name' group by event,sql\_id order by 3 desc)where rownum<=20; 3. select * from dba\_hist\_snapshot order by snap\_id desc; --确认snapshot范围 select * from (select event,sql\_id,count(*) from dba\_hist\_active\_sess\_history where event='&event\_name' and snap\_id between &begin\_snap and &end\_snap group by event,sql\_id order by 3 desc)where rownum<=20; --可以根据实际情况加入其它条件 3. 检查SQL性能趋势 1. select * from( select to\_char(a.end\_interval\_time, 'YYYY-MM-DD HH24:MI:SS') end\_interval\_time, s.sql\_id, s.plan\_hash\_value, s.executions\_delta, round(s.buffer\_gets\_delta / executions\_delta,3) as buffer\_gets\_delta\_each, round(s.elapsed\_time\_delta / executions\_delta / 1000000,3) as "elapsed\_time\_delta/s", round(s.cpu\_time\_delta / executions\_delta / 1000000,3) as "cpu\_time\_delta/s", round(s.physical\_read\_bytes\_delta / executions\_delta / 1000000,3) as "physical\_read\_bytes\_delta/s", round(s.ROWS\_PROCESSED\_DELTA / executions\_delta,3) as ROWS\_PROCESSED\_DELTA from dba\_hist\_sqlstat s, dba\_hist\_snapshot a where s.snap\_id = a.snap\_id and sql\_id = '&sqlid' and s.executions\_delta > 0 order by s.snap\_id desc ) where rownum<=200; 1. ● 1) 执行计划是否有变化(即plan\_hash\_value是否有变化)。 ● 2) 执行次数是否有突增 ● 3) 物理逻辑读是否有突增 ● 4) cpu和执行耗时是否有突增 4. 获取SQL执行计划 1. select * from table(dbms\_xplan.display\_awr('&sql\_id',&plan\_hash\_value,null,'ADVANCED')); 5. 优化SQL 3. 等待类型 1. PX Deq ***:并行导致 生产环境不允许使用并行 1. 1、sql文本中加入了并行 2. 2、会话级别加入了并行 3. 3、参数不合理:parallel\_max\_servers 默认一般都有点问题 4. 4、表、索引开启了并行度:degree代表默认并行度 1. select owner,table\_name,degree from dba\_tables where degree>1; select owner,index\_name,degree from dba\_indexes where degree>1; 2. buffer busy waits 1. SQL执行效率慢(执行计划突变,执行计划走错,执行次数过多,索引不合理等),逻辑读太高了。 2. 热块 3. control file parallel write 1. 大量操作读/写控制文件 4. control file sequential read 5. control file single write 1. 备份 2. 存储IO问题 3. 日志切换频繁 4. dump控制文件 6. db file sequential read:物理IO、单块读、索引扫描 1. 1、db cache过小,内存命中率过低 2. 2、sql执行效率有问题,走错执行计划了, BUFFER GETS 太高了(逻辑读 sysstat里面的session logical reads) 3. 3、存储IO性能问题 7. db file scattered read:物理IO、多块读、绝大部分为全表扫描和索引快速全扫描 1. 1、db cache过小,内存命中率过低 2. 2、执行计划异常:TABLE ACCESS FULL / INDEX FAST FULL SCAN 3. 3、存储IO性能问题 8. direct path read 1. 1、执行计划异常:全表扫描 变更调整参数\_serial\_direct\_read,设置为never 2. 2、并行操作导致 3. 3、参数不合理导致:\_serial\_direct\_read / \_small\_table\_threshold / \_very\_large\_object\_threshold 4. 4、LOB字段导致,需要cache到内存 9. direct path read temp 1. 排序导致,请关注temp表空间使用情况 10. direct path write temp 1. 1、sql性能问题,执行计划异常,笛卡尔积比较常见:MERGE JOIN CARTESIAN 2. 2、使用了大量的排序操作 11. enq: CF - contention:控制文件锁 1. 备份恢复 2. 存储IO 3. 日志切换,大量DML语句 12. enq:HW - contention:高水位锁,段/数据文件扩展频繁(autoextend on文件),可以手动扩展数据文件 1. 1、大量数据入库,比如:insert 2. 2、bug:数据量过大的非分区表(几十上百G) 3. 3、数据文件自动扩展不合理 13. cursor: mutex S 14. cursor: mutex X 15. cursor: pin S 16. cursor: pin S wait on X 17. cursor: pin X 1. 业务繁忙期编译存储过程、函数、包等 2. 业务繁忙期间DDL表/索引等 3. 硬解析过多 4. 未使用绑定变量/绑定变量过多 5. 传参、字段类型问题导致的隐式类型转换 6. version count过高,父游标无法共享 7. 执行次数过多 8. 共享池大小不合理 9. SGA设置不合理,导致内次抖动 18. enq: SQ - contention:sequence锁(建议新建sequence时指定cache大于 40) 1. cache过小 19. enq: TM - contention:表锁(外键必须有索引) 1. 1、全表锁 2. 2、外键没有索引 3. 3、insert /*+append*/ 20. enq: TX - allocate ITL entry:ITL事务槽锁引起的等待(增大该等待对应对象的事务槽,一般6-16足够) 1. 1、表/索引默认事务槽过小:select ini\_trans from dba\_tables where table\_name='&table\_name'; 2. 2、事务过于频繁 3. 3、bug:数据量过大的非分区表(几十上百G) 21. enq: TX - contention:行锁 22. enq: TX - row lock contention 1. 1、dml相同行 2. 2、业务逻辑问题 3. 3、sql执行缓慢 4. 4、未及时提交事务 23. enq: TX - index contention 1. 1.索引分裂:调整pct\_free 2. 2.大量insert导致索引分裂,一般出现在右侧索引上,比如:时间字段索引 评估整改为反向键索引或hash索引 3. 3.bug:数据量过大的非分区表(几十上百G) 24. enq: US - contention:undo segment锁 1. 1、undo空间不足 2. 2、sql导致undo使用过于频繁 3. 3、sql逻辑问题,未批量处理,及时释放undo 25. free buffer waits 1. 1、db cache不足 2. 2、db writer 不足 3. 3、存储IO差 26. latch free 1. 1、硬解析过多 2. 2、未使用绑定变量/绑定变量过多 3. 3、传参、字段类型问题导致隐式类型转换 4. 4、version count过高,父游标无法共享 5. 5、执行次数过多 6. 6、共享池大小不合理 7. 7、共享子池数量不合理 8. 8、sga设置不合理,导致内存抖动 27. latch: cache buffers chains 1. 1、SQL执行效率慢(执行计划突变,执行计划走错,执行次数过多,索引不合理等) 2. 2、热块 3. 3、简单sql大量buffer gets,一般是由于大事务相关CR数据被其他事务读取 28. latch: undo global data:undo争用 1. 1、undo\_retention / undo\_management 不合理 2. 2、undo过小 3. 3、sql导致undo使用频繁 4. 4、sql逻辑问题,未批量处理,及时释放undo 29. library cache lock 30. library cache pin 1. 1、业务繁忙期编译存储过程、函数、包等 2. 2、业务繁忙期间DDL表/索引等 3. 3、密码延迟验证 31. library cache: mutex *** 1. 1、业务繁忙期编译存储过程、函数、包等 2. 2、业务繁忙期间DDL表/索引等 3. 3、硬解析过多 4. 4、未使用绑定变量/绑定变量过多 5. 5、传参、字段类型问题导致隐式类型转换 6. 6、version count过高,父游标无法共享 7. 7、执行次数过多 8. 8、共享池大小不合理 9. 9、共享子池数量不合理 10. 10、sga设置不合理,导致内存抖动 32. log buffer space 1. 1、log buffer 不足 2. 2、大量dml 33. log file switch *** 1. 1、log buffer 不足 2. 2、大量dml 3. 3、坏块 4. 4、存储IO性能差 5. 5、redolog 大小和组数量不合理 6. 6、fra满 7. 7、卷空间满 8. 8、db writer不足 34. log file sync 1. 1、commit次数过多 调整参数\_use\_adaptive\_log\_file\_sync 2. 2、存储IO性能差 设置为false 3. 3、大量dml+redolog大小和组不合理 4. 4、log buffer不足 5. 5、隐含参数问题:\_use\_adaptive\_log\_file\_sync 6. 6、CPU处理能力不足 35. read by other session 1. 1、SQL执行计划异常(执行计划走错,索引不合理等) 2. 2、dbcache内存设置较小 3. 3、热块 36. row cache lock 1. 1、共享池大小不合理 V$ROWCACHE 2. 2、共享子池数量不合理 DBA\_HIST\_ROWCACHE\_SUMMARY 3. 3、对象设置不合理。比如sequence的cache,表空间的自动扩展大小等 4. 4、频繁大量grant 5. 5、sga设置不合理,导致内存抖动
徐铭
2024年3月26日 16:43
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期