用户的连接将产生会话,当前会话记录保存在v$session
中,通过该视图,DBA可以查看用户实际执行的操作,或者当前的等待事件等。
处于等待状态的会话会被复制一份放在v$session_wait
中。
但是,一旦连接断开,其原来的连接信息在v$session
和v$session_wait
中就会被删除。这是10g之前的状况。
若是一个普通的会话一般没有大量地耗费资源,则对于性能调整来说无足轻重。但若该会话在活动时大量占用了资源(比如:CPU,内存,I/O等),该会话信息的丢失,将无法评测当时的系统瓶颈究竟是什么。令DBA高兴的是,Oracle 10g中保留下了v$session_wait
中的这些信息。
在Oracle 10g以后新出现了一个视图:v$session_wait_history
。这个视图保存了每个活动session在v$session_wait
中最近10次的等待事件。但这对于一段时期内的数据库性能状况的监测是远远不够的,为了解决这个问题,在10g中还新添加了一个视图:v$active_session_history
,活动会话的历史记录。即使用户操作完成后,断开了连接也不怕,因为其会话的情况已经被记录了下来,这项特性就是ASH了,全称与视图名相同,正是:ACTIVE SESSION HISTORY。
典型的情况下,为了诊断当前数据库的状态,需要最近的五到十分钟的详细信息。然而,由于记录session的活动信息是很费时间和空间的,ASH采用的策略是:保存处于等待状态的活动session的信息,每秒从v$session_wait中采样一次,并将采样信息保存在内存中。
ASH的采集信息保存在内存中,在旧的信息被采样到AWR中后,可被新采集的信息覆盖,重启oracle后该信息被清除。动态性能视图其实上是ORACLE自行构造的一堆存在于SGA内存区的虚表,就是说,ASH的数据是保存在内存里的,实际上,ORACLE分配给ASH的空间并不是无限大(更何况ORACLE自身管理的内存空间也不是无限大),分配给ASH的内存大小可以查询到:
SQL> select pool,name,bytes/1024/1024 Mb From v$sgastat where name like 'ASH%';
POOL NAME MB
------------ -------------------------- ----------
shared pool ASH buffers 96
直白的讲 ,v$active_session_history
中能够记录多少会话信息, 一方面取决于该数据库的SGA分配给ASH buffers的大小 ,另一方面取决于数据库的启动和关闭(重启数据库时将重构SGA内存区)。这两方面的因素制约了v$active_session_history
中能够保存的会话信息的能力,我们肯定是希望ASH尽可能多的保留关于会话的信息,但目前来看单纯依靠v$active_session_history
肯定无法实现这点,ORACLE又提供了AWR特性,ASH收集到的会话信息,是做为AWR中快照信息的一部分,被保存到了硬盘上。
ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR-Automatic Workload Repository:自动负载信息库。
由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history
进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history
中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。
要想让AWR收集到准确的统计信息,从而生成可靠的性能分析报告,必须将初始化参数STATISTICS_LEVEL
的值设置为TYPICAL或ALL。
SQL> show parameter STATISTICS_LEVEL
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
AWR永久地保存系统的性能诊断信息,由SYS用户拥有。一段时间后,可能想清除掉这些信息;有时候为了性能诊断,可能需要自己定义采样频率来获取系统快照信息。Oracle 10g在包dbms_workload_repository
中提供了很多过程,通过这些过程,可以管理快照并设定基线(baselines)。
注意
其实,AWR记录的信息不仅是ASH,还可以收集到数据库运行的各方面统计信息和等待信息,用以诊断分析。
AWR的采样方式是,以固定的时间间隔为其所有重要的统计信息和负载信息执行一次采样,并将采样信息保存在AWR中。
可以这样说:ASH中的信息被保存到了AWR中的视图wrh$_active_session_history
中。ASH是AWR的真子集。
这样,我们就知道了ASH和AWR产生的原因和功能。
对于这些视图间的继承关系,eygle给出了一个关系图:
其中视图dba_hist_active_sess_history
是wrh$_active_session_history
和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。
快照由一个称为MMON 的新的后台进程(及其从进程)以及MMNL后台进程自动地每隔固定时间采样一次。
MMON进程负责执行多种和管理相关(manageability-related)的后台任务:
MMNL进程负责执行轻量级的且频率较高的和可管理性相关的后台任务,例如捕获会话历史信息,测量值计算等。
AWR的采样工作由MMON进程每个1小时执行一次,ASH信息同样会被采样写出到AWR负载库中。虽然ASH buffer被设计为保留1小时的信息,但很多时候这个内存是不够的,当ASH buffer写满后,后台进程MMNL将会主动将ASH信息写出。
这些采样数据都存储在SYSAUX表空间中,并且以WRM$_*
和 WRH$_*
的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。
SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME LIKE 'WRM$%';
TABLE_NAME
------------------------------
WRM$_BASELINE
WRM$_BASELINE_DETAILS
WRM$_BASELINE_TEMPLATE
WRM$_COLORED_SQL
WRM$_DATABASE_INSTANCE
WRM$_SNAPSHOT
WRM$_SNAPSHOT_DETAILS
WRM$_SNAP_ERROR
WRM$_WR_CONTROL
WRM$_WR_USAGE
10 rows selected.
当SYSAUX表空间满后,AWR将自动覆盖掉旧的信息,并在警告日志中记录一条相关信息:
ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_3533490838_1522 by 128 in tablespace SYSAUX
可以通过查询视图dba_hist_wr_control
或wrm$_wr_control
来查询AWR的采样频率和保留时间。默认为每1小时采样一次,采样信息保留时间为7天。
@?/rdbms/admin/awrrpt.sql
或者
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
Type Specified: html
Enter value for num_days: 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 101
Enter value for end_snap: 102
End Snapshot Id specified: 102
Enter value for report_name: 0531awr.html
AWR报告要根据系统实际情况(OLAP or OLTP)来进行分析,例如对于一个OLTP系统,library hit和buffer hit应比较关注。而对于OLAP不甚重要。
AWR报告不需要全面阅读,全面阅读可能思路会更乱,如果性能问题由某个原因引起,那么会在报表的各个部分都会有相应呈现。
在RAC结构的数据库里做性能分析,通常需要对每个实例做一个AWR性能报告,原因是无法知道每个用户连接到哪个实例当中去。
对于一个系统,需要多做几次AWR报告,以便得到所有时间段的系统性能数据。在查看AWR报告时,如果了解数据库业务,应该有针对性的看一些可能存在性能问题的部分,并结合业务的实际情况来判断;也可以从TOP 10的等待事件触发,按照等待事件的类型,到相应的部分获取详细的信息来对系统性能问题作出判断。
通过AWR报告可以:
1)查看系统的负载和繁忙程度;
2)查看系统的瓶颈,发生的等待事件;
3)查看可优化的sql;
1.Summary:
2.Report Summary:
load profile:数据库资源负载的一个明细列表,用来判断系统的繁忙程度。分割为每秒钟的资源负载和每个事务的资源负载情况。
1)DB time:用户操作花费的时间的合集,包括CPU时间和等待事件;
Instance Efficiency Percentages:内存效率的统计信息,对于OLTP系统,应尽可能的接近100%。如果哪个数据偏低,就要做相关的分析研究。
1)buffer nowait:非等待方式获取数据库;
2)redo nowait:非等待方式获取redo数据;
3)buffer hit:内存数据块命中率;
4)in-memory sort:数据块在内存中排序的百分比;
5)library hit:共享池中sql解析的命中率;
6)execute to parse:执行次数对分析次数的百分比;
7)Soft Parse %:软解析比例
Execute to Parse %-sql 语句解析后被重复执行的次数, 计算公式=100*(1-Parses/Executions),很明显,如果SQL重用率比较高,那么该比例就很高。如果过低,可以考虑设置session_cached_cursors 参数
Soft Parse %-软解析比例, 公式=softs/softs+hards,近似于sql在共享区的命中率,小于95%,需要考
虑使用绑定变量,如果低于80%,那么就可能sql 基本没有被重用;
8)latch Hit:latch命中率百分比;
9)parse cpu to parse elapsed:解析总时间中消耗CPU的时间百分比;
10)non-parse cpu:cpu非分析时间在整个cpu时间的百分比;
cache sizes:列举awr在性能采集开始和结束的时候,数据缓冲池和共享池的大小,可以了解系统内存消耗的变化,可以判断SGA的内存分配是否合理;
TOP 10 Foreground Events by Total Wait Time:查看最高10个耗费时间及等待事件,要联系报告的采集周期来看耗费时间是否合理。一般来说,CPU time出现在TOP10中的第一位,并且消耗时间占总时间的大部分比例。可以说明系统在正常运行。
以上这部分就是awr报告的总体概要,是需要重点关注的部分,根据这些信息可以知道等待时间比较长的事件,然后根据这些事件,去下面具体的部分查找问题原因。
3.Wait Events Statistics:
5.Instance Activity Statistics:
cpu used by this session:oracle消耗的cpu单位,可以看出cpu的负载情况;如果total为1000,per sec 为80,cpu个数为2;
那么就是整个统计周期消耗了1000个cpu单位,每秒钟消耗了80个cpu单位,对应实际的时间是80/100=0.8秒;每秒钟每个cpu消耗80/2=40个cpu单位;每秒钟中每个cpu处理使用的时间是40/100=0.4秒。
6.I\O Stats:
ASH侧重于当前数据中活动会话的信息分析,被长期保存在数据字典中,可以通过查询视图V$ACTIVE_SESSION_HISTROY
来得到。
也可以运行脚本。
使用同目录下的ashrpti.sql脚本可以生成其他数据库或者实例的ASH性能报告,也可以对一个session ID、SQL_ID、某个程序或者某一类等待事件
@?/rdbms/admin/ashrpt.sql
或者
@$ORACLE_HOME/rdbms/admin/ashrpt.sql
Enter begin time for report:
-- Valid input formats:
-- To specify absolute begin time:
-- [MM/DD[/YY]] HH24:MI[:SS]
-- Examples: 02/23/03 14:30:15
-- 02/23 14:30:15
-- 14:30:15
-- 14:30
-- To specify relative begin time: (start with '-' sign)
-- -[HH24:]MI
-- Examples: -1:15 (SYSDATE - 1 Hr 15 Mins)
-- -25 (SYSDATE - 25 Mins)
Defaults to -15 mins
Enter value for begin_time:
Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
Enter value for duration:
Enter value for report_name: ash0601.html
ASH报告分析如下:
DATA SOURCE如果来自DBA_HIST_ACTIVE_SESS_HISTORY,那么说明这些信息来自于AWR的快照;如果来自于V$ACTIVE_SESSION_HISTORY,那么
视图的信息就意味着性能数据存放到内存中的信息。
关于初学ASP.NET技术的学习顺序问题前前后后有很多询问ASP.NET的学习顺序问题,在此就向打算系统学习ASP.NET技术的初学者谈谈我的建议。如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。ASP.NET是一个全面向对象的技术,不懂OO,那绝对学
1、网络数据采集分析工具TcpDump的简介顾名思义,TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但_tcpdump 嗅探
MDSS:Multimedia Display Sub-systemDisplay driver包括:SurfaceFlinger,Hardware Composer(HWC),以及overlayFramebufferMIPI DSI驱动系统架构MDSS 1.0显示子系统Soure Surface Processor(ViG, RGB,DMA-SSPA)---格式转
问题当前使用的服务器,数据库是utc 时区,本地环境是服务端是utc+8 的时间,前后端交互,时间字段按 format "YYYY-MM-DD H"
前端效验form表单是否发生改变,如果没改变直接前端提示/** * 使用 json工具实现对象的深拷贝 * @param obj 提供覆盖属性的对象 */var deepClone1 = function(obj){ var _obj = JSON.stringify(obj); return JSON.parse(_obj);}/** * 使用递归实现对象深拷贝 * @param obj * @returns {Array} */var deepClone2 ._判断表单是否发生改变
Time Limit:10 SecMemory Limit:128 MBSubmit:2167Solved:907[Submit][Status][Discuss]Description您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱...
仅供自学使用,各位观众自行参考Reference:中国大学mooc 管理运筹学 韩伯棠https://wenku.baidu.com/view/2e7891961a37f111f1855b46.html#https://zhuanlan.zhihu.com/p/104697552在老韩版本的管理运筹学中,手算方法分图解法和单纯形法,不懂左转上边引用的链接跳转看课学习,这里不再赘述过多。老韩教材版本的管理运筹学软件,要找找才知道有没有线性规划步骤:目标函数约束变量决策变量一顿操作猛._ssimplex.m
点:即路由。一个路由为一个跃点。传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它的ip。跃点数是经过了多少个跃点的累加器,为了防止无用的数据包在网上流散可能很多用户都不清楚什么是自动跃点,接下来小编就给大家介绍下自动跃点是什么?以及如何修改Win7自动跃点?自动跃点作用:此功能分别为网络中的每一个网络接口配置跃点数。该功能非常适用于有多个相同速度的网络接口...
DCMTK:测试DcmSCP和DcmSCU类测试DcmSCP和DcmSCU类测试DcmSCP和DcmSCU类#include "dcmtk/config/osconfig.h" #ifdef WITH_THREADS#include "dcmtk/ofstd/oftest.h"#include "dcmtk/ofstd/oftimer.h"#include "dcmtk/dcmnet/scp.h"#include "dcmtk/dcmnet/scu.h"#include <cmat
期望的分母是C(m,3),利用差分前缀和处理出每个点被多少区间覆盖,w[i]*C(sum[i],3)即为第i位的贡献。学习一下期望的求法考虑每个点的贡献。#include#include#include#include#include#include#include#include#include#include#include#include#include#d
最近开发页面遇到一些问题,在这里记录一下。通常,我们的html页面或jsp页面难免需要引入一些图片、js、css等文件,于是需要填写对应的文件路径,有相对路径和绝对路径两种写法,写相对路径时,如果通过controller后再返回对应的html或jsp页面时,相对路径可能会不是我们想要的,例如,在服务器端,如果某js文件路径为:/js/xx.js,html文件为/html/xx.html,并在在ht..._html静态资源路径 后端 js
2019独角兽企业重金招聘Python工程师标准>>> ...