Oracle监控⽅法及监控指标Oracle监控⽅法及监控指标
⼀)监听前提
要实现对oracle的监控,⾸先要保证运⾏controler的机器能够连接上oracle数据库,所以需要安装oracle客户端。
⾸先需要配置监听的oracle数据库服务。下⾯是三种⽅法
1.1⽅法⼀
1、安装⼀个完整的oralce(包括客户端和服务端),在界⾯易于操作
操作步骤如下
1.1)、安装⼀个oracle过程中会有⼀个监听程度建⽴,数据库安装完成后可以查查看监听程序是否存在如下操作1.2)、打开Net Manger,确认已有⼀个监听程序,红⾊标识的内容中是安装服务的机器名称
1.3)添加监听服务
1.4) 输⼊⼀个名称如现在监控19
2.168.100.236,输服务名为L236,选择下⼀步
确认后,选择下⼀步
1.5) 输⼊要监控的数据库ip
输⼊完成后选择下⼀步
1.6 )输⼊数据库服务名称,后选择下⼀步
1.7) 此时可以进⾏测试,判断是否可以连接到所监控的数据库
1.8)选择测试出现
1.9) 选择更改登录输⼊正确的⽤户名和密码
1.10)输⼊完后,确认出现点击测试出现如下提⽰,连接测试成功信息
1.11)还可以⽤sqlplus确认,操作如下 1、sqlplus INPUT@L236. 其中L236上⾯设置的服务名称。2、数据INPUT⽤户密码后回车。进⼊sql。
1.2⽅法⼆
单独安装客户端,直接配置a⽂件
利⽤程序中oralce客户端⽂件直接看到配置
配置该⽂件
52LOADRUN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.52)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = gtadb)
)
)
oracle游标的使用
其中 52LOADRUN是监听数据库oracle的服务名称,可以⾃⼰命名, 192.168.0.52 和数据库服务名称需要根据实际内容输⼊。
1.3⽅法三
利⽤安装⽬录⽂件修改直接修改添加,
在oracle安装⽬录下product\11.1.0\db_1\NETWORK\ADMIN 下 a⽂件是监听的配置。
L236 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 输⼊监听的服务器IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME =oracle服务名)
)
内容
如直接将上⾯内容修改为服务名为L237,或者修改HOST 和SERVICE_NAME 名称即可
L237 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =输⼊监听的服务器IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle服务名)
)
)
⽂件保存后,通过NET Manager
利⽤sqlplus 也确认成功
⼆)Loadrunner监控Oracle⽅法
1、打开监控器,在Database Server Resource Graphs 图下双击Oracle,打开Oracle监视图
2、在该图上右键点击,然后点击Add Measurements,在随后出现的图上点击Add 按钮,添加要监控的数据库服务器
3、点击OK,然后在下图选择红⾊标识的Add 按钮
4、在这⾥输⼊⽤户名和密码。其中红⾊标识出来的内容是我们在添加Oracle服务中设置的服务名称。输⼊完成后,点击OK,就可以选择要监控的指标。
备注这⾥输⼊的⽤户应具有管理员权限,但这⾥不⽀持SYS这个管理员⽤户。
5上⼀步骤操作完后出现数据库指标,选择⾃⼰要添加的指标后
三)Oracle常⽤指标
1V$SYSSTAT的指标
1.1 V$SYSSTAT常⽤指标
指标名称指标描述指标范围指标单位
CPU used by this session所有session的cpu占⽤量,不包括后台进程
DB block changes(当前请求的块数⽬)当前模式块意思是在操作中正好提取的块数⽬,⽽不是在⼀致
性读的情况下⽽产⽣的块数。正常的情况下,⼀个查询提取的
块是在查询开始的那个时间点上存在的数据块,当前块是在这
个时刻存在的数据块,⽽不是在这个时间点之前或者之后的数
据块数⽬
它们三者之间的关系⼤致可概括为:
逻辑读指的是Oracle从内存读到的数据块
数量。⼀般来说
是'consistent gets' + 'db block gets'。
当在内存中不到所需的数据块的话就需
要从磁盘中获取,于是就产⽣
了'physical reads'。
Consistent Gets(⼀致读)数据请求总数在回滚段buffer中的数据⼀致性读所需要的数据
块)这⾥的概念是在处理你这个操作的时候需要在⼀致性读状
态上处理多少个块,这些块产⽣的主要原因是因为由于在你查
询的过程中,由于其他会话对数据块进⾏操 作,⽽对所要查
询的块有了修改,但是由于我们的查询是在这些修改之前调⽤
的,所以需要对回滚段中的数据块的前映像进⾏查询,以保证
数据的⼀致性。这样就产 ⽣了⼀致性读。
Physical reads(物理读)OS blocks read数,包括插⼊到sga缓存区物理读以及PGA
中的直接读这项统计并⾮I/O请求书
产⽣物理读主要原因是1)在数据库⾼速缓存中不存在这些
块;2)全表扫描;3)磁盘排序
Physical writes从SGA缓存区被DBWR写到磁盘的数据块以及PGA进程直写
的数据块数量
Exectute count执⾏的sql语句数量
Logons current当前连接到实例的session,如果当前有两个快照则取平均值Logons cumulative⾃实例启动后总的登陆次数
Parse count(hard)在shared pool中解析调⽤的未命中次数。当sql语句执⾏并
且该语句不在shard pool或虽然在shared pool但因为两者存
在部分差异⽽不能被使⽤时产⽣硬解析。如果⼀条sql语句原
⽂与当前存在的相同,但查询表不同则认为他们是两条不同的
语句,则硬解析即会发⽣。硬解析会带来cpu和资源使⽤的⾼
昂开销,因为它需要oracle在shared pool中重新分配内存,
然后再确定执⾏计划,最终语句才会被执⾏
Parse count(total)解析调⽤总数,包括软解析和硬解析。当session执⾏了⼀条
sql语句,该语句已经存在于shared pool并且可以被使⽤则
产⽣软解析。当语句被使⽤(即共享)所有数据相关的现有
sql语句(如最优化的执⾏计划)必须同样⽤于当前的声明。
Parse time cpu总cpu解析时间(单位10ms)。包括应解析和软解析
Parse time elapsed完成解析调⽤的总时间花费
Redo log space requests在redo logs 中服务进程的等待空间,表⽰需要更长时间的
log switch
Redo size Redo 发⽣的总次数(以及因此写⼊的log buffer),以byte
为单位。这项统计显⽰出update活跃性
Session logical reads逻辑读请求数
Sort(memory)Sort(disk)1、Sort(memory)适于在sort_area_size(不需要在磁盘进⾏排序)的排序操作的数量。
2、Sort(disk)则是由于排序所需空间太
⼤,sort_area_size 不能满⾜⽽不得不在磁盘进⾏排序操作
的数量。
3、这两项统计通常⽤于计算in-memory sort ratio该项显⽰
内存中完全的排序所占⽐例。理想状态下,在OLTP系统中,
⼤部分排序不仅⼩且能够完全在内存⾥完成排序。公式为
Sort(memory)/( Sort(memory)+Sort(disk))
1.2 名词解释
1.2.1 SGA
系统全局区⼜称SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是⼀组包含⼀个Oracle实例的数据和控制信息的共享内存结构。主要是⽤于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
组成
SGA主要由数据⾼速(Database Buffer Cache)、共享池(Shared Pool)、重做⽇志缓冲区(Redo Log Cache)、⼤型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。
1.2.2 PGA:
(Program Global Areas,程序全局区)此区域包含单个服务器进程或单个后台进程的数据和控制信息,与⼏个进程共享的SGA 正相反。PGA 是只被⼀个进程使⽤的私有区域。PGA 在创建进程时分配,在终⽌进程时回收
2 ⾃定义指标
2.1添加⾃定义指标⽅法
更改了在dat⽂件夹下的vmon.cfg⽂件,添加了⾃定义计数器
--------------------------------------------------------------------------------
在vmon.cfg⽂件中:
[V$ Monitor]
Counters=150
;CustomCounters=12
;How many seconds for each data sample?
SamplingRate=1
需要去掉第三⾏前⾯的分号,⾃定义的计数器就可以显⽰出来了
2.2常⽤⾃定义指标
3 常⽤的视图
3.1 v$sql视图
在V$sql中保存共享缓存池的sql语句,如利⽤select * from V$sql先执⾏⼀次查询
再利⽤具体的sql内容查询V$sql中的内容,让⼤家知道如何使⽤V$sql视图
SQL_TEXT:SQL⽂本的前1000个字符