`
ijavagos
  • 浏览: 1267152 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Python 监控 Data Guard 脚本

 
阅读更多

之前弄过监控Data Guard 状态的SQL脚本。 这个Python 监控也就是在Python里调用那个SQL 并将返回结果发送到相关的邮箱。

. SQL 语句

保存为checkdgstatus.sql

conn sys/pwd@orcl_pd as sysdba

column dest_name format a30

column destination format a20

column MEMBER format a45

column destination format a20

column TABLESPACE_NAME format a10

column FREE_RATE format a10

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

set wrap off;

prompt **************************** ************************************;

select instance_name,version,status,database_status from v$instance;

prompt **************************** 数据库状态 *************************************;

select name,log_mode,open_mode from v$database;

prompt **************************** 控制文件状态 ***********************************;

column name format a50

select status,name from v$controlfile;

prompt **************************** 日志文件状态 ***********************************;

select GROUP#,status,type,member from v$logfile;

prompt***************************** 归档目的地状态 *********************************;

select dest_name ,status,database_mode,destination from v$archive_dest_status where dest_id in ('1','2');

set heading off;

prompt ************数据库已连续运行天数*******************************************

select round(a.atime-b.startup_time)||' days ' from(select sysdate atime from dual) a,v$instance b;

set heading on;

prompt***************************** *************************************;

select sessions_current,sessions_highwater from v$license;

prompt**************************** active sessions count **************************;

select count(*) "Active session count" from v$session where status='ACTIVE';

prompt**************************** total sessions count **************************;

select count(*) "Total session count" from v$session;

prompt**************************** top 30 big objects name ************************;

column OWNER format a10

column SEGMENT_NAME format a35

column SEGMENT_TYPE format a15

column SIZES format a10

SELECT * FROM

(

select OWNER, SEGMENT_NAME, SEGMENT_TYPE, round(BYTES / 1024 / 1024 / 1024,3)||'G' AS SIZES

from dba_segments

ORDER BY BYTES DESC)

WHERE ROWNUM<=30

;

prompt***************************** WANGGOUuser data size ****************************;

select sum(bytes)/1024/1024/1024||'G' "User Data Size" from dba_segments where owner='WANGOU';

prompt***************************** SUP data size ************************************;

select sum(bytes)/1024/1024/1024||'G' "User Data Size" from dba_segments where owner='SUP';

prompt***************************** DB size ******************************************;

select sum(bytes)/1024/1024/1024||'G' "DB Size" from dba_segments;

prompt***************************** total tablespace size ****************************;

select sum(bytes)/1024/1024/1024||'G' "Total Tablespace Size" from dba_data_files;

prompt***************************** last day archive log count ***********************;

select sequence#, completion_time from v$archived_log where completion_time>= trunc(sysdate-1) and completion_time<= trunc(sysdate) and dest_id=1;

prompt********************** 表空间监控********************;

SELECT D.TABLESPACE_NAME,

SPACE "SUM_SPACE(M)",

BLOCKS "SUM_BLOCKS(K)",

SPACE - NVL (FREE_SPACE, 0) "USED_SPACE(M)",

ROUND( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",

FREE_SPACE "FREE_SPACE(M)"

FROM ( SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,

SUM (BLOCKS) BLOCKS

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME) D,

( SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE

FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME) F

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

UNION ALL --如果有临时表空间

SELECT D.TABLESPACE_NAME,

SPACE "SUM_SPACE(M)",

BLOCKS SUM_BLOCKS,

USED_SPACE "USED_SPACE(M)",

ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",

NVL (FREE_SPACE, 0) "FREE_SPACE(M)"

FROM ( SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,

SUM (BLOCKS) BLOCKS

FROM DBA_TEMP_FILES

GROUP BY TABLESPACE_NAME) D,

( SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,

ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE

FROM V$TEMP_SPACE_HEADER

GROUP BY TABLESPACE_NAME) F

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

ORDER BY 1;

prompt **************************** 表空间OFFLINE(显示为空正常) ********************;

select tablespace_name ,status from dba_tablespaces where status='OFFLINE';

prompt **************************** SEQUENCE同步数 *********************************;

select max(sequence#)from v$log_history;

CONN sys/pwd@orcl_st as sysdba;

prompt **************************** 备库SEQUENCE同步数 *****************************;

select max(sequence#)from v$log_history;

prompt **************************** 备库日志未应用(显示为空正常) *******************;

select sequence#,applied from v$archived_log where applied='NO';

prompt **************************** 备库日志应用(显示最近十个日志) *****************;

select * from(select sequence#,applied from v$archived_log order by sequence# desc) where rownum<=10;

set time on

disconnect

exit

. Python 脚本

checkdataguard.py

#!/usr/bin/python

#coding=gbk

import os

import pickle

import sys

import smtplib

def get_dg_data():

pipe = os.popen('/u01/app/oracle/product/10.2.0/db_1/bin/sqlplus /nolog @checkdbstatus.sql')

data = pipe.read().strip()

# print data

return data

def save(obj,fname='dgstatus.txt'):

# save to file

fp=open(fname, 'w')

fp.write(obj)

fp.close()

FROM_USER='tianlesoftware@vip.qq.com'

SMTP_SERVER='192.168.1.100'

EMAIL_USER='tianlesoftware'

EMAIL_PASSWD='pwd'

TO_USERS=['tianlesoftware@vip.qq.com',' tianlesoftware@vip.qq.com']

def mysendmail(fromaddr,toaddrs,subject,body):

server=smtplib.SMTP(SMTP_SERVER)

server.login(EMAIL_USER,EMAIL_PASSWD)

# sendmail touser 支持元组,我这里用了个for循环做了个判断。 不判断也行。

for toaddr in toaddrs:

print toaddr

msg = 'From: %s/nTo: %s/nSubject: %s/n/n%s/n' % (fromaddr, toaddr, subject, body)

server.sendmail(fromaddr,toaddr,msg)

server.quit()

body=get_dg_data()

save(body)

subject='192.168.88.199/100 Data Guard Status'

mysendmail(FROM_USER,TO_USERS,subject,body)

. Python 添加到crontab

[oracle@qs-wg-db1 scripts]$ crontab -l

00 9,11,17 * * * export ORACLE_HOME='/u01/app/oracle/product/10.2.0/db_1' && cd /u02/scripts && /u01/scripts/checkdg.py >/u02/scripts/checkdg.log 2>&1 &

在这个地方浪费了不少时间,Python 脚本写很快, 到时这个crontab 因为直接运行Python 脚本没有问题。 添加到crontab里后就会报错:

[oracle@qs-wg-db1 scripts]$ cat checkdg.log

Error 6 initializing SQL*Plus

Message file sp1<lang>.msb not found

SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

后来没办法,把环境变量也加到crontab 里了。总算搞定了。环境变量是小,带来的问题却不小。

Linux Crontab 定时任务 命令详解

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315039.aspx

------------------------------------------------------------------------------

Blog http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(); DBA2 群:62697977()

DBA3 群:62697850 DBA 超级群:63306533;

聊天 群:40132017

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

    Python监控DB服务器信息脚本

    在编写 Python 监控脚本之前,需要了解一些 Python 基础知识,例如 Python 的语法、变量、数据类型、控制结构、函数等。同时,Python 也提供了一些有用的模块,例如 dns.resolver,用于监控 DB 服务器的信息。 3. ...

    Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App

    Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本基础全套Python+App代码脚本...

    python监控windows电脑性能脚本

    每5秒监控windows磁盘io,网络io,内存,cpu

    Mastering python for data science

    Mastering python for data science Mastering python for data science

    python游戏项目脚本大全.zip

    python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目...

    如何在python中写hive脚本

    在Python中编写Hive脚本主要是为了方便地与Hadoop HIVE数据仓库进行交互,这样可以在数据分析和机器学习流程中无缝地集成大数据处理步骤。以下将详细介绍如何在Python环境中执行Hive查询和管理Hive脚本。 1. **直接...

    用Python脚本实现对Linux服务器的监控

    目前Linux下有一些使用Python语言编写的Linux系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的...

    python性能监控脚本

    APP测试过程中需要对监控脚本运行过程APP相关数据 ,通过python编写此监控装饰器,不需要修改相关数据的情况下,实现灵活监控;监控数据包括CPU,Memory,Net,功耗。

    《Python For Data Analysis》数据集

    Wes McKinney所著的《Python For Data Analysis》书籍原数据集,用于系列文章“Python数据分析之Pandas入门(中)”和“Python数据分析之Pandas入门(下)”的学习。

    python3.6.5-python脚本实现软硬件监控服务.zip

    最后,"包含linux安装和执行命令"表明这个压缩包可能包含了在Linux环境下安装Python 3.6.5和执行监控脚本的指南或脚本。在Linux中,你可以使用`apt-get`(Ubuntu/Debian)或`yum`(CentOS/RHEL)来安装依赖项,如...

    Python3编写实用脚本程序-从零学Python-掘金活动.zip

    Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-...

    基于python的王者荣耀脚本

    《基于Python的王者荣耀脚本详解》 在当今的数字化时代,游戏编程已经成为了一项热门技能,而Python作为一款易学且功能强大的编程语言,被广泛应用于各种领域,包括游戏自动化。本文将深入探讨如何利用Python编写...

    【Python】雷电模拟器脚本说明[附代码]

    "Python雷电模拟器脚本说明" 以下是基于给定的文件信息生成的知识点: 一、雷电模拟器的文件共享机制 雷电模拟器有一个共享文件夹,PC上的文件夹和Android上的SDcard路径是相通的一共有三个文件夹:图片、杂项、...

    python交换机自动备份脚本

    Python交换机自动备份脚本是一种高效管理网络设备的方法,它能帮助网络管理员便捷地备份多个交换机的配置,包括华为、思科、华三和Aruba等不同品牌的设备。这样的脚本大大提高了工作效率,减少了手动操作的繁琐和...

    python3.6.5-python脚本实现软硬件监控服务.rar

    在本项目中,我们利用Python3.6.5来实现一个软硬件监控服务,这涉及到对系统资源的实时监测,如CPU使用率、内存占用、磁盘空间以及网络状态等。 `psutils` 是Python的一个库,专门用于获取有关进程和系统利用率...

    Python-何用Python代替Bash脚本指南

    然而,随着Python的普及和功能增强,越来越多的开发者开始考虑使用Python来替代Bash脚本。Python提供了更强大的数据处理能力、更好的可读性和维护性,以及丰富的第三方库支持。下面,我们将深入探讨为何以及如何用...

    Python3编写实用脚本程序-恶搞钓鱼网站.zip

    Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序...

    Python库 | python_datamatrix-0.9.5-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:python_datamatrix-0.9.5-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python for Data Analysis Data Wrangling with Pandas, IPython(2nd) 无水印原版pdf

    Python for Data Analysis Data Wrangling with Pandas, NumPy, and IPython(2nd) 英文无水印原版pdf 第2版 pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自...

    Python 控制 PDU 实现 AC 测试脚本(源码)

    Python 控制 PDU 实现 AC 测试脚本(源码)! Python 控制 PDU 实现 AC 测试脚本(源码)! Python 控制 PDU 实现 AC 测试脚本(源码)! Python 控制 PDU 实现 AC 测试脚本(源码)! Python 控制 PDU 实现 AC ...

Global site tag (gtag.js) - Google Analytics