暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle ADG(二) Python 监控源码:

原创 有问题吗? 2022-07-12
1054

代码的参数CURSOR是通过CX_ORACLE 包进行创建的:

def call_read_oracle_dataSync(cursor):
    '''
    检查ADG备库applying_log的延迟性,延迟5分钟异常
    '''
    cursor.execute(
        """select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag')""")
    cursor_session_data = cursor.fetchall()
    if(int(cursor_session_data[1][1].split(':')[1]) >=5 or int(cursor_session_data[1][1].split(':')[0].split(' ')[1])>0):
        return True, 'ADG备库与生产库之间的同步大于5min,异常', cursor_session_data
    return False,'ADG备库与生产库之间的同步小于5min,正常', cursor_session_data


def call_read_oracle_mrp_status(cursor):
    '''
    检查ADG备库MRP0 进程状态
    '''
    cursor.execute(
        """select process,status from v$managed_standby where process='MRP0'""")
    cursor_session_data = cursor.fetchall()
    if(cursor_session_data[0][1]!='APPLYING_LOG'):
        return True,'ADG备库MRP0进程状态不正常:{}'.format(cursor_session_data[0][1])
    else:
        return  False,'ADG备库MRP0进程状态正常:{}'.format(cursor_session_data[0][1])


def call_read_oracle_archiveLog_ifFull(cursor):
    '''
    检查数据库归档空间使用率是否>=90%
    '''
    cursor.execute(
        """select space_limit/1024/1024,space_used/space_limit from v$recovery_file_dest""")
    cursor_session_data = cursor.fetchall()
    if(cursor_session_data[0][1]*100>90):
        return True, 'ADG备库归档空间告警(db_recovery_file_dest_size(MB):{db_recovery_file_dest_size}),已使用:{used_percent}%' \
            .format(db_recovery_file_dest_size=cursor_session_data[0][0], used_percent=round(cursor_session_data[0][1]*100,2))
    else:
        return False,'ADG备库归档空间正常(db_recovery_file_dest_size(MB):{db_recovery_file_dest_size}),已使用:{used_percent}%' \
            .format(db_recovery_file_dest_size=cursor_session_data[0][0], used_percent=round(cursor_session_data[0][1]*100,2))

def call_product_oracle_archiveLog_dest_N_errors(cursor):
    '''
    检查主库ADG配置日志传输是否有报错
    '''
    cursor.execute(
        """select dest_name,error from v$archive_dest where dest_name='LOG_ARCHIVE_DEST_28'""")
    cursor_session_data = cursor.fetchall()
    if(cursor_session_data[0][1] !='NONE'):
        return False,'LOG_ARCHIVE_DEST_28 传输没有报错'
    else:
        return True, 'LOG_ARCHIVE_DEST_28 传输报错: ' + cursor_session_data[0][1]
复制
最后修改时间:2022-07-12 21:44:25
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论