数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ORACLE性能诊断―学习statspack笔记(二)


发布日期:2019年07月18日
 
ORACLE性能诊断―学习statspack笔记(二)

Oracle性能诊断涉及对象

A服务器网络以及磁盘(外部的环境)

B实例(SGA后台进程)

C对象(表索引段……)

D SQL

E设计(指的是应用的设计这部分一般说来是很难改变了)

ORACLE性能诊断要遵循上面的顺序先察看服务器是否存在问题主要从CPURAMDISK配置是否存在问题检查操作系统的核心参数的设置等等如果是跨地域的进行共享的多个ORACLE网络通信性能也是非常的关键的ORACLE利用的是TNS(Transparent Network Substrate 透明网络层)提供数据库之间的分布传输另外影响ORACLE相应时间的最大的单独组成部分是磁盘I/O能够减少磁盘I/O的任何事情都会对ORACLE的性能产生正面的影响比如改变ORACLE初始化参数调整相应的SQL等对于ORACLE的实例调整应该注意的问题是过载的ORACLE的SGA会导致严重的性能问题对于ORACLE实例的调整主要包括初始化参数数据缓沖存储(DEFAULTKEEPRECYCLE)和SGA中共享池和库缓存等还有就是ORACLE对象的调整包括存储参数等等最后是SQL语句的调整

STATSPACK概述

STATSPACK来源在ORACLE最早版本就存在的UTLBSTAT和UTLESTAT工具开始的BSTATESTAT工具就可以直接从ORACLE的内存结构中获取信息

STATSPACK通过获取数据库当前状态的快照来进行工作大部分的情况我们会规划一个以小时为单位来收集数据的JOB并在需要的时候请求附加快照当我们获取快照时STATSPACK会从SGA内部的RAM内存结构中采样并记录到相应的STATSPACK表中注意的是大多数情况下SGA中的V$视图与相应的的STATSPACK表之间存在直接的对应关系比如

V$SYSSTAT >STATS$SYSSTAT

SQL> DESC V$SYSSTAT

NameNull?Type

STATISTIC# NUMBER

NAME VARCHAR()

CLASSNUMBER

VALUENUMBER

SQL> DESC STATS$SYSSTAT

NameNull?Type

SNAP_ID NOT NULL NUMBER()

DBIDNOT NULL NUMBER

INSTANCE_NUMBER NOT NULL NUMBER

STATISTIC#NOT NULL NUMBER

NAMENOT NULL VARCHAR()

VALUENUMBER

在理解STATSPACK工具的时候很关键的是要明白通过STATSPACK快照收集的信息是累计值从V$视图中收集到起始时间的数据库信息然后进行持续累加知道实例中止我想这也许就应该是STATSPACK不能产生两张跨越SHUTDOWN的快照的报告的原因吧

对应STATSPACK存在一系列的STATSPACK表不同的ORACLE版本会有一定的差异这些表大体上分为控制表参数表事件表事务处理表并行服务器表概要表系统表等等

下面是我列出的ORACLEI的STATSPACKE表

SQL> select table_name from dba_tables where table_name like STATS$%;

TABLE_NAME

STATS$DATABASE_INSTANCE

STATS$LEVEL_DESCRIPTION

STATS$SNAPSHOT

STATS$DB_CACHE_ADVICE

STATS$FILESTATXS

STATS$TEMPSTATXS

STATS$LATCH

STATS$LATCH_CHILDREN

STATS$LATCH_PARENT

STATS$LATCH_MISSES_SUMMARY

STATS$LIBRARYCACHE

TABLE_NAME

STATS$BUFFER_POOL_STATISTICS

STATS$ROLLSTAT

STATS$ROWCACHE_SUMMARY

STATS$SGA

STATS$SGASTAT

STATS$SYSSTAT

STATS$SESSTAT

STATS$SYSTEM_EVENT

STATS$SESSION_EVENT

STATS$BG_EVENT_SUMMARY

STATS$WAITSTAT

TABLE_NAME

STATS$ENQUEUE_STAT

STATS$SQL_SUMMARY

STATS$SQLTEXT

STATS$SQL_STATISTICS

STATS$RESOURCE_LIMIT

STATS$DLM_MISC

STATS$UNDOSTAT

STATS$SQL_PLAN_USAGE

STATS$SQL_PLAN

STATS$SEG_STAT

STATS$SEG_STAT_OBJ

ABLE_NAME

STATS$PGASTAT

STATS$IDLE_EVENT

STATS$PARAMETER

STATS$INSTANCE_RECOVERY

STATS$STATSPACK_PARAMETER

STATS$SHARED_POOL_ADVICE

STATS$SQL_WORKAREA_HISTOGRAM

STATS$PGA_TARGET_ADVICE

rows selected

其中STATSPACK表的主要锚定点是STATS$DATABASE_INSTANCE具体的表的介绍我打算放到后面的文章进行讨论

可以说以前我们的Oracle性能调整主要是一种REACTIVE TUNNING(反应式调整)通过STATSPACK工具我们可以进行长期趋势分析性能问题事后分析资源规划以及预测建模等我们完全可以采用一种PROACTIVE TUNNING(前瞻式调整)并且从ORACLEI开始ORACLE可以动态的改变ORACLE实例的内存配置ORACLE也正朝着动态数据库配置迈进

上一篇:mysql集群表优化

下一篇:Oracle常见SQL分页实现方案