现在的位置: 首页 > 综合 > 正文

利用Oracle数据库存储和分析Unix操作系统的性能

2013年10月27日 ⁄ 综合 ⁄ 共 2863字 ⁄ 字号 评论关闭

作者简介:

张乐奕,通常使用的网名为kamus,也曾用过seraphim,现在任职于北京某大型软件公司,Oracle数据库DBA,主要负责证券行业的核心交易系统数据库管理及维护工作。

热切关注Oracle技术和相关操作系统技术,出没于各大数据库技术论坛,目前是中国最大的Oracle技术论坛www.itpub.net的数据库管理版版主。

 

我的邮件地址:kamus@itpub.net

我的MSN: kamusis@hotmail.com

 

期望与各位朋友讨论Oracle相关技术。

本人所有文章,不经许可,不得转载。

 

 

 

 

目录

一、       前言... 4

二、       思路... 4

三、       vmstat脚本及步骤... 4

1.       安装statspack. 4

2.       创建stats$vmstat... 4

3.       创建vmstat目录... 6

4.       创建get_vmstat.ksh脚本... 6

5.       创建run_vmstat.ksh脚本... 8

6.       创建crontab作业,定时执行run_vmstat.ksh脚本... 9

7.       分析数据... 9

1)    异常报告... 9

2)    每小时趋势报告... 13

3)    周趋势报告... 14

4)    长期趋势报告... 14

四、       使用Excel生成趋势图... 15

五、       参考资料... 15

 


 

一、      前言

作为UNIX系统中的Oracle数据库管理员,时刻监控操作系统的性能无疑是非常重要的,幸运的是UNIX系统提供了大量的监控命令,比如vmstat, iostat, sar, top等等,这些监控命令均以字符界面输出结果,再加上UNIX系统中shell的强大分析功能,这样我们只需要编写一些脚本就可以实现自动的后台监控,当有问题的时候再自动发送邮件给DBA

其实相类似的一些监控脚本可能已经随处可见了,但是本文提到的一个新的思路,就是利用Oracle数据库的statspack空间来存储监控的结果,再利用数据库天生的检索优势,这样比以往靠shell分析甚或是人工分析生成的监控结果文件要更加轻松,智能,同时也能实现更持久和更广泛的监控。

本文大部分素材来源自Donald K. BurlesonOracle9i UNIX Administration Handbook,但是对于脚本中的一些错误和不合理的地方作了修改,并且添加了一些功能,本文的测试环境全部基于Sun Solaris 8 Sparc 64bit + Oracle9.2.0.5

本文第一版主要以监控内存消耗和CPU等待的vmstat命令为例,将陆续添加iostat等其它命令的监控脚本。

 

二、      思路

首先安装statspack,然后手工创建一个用于存储vmstat命令输出结果的表,再作一个shell定时执行vmstat,将结果全部插入数据库表中,最后就是通过SQL定时分析表中的数据,超过预先指定的门限值就告警。同时根据表中的数据,我们还能作出系统性能的趋势报告。

 

三、      vmstat脚本及步骤

1.    安装statspack

sqlplus “/ as sysdba”

SQL> @?/rdbms/admin/spcreate.sql

按照提示设定perfstat用户的密码之后,由于是10g,我选择了SYSAUX表空间作为perfstat用户的默认表空间,而没有另行创建表空间。

2.    创建stats$vmstat

SQL> connect perfstat/perfstat

SQL> @create_vmstat_tab.sql

 

# create_vmstat_tab.sql

drop table stats$vmstat;
create table stats$vmstat
(
     start_date          date,
     duration            number,
     server_name         varchar2(
20),
     running_queue        number,

waiting_queue        number,

swap_in             number,

swap_out             number,
     kbytes_page_in      number,
     Kbytes_page_out     number,

page_scan           number,
     user_cpu            number,
     system_cpu          number,
     idle_cpu            number,
     wait_cpu            number
)
tablespace sysaux
storage (initial
10m
         next     1m
         pctincrease 0)
;

comment on column stats$vmstat.start_date
  is
'监控时间';
comment on column stats$vmstat.duration
  is
'监控时长';

comment on column stats$vmstat.server_name
  is
'服务器名称';
comment on column stats$vmstat.running_queue
  is
'执行队列';

comment on column stats$vmstat.waiting_queue
  is
'等待队列';

comment on column stats$vmstat.swap_in
  is
'每秒平均交换进LWPs';

comment on column stats$vmstat.swap_out
  is
'交换出进程数';

comment on column stats$vmstat.kbytes_page_in
  is
'换页进字节(K)';
comment on column stats$vmstat.kbytes_page_out
  is
'换页出字节(K)';

comment on column stats$vmstat.page_scan
  is
'换页守护进程扫描页数';

comment on column stats$vmstat.user_cpu
  is
'用户操作占用的CPU';
comment on column stats$vmstat.system_cpu
  is
'系统操作占用的CPU';

comment on column stats$vmstat.idle_cpu
  is
'CPU空闲率';
comment on column stats$vmstat.wait_cpu
  is
'CPU等待率(AIX独有)';

 

3.    创建vmstat目录

oracle用户主目录下创建用于存放所有相关脚本的vmstat目录。

$ cd

$ mkdir vmstat

 

4.    创建get_vmstat.ksh脚本

抱歉!评论已关闭.