开发环境
操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms
对于Oracle数据库的运维,我们首先需要知道系统的整体运行状况,例如物理读,逻辑读,解析,命中率等
这节就讲如何将这些数据获取
我们通过查询v$sysstat 等视图来获取信息
关于redis存储,我们选择的value的数据类型为列表
我们无需事先建立redis的key值
如何创建自定义命令请参考
http://www.zhaibibei.cn/oms/3.1/
2.1 主体程序
这里我们用oracle_hit_sysstat_redis.py程序来获取Oracle TOP SQL
vim monitor/management/commands/oracle_hit_sysstat_redis.py
2.2 调用的函数
上面主体程序调用了一些函数用于从Oracle数据库获取必要的数据
文件路径为monitor/command/getoracle_hit_sysstat.py
这里选取几个,具体的参见我的github主页,可根据实际情况进行调整
def getlibhit(cursor):
fp=open(os.environ['HOME_DIR']+'/mysite/monitor/command/sql/getlibhit.sql','r')
fp1=fp.read()
s=cursor.execute(fp1)
fp.close()
row=s.fetchone()
return row
def getdichit(cursor):
fp=open(os.environ['HOME_DIR']+'/mysite/monitor/command/sql/getdichit.sql','r')
fp1=fp.read()
s=cursor.execute(fp1)
fp.close()
row=s.fetchone()
return row
def getcachehit(cursor):
fp=open(os.environ['HOME_DIR']+'/mysite/monitor/command/sql/getcachehit.sql','r')
fp1=fp.read()
s=cursor.execute(fp1)
fp.close()
row=s.fetchone()
return row
def getloadprofile(cursor):
s=cursor.execute('select name, abs(value) from v$sysstat where name in (\'parse count (hard)\',\'parse count (total)\',\'physical reads\',\'session logical reads\',\'user commits\',\'user rollbacks\',\'user calls\',\'sorts (disk)\',\'logons cumulative\',\'redo size\',\'execute count\',\'table fetch by rowid\',\'table fetch continued row\',\'table scan rows gotten\',\'CPU used by this session\') order by name')
row=s.fetchall()
return row
这个程序讲解如下:
使用如下命令运行
/usr/bin/python /home/oms/mysite/manage.py oracle_hit_sysstat_redis
可以看出数据库的信息已经保存在redis数据库中了
这里我们设置每小时执行一次,并重定向所有日志至一个文件
这样我们可以通过检查该日志文件判断脚本是否正常运行
0 * * * * /usr/bin/python /home/oms/mysite/manage.py oracle_hit_sysstat_redis>>/home/oms/mysite/crontab.log 2>&1
欢迎访问我的github主页查看源码
https://github.com/bsbforever/oms_django
下节介绍如何将这些数据展示在一个页面上