zoukankan      html  css  js  c++  java
  • ADG监控

    cx_Oracle环境配置

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib/
    export TNS_ADMIN=$ORACLE_HOME/network/admin/

    脚本正本

    #!/usr/bin/python
    # coding:utf-8
    
    __author__ = 'Jipu FANG'
    
    import cx_Oracle
    import sys
    
    # 主库状态
    def pdb():
        conn = cx_Oracle.connect('user/passwd@rac01/orcl')  
        cursor = conn.cursor ()
        cursor.execute ("select switchover_status from v$database")
        row = cursor.fetchone ()
        status = row[0]
        if status == 'TO STANDBY' or status == 'SESSIONS ACTIVE':
            cursor.close ()
    	conn.close ()
            return "0"
        else:
    	return "200"
    
    # 备库状态
    def sdb():
        conn = cx_Oracle.connect('user/passwd@rdata01/phydb')  
        cursor = conn.cursor ()
        cursor.execute ("select switchover_status from v$database")
        row = cursor.fetchone ()
        status = row[0]
        if status == 'NOT ALLOWED':
            cursor.close ()
        	conn.close ()
            return "0"
        else:
    	return "200"
    
    # DG延迟,基于SCN
    class dg_delay():
        def rac1_scn(self):
        	conn = cx_Oracle.connect('user/passwd@rac01/orcl')
        	cursor = conn.cursor ()
        	cursor.execute ("select current_scn from v$database")
        	row = cursor.fetchone ()
    	if row:
                scn = row[0]
    	else:
    	    scn = 0
        	cursor.close()
        	conn.close ()
    	return scn 
     
        def sdb_scn(self):
            conn = cx_Oracle.connect('user/passwd@rdata01/phydb')
            cursor = conn.cursor ()
            cursor.execute ("select current_scn from v$database")
            row = cursor.fetchone ()
    	if row:
                scn = row[0]
    	else:
    	    scn = 0
            cursor.close()
            conn.close ()
            return scn
    
        def run(self):
    	scn = int(self.rac1_scn()) - int(self.sdb_scn())
    	return scn
    		
    item = sys.argv[1]
    
    if __name__ == '__main__':
    	if item == 'pdb':
    	    print pdb()
     	elif item == 'sdb':
    	    print sdb()
    	elif item == 'dg':
    	    a = dg_delay()
    	    print a.run()
    
    

    脚本执行

    # ./check_dg_delay_status.py dg
    5
    
  • 相关阅读:
    socket 第一课
    _getitem__ __setitem__ __delitem__ __len__
    单继承&多继承 注意点
    面对对象 类&对象
    异常检测
    模块导入
    序列化模块注意点 json&pickle
    re模块
    filter和map
    Maven入门
  • 原文地址:https://www.cnblogs.com/GXLo/p/7562337.html
Copyright © 2011-2022 走看看