SHAREDPOOL使用率的监控部署及思考
【系统环境】:
系统环境:Sun Solaris10 U11 + ORACLE 11.2.0.4.0 RAC
【背景描述】:
从2016年11月起,生产的数据库期的出现了两次m0001进程120秒无法启动:
主要报错:waiting for 0x3800fe418 Child shared pool level=7 child#=2,引起数据库异常的故障。专家分析得出的结论:统计收集作业触发shared pool空间需求,并出现收缩与扩容操作,先收缩说明shared pool空间容量不足或碎片严重导致无法找到可以使用的内存。当shared pool空间不足和存在碎片时会触发空间收缩与扩容。
由于目前没有数据去证明专家们的论点,只有在下一次故障重现时收集相关数据,则需要考虑怎么样去收集数据去证明专家的论点。
【监控前情况】
统计收集作业触发shared pool空间需求,并出现收缩与扩容操作,先收缩说明shared pool空间容量不足或碎片严重导致无法找到可以使用的内存。当shared pool空间不足和存在碎片时会触发空间收缩与扩容。则需要对SHAREDPOOL使用情况进行监控。
对于表设计想法:
1,由于该数据库的SHAREDPOOL使用情况查看方法很多种,怎样更直观体现SHAREDPOOL的使用情况,确认用百分比及总空间和剩余空间进行监控SHAREDPOOL;
2,存放数据应该存放监控数据的表空间AUDIT_DATA不影响应用使用的表空间,考虑到该数据库存储不足不能扩容,更容易分析时间段的数据,基于该条件情况下对表进行生命周期管理,则应该创建月分区表CHECK_SHAREDPOOL。
创建监控CHECK_SHAREDPOOL分区表:
CREATE TABLE XJ_EXP_DATA. CHECK_SHAREDPOOL
(INST_ID NUMBER,
"Free_Shared_Pool(MB)" NUMBER,
"Total_Shared_Pool(MB)" NUMBER,
FREEPCT VARCHAR2(10),
SAMPLE_TIME DATE DEDAULT SYSDATE)
PARTITION BY RANGE (SAMPLE_TIME)(
PARTITION P201701 VALUES LESS THAN (TIMESTAMP '2017-01 00:00:00') ,
PARTITION P201702 VALUES LESS THAN (TIMESTAMP '2017-02 00:00:00') ,
..........----省略其他分区语句
PARTITION PMAX VALUES LESS THAN (MAXVALUE) )
TABLESPACE AUDIT_DATA;
对于部署想法:
1,考虑到SHAREDPOOL的使用情况,数据库的每个节点都不一样,则需要每个节点都需要部署任务进行监控SHAREDPOOL;
2,考虑到对数据库SHAREDPOOL监控数据需要测试监控的可行性,则在对应生产的测试库进行测试监控三天查看监控情况;
3,考虑到数据的监控需求性,记录监控数据是否准确,定制采集数据频率为一小时;
在测试库测试该监控情况正常后,则誊写方案,内部审核后,提单对生产库进行部署SHAREDPOOL监控脚本及定时任务。
【监控优化】
对其生产监控SHAREDPOOL最后生成数据效果如下:
中间监控优化步骤如下:
1,SQL的优化:考虑到需要同时对比两个节点的SHAREDPOOL使用情况。则需要SQL查询组合多个节点数据;
2,采集数据优化:对于生产库比较多,需求每天提供监控SHAREDPOOL使用情况数据,有时突然需求SHAREDPOOL的使用情况,则考虑用监控主机使用PYAHON进行采集数据;
3,图形优化:考虑更加直观查看SHAREDPOOL的使用情况趋势,想到南基采数据库周报数据也是用PYTHON,则用PYTHON直接生成图形监控数据;
vi sharedpool.py
# -*- coding:UTF-8 -*-
import xlsxwriter, cx_Oracle, sys
reload(sys)
sys.setdefaultencoding('utf-8')
database_list = {'DEVDB': 'xj_exp_data/xxxx @172.16.85.1:1521/YYDB',
...........-----------添加连接多个数据库}
for d in database_list:
print(d)
conn = cx_Oracle.connect(database_list[d])
# connect_database
c = conn.cursor() #get cursor
x = c.execute('''
SELECT s.SNAP_TIME,s.INST_ID1,s.INST_ID2,d.NAME,s.TOTAL_MB_INST1,s.FREE_MB_INST1,
s.TOTAL_MB_INST2,s.FREE_MB_INST2
FROM (SELECT a.SNAP_TIME,a.PCT INST_ID1,b.PTC INST_ID2,a.TOTAL_MB TOTAL_MB_INST1,a.FREE_MB FREE_MB_INST1,b.TOTAL_MB TOTAL_MB_INST2,b.FREE_MB FREE_MB_INST2 from
(select to_char(trunc(SAMPLE_TIME +10/60/24, 'hh24'),'yyyymmdd_hh24') snap_time,INST_ID,"Free_Shared_Pool(MB)" free_mb,"Total_Shared_Pool(MB)" total_mb,to_number(replace(FREEPCT, '%', '')) pct
from XJ_EXP_DATA.CHECK_SHAREDPOOL PARTITION (P201703) where INST_ID = 1) a
left join ..............-------添加多个节点内容
left join (select to_char(trunc(SAMPLE_TIME +10/60/24, 'hh24'),'yyyymmdd_hh24') snap_time,INST_ID, "Free_Shared_Pool(MB)" free_mb,"Total_Shared_Pool(MB)" total_mb,to_number(replace(FREEPCT, '%', '')) pct
from XJ_EXP_DATA.CHECK_SHAREDPOOL PARTITION (P201703) where INST_ID = 2) b
on a.snap_time = b.snap_time(+)order by to_date(a.snap_time, 'yyyymmdd hh24')) s,
(select NAME from v$DATABASE) d ------用以识别多个数据库
''')
dbname = x.fetchone()[3]
row = x.fetchall()
..........--------省略部分内容
# Add a chart title and some axis labels.
chart1.set_title({'name': dbname + '一天数据库sharedpool监控'})
# Set an Excel chart style. Colors with white outline and shadow.
chart1.set_style(10)
# Insert the chart into the worksheet (with an offset).
worksheet.insert_chart('G2', chart1, {'x_offset': 25, 'y_offset': 10})
c.close()
conn.close()
workbook.close()
【总结】:
1,监控数据库的项目时,同时考虑是否多个节点数据一样。
2,对于多个数据库监控,PYTHON有非常大的帮助。
SHAREDPOOL使用率的监控部署及思考的更多相关文章
- zabbix监控-部署(一)
zabbix之自动化监控-部署篇(一) 标签(空格分隔): linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 浅谈监控 监控命令 查看硬件的温度/风扇转 ...
- zabbix分布式监控部署--技术流ken
前言 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...
- zabbix proxy分布式监控部署
一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...
- nagios监控部署
nagios监控部署. 在部署之前把依赖包安装了. [root@tiandong63 ~]# yum install -y gcc glibc glibc-common php gd gd-devel ...
- 017-zabbix_proxy分布式监控部署
一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...
- Cacti+nagios 整合监控部署文档
目录 Cacti+nagios监控部署步骤... 2 一.Cacti安装... 2 1需要安装的依赖软件包:... 2 2安装rrdtool 2 3启动数据库和httpd服务... 3 4将serve ...
- OneAPM 云监控部署与试用体验
作为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的.一来觉得收费,二来担心数据被人所知,三来觉得 Zabbix 牛逼到无可取代.但是,随着 APM 市场的火爆,我决定「放下身段」 ...
- Nagios监控部署(转)
转自 http://kyhack.blog.51cto.com/490370/213355 ky.blog 一.nagios简介 nagios是一款用于系统和网络监控的应用程序,它可以在 ...
- linux服务器性能(网卡流量、CPU、内存、磁盘使用率)监控
广义的网站的监控涵盖所有的非业务行为的数据采集与管理,包括数据分析师和产品设计师使用的网站用户行为日志.业务运行数据,以及供运维工程师和开发工程师使用的性能统计数据等. 本文主要是通过shell脚本来 ...
随机推荐
- rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较
Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的 ...
- 3.18 总结 java 基础语法
- 在windows下远程访问linux桌面
一.安装xrdp工具: # yum install xrdp # yum install tigervnc-server # service xrdp start 以上三个命令执行完毕安装完 ...
- 【转】在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
在子线程中new一个Handler为什么会报以下错误? java.lang.RuntimeException: Can't create handler inside thread that has ...
- .net后台以post方式调用http接口[转]
string strResult = ""; try { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create( ...
- Java 208 道面试题:第一模块答案
目前市面上的面试题存在两大问题:第一,题目太旧好久没有更新了,还都停留在 2010 年之前的状态:第二,近几年 JDK 更新和发布都很快,Java 的用法也变了不少,加上 Java 技术栈也加入了很多 ...
- 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。
Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...
- Python Revisited Day 13 (正则表达式)
目录 13.1 Python的正则表达式语言 13.1.1 字符与字符类 13.1.2 量词 {m, n} ? + * 组与捕获 ?:可以关闭捕获 断言与标记 13.2 正则表达式模块 正则表达式模块 ...
- 小程序——返回上个页面触发事件(onUnload)
//页面销毁前--上传被提交的数据 onUnload:function(){ var _this=this; let updateStatus = wx.getStorageSync('UpdateS ...
- PS快速祛除脸上小雀斑
首先我们要把图片放到PS软件中,然后在PS左侧工具栏中找到污点修复画笔工具(J), 配合着污点修复画笔中的修补工具一起使用,注意:模式要选择正常,属性栏中类型要选择内容识别. 下一步我们需要在图层上添 ...