【系统环境】:

系统环境: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使用率的监控部署及思考的更多相关文章

  1. zabbix监控-部署(一)

    zabbix之自动化监控-部署篇(一) 标签(空格分隔): linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 浅谈监控 监控命令 查看硬件的温度/风扇转 ...

  2. zabbix分布式监控部署--技术流ken

    前言 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  3. zabbix proxy分布式监控部署

    一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...

  4. nagios监控部署

    nagios监控部署. 在部署之前把依赖包安装了. [root@tiandong63 ~]# yum install -y gcc glibc glibc-common php gd gd-devel ...

  5. 017-zabbix_proxy分布式监控部署

    一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...

  6. Cacti+nagios 整合监控部署文档

    目录 Cacti+nagios监控部署步骤... 2 一.Cacti安装... 2 1需要安装的依赖软件包:... 2 2安装rrdtool 2 3启动数据库和httpd服务... 3 4将serve ...

  7. OneAPM 云监控部署与试用体验

    作为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的.一来觉得收费,二来担心数据被人所知,三来觉得 Zabbix 牛逼到无可取代.但是,随着 APM 市场的火爆,我决定「放下身段」 ...

  8. Nagios监控部署(转)

    转自 http://kyhack.blog.51cto.com/490370/213355 ky.blog 一.nagios简介        nagios是一款用于系统和网络监控的应用程序,它可以在 ...

  9. linux服务器性能(网卡流量、CPU、内存、磁盘使用率)监控

    广义的网站的监控涵盖所有的非业务行为的数据采集与管理,包括数据分析师和产品设计师使用的网站用户行为日志.业务运行数据,以及供运维工程师和开发工程师使用的性能统计数据等. 本文主要是通过shell脚本来 ...

随机推荐

  1. LeetCode算法题-Average of Levels in Binary Tree(Java实现)

    这是悦乐书的第277次更新,第293篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第145题(顺位题号是637).给定一个非空二叉树,以数组的形式返回每一层节点值之和的平 ...

  2. .net 添加api不能访问的问题

    在一个.netmvc项目中,本身没有提供api后来想添加api就会出现问题.会发生添加的apicontrol不能访问的情况.这种情况一般是因为,global文件中,application_start( ...

  3. canvas save()和canvas restore()状态的保存和恢复使用方法及实例

    canvas.save()用来保存先前状态的 canvas.restore()用来恢复之前保存的状态 注:两种方法必须搭配使用,否则没有效果 <!DOCTYPE html> <htm ...

  4. 21 python 初学(json pickle shelve)

    json: # _author: lily # _date: 2019/1/19 import json my_dict = {'name': 'lily', 'age': 18} f = open( ...

  5. 聊聊基准测试的MVP方案

    上篇博客介绍了基准测试的一些思路和方法策略,这篇博客,聊聊基准测试的MVP(最小可行性方案)... 思维导图 一.测试策略 策略名称 阈值 运行时间 性能指标 基线 注释 并发测试 CPU75%+Er ...

  6. Linux内存都去哪了:(1)分析memblock在启动过程中对内存的影响

    关键词:memblock.totalram_pages.meminfo.MemTotal.CMA等. 最近在做低成本方案,需要研究一整块RAM都用在哪里了? 最直观的的就是通过/proc/meminf ...

  7. Jmeter的JDBC Request,sql参数化及返回值取值

    1.JDBC Request面板 Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字 ...

  8. typeScript函数篇

    typeScript的函数是在es6的函数特性的基础上加了一些后端的概念:泛型.参数类型声明.返回值类型声明.重载.装饰器等.其他的一些特性:箭头函数.生成器.async-await.promise等 ...

  9. 基于 HTML5 结合互联网+ 的 3D 隧道

    前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈.比如依靠民间借贷,融资成本很高:采购价格不透明,没有增值税发票:还有项目管控和供应链管理的问题.成本在不断上升,利润在不断下降,隧道产业的“互联网 ...

  10. windows下安装和使用scrapy

    首先,要确保已经正确安装了python环境,并安装了pip包 接着,打开cmd或者powershell ,输入命令 pip install scrapy .安装完之后 运行scrapy性能测试命令: ...