Exemplo n.º 1
0
def ApiOracleSnapList(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    start_time = request.query_params.get('start_time', None)
    end_time = request.query_params.get('end_time', None)

    if not (start_time and end_time):
        # default data of 1 day
        end_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        start_time = (
            datetime.datetime.now() +
            datetime.timedelta(days=-1)).strftime('%Y-%m-%d %H:%M:%S')

    sql = """
               SELECT dbid,
                  to_char(s.startup_time, 'yyyy-mm-dd hh24:mi:ss') snap_startup_time,
                  to_char(s.begin_interval_time,
                          'yyyy-mm-dd hh24:mi:ss') begin_interval_time,
                  to_char(s.end_interval_time, 'yyyy-mm-dd hh24:mi:ss') end_interval_time,
                  s.snap_id, s.instance_number,
                  (cast(s.end_interval_time as date) - cast(s.begin_interval_time as date))*86400 as span_in_second
               from dba_hist_snapshot  s, v$instance b
               where s.end_interval_time >= to_date('{}','yyyy-mm-dd hh24:mi:ss') and s.end_interval_time <= to_date('{}','yyyy-mm-dd hh24:mi:ss')
               and s.INSTANCE_NUMBER = b.INSTANCE_NUMBER order by snap_id
           """.format(start_time, end_time)

    snap_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleSnapListSerializer(snap_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 2
0
def ApiOracleRedoLogSwitch(request):
    tags = request.GET.get('tags')
    redo_range = request.GET.get('redo_range')
    oracle_params = get_oracle_params(tags)
    if int(redo_range) == 1:
        sql = '''
        select  'hh'||to_char(first_time, 'hh24') stat_date,
                count(1) log_count,
                (select bytes / 1024 / 1024 sizem from v$log where rownum < 2) log_size
           from v$log_history
          where to_char(first_time, 'yyyymmdd') < to_char(sysdate, 'yyyymmdd')
            and to_char(first_time, 'yyyymmdd') >=
                to_char(sysdate - 1, 'yyyymmdd')
          group by to_char(first_time, 'hh24'),to_char(first_time, 'dy')
          order by to_char(first_time, 'hh24')'''
    else:
        sql = '''
        select to_char(first_time, 'yyyy-mm-dd') stat_date,
               count(1) log_count,
              (select bytes / 1024 / 1024 sizem from v$log where rownum < 2) log_size
          from v$log_history
        where to_char(first_time, 'yyyymmdd') < to_char(sysdate, 'yyyymmdd')
          and to_char(first_time, 'yyyymmdd') >= to_char(sysdate - {}, 'yyyymmdd')
        group by to_char(first_time, 'yyyy-mm-dd'), to_char(first_time, 'dy')
        order by to_char(first_time, 'yyyy-mm-dd')
        '''.format(redo_range)
    redoswitch_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleRedoSwitchSerializer(redoswitch_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 3
0
def ApiOracleBlockingSession(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''
    select to_char(a.logon_time, 'yyyy-mm-dd hh24:mi') logon_time,
       a.sid,
       a.sql_id,
       a.event,
       a.blocking_session,
       a.username,
       a.osuser,
       a.machine,
       a.program,
       a.module,
       b.sql_text,
       c.owner,
       c.object_name,
       c.object_type
  from v$session a, v$sql b, dba_objects c, v$process p
 where a.state in ('WAITING')
   and a.wait_class != 'Idle'
   and p.addr = a.paddr
   and a.sql_id = b.sql_id(+)
   and a.sql_child_number = b.CHILD_NUMBER(+)
   and a.row_wait_obj# = c.object_id(+)
    '''
    blocking_session_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleBlockingSession(blocking_session_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 4
0
def create_oracle_report(tags, oracle_params, report_type, begin_snap,
                         end_snap):
    print('task begin!')
    # db_conn = OracleBase(oracle_params).connection()
    db_conn_cdb = OracleBase(oracle_params).connection_cdb()
    oracle_report = OracleReport(db_conn_cdb, tags, oracle_params)
    oracle_report.get_report(report_type, begin_snap, end_snap)
Exemplo n.º 5
0
def ApiOracleUserGrant(request):
    tags = request.GET.get('tags')
    user = request.GET.get('user')
    oracle_params = get_oracle_params(tags)
    sql = "select grantee,privilege,admin_option from dba_sys_privs where grantee = '{}' ".format(user)
    grant_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleUserGrantSerializer(grant_list,many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 6
0
def ApiOracleUserRole(request):
    tags = request.GET.get('tags')
    user = request.GET.get('user')
    oracle_params = get_oracle_params(tags)
    sql = "select grantee,granted_role, admin_option,default_role from dba_role_privs where grantee = '{}' ".format(user)
    role_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleUserRoleSerializer(role_list,many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 7
0
def ApiOracleUndoTableSpaceUsed(request):
    tags = request.GET.get('tags')
    undotablespace_name = request.GET.get('undotablespace_name')
    oracle_params = get_oracle_params(tags)
    sql = "select tablespace_name, status, sum(bytes) / 1024 / 1024 MB from dba_undo_extents " \
          "where tablespace_name = '{}' group by tablespace_name, status".format(undotablespace_name)
    undoused_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleUndoTableSpaceUsedSerializer(undoused_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 8
0
def ApiOracleTopSql(request):
    tags = request.GET.get('tags')
    type = request.GET.get('type')
    oracle_params = get_oracle_params(tags)
    dic_proc = {
        'cpu': 'pro_top_cpu_sql',
        'phys': 'pro_top_phys_sql',
        'logic': 'pro_top_logic_sql'
    }
    proc_name = dic_proc.get(type)
    db_conn = OracleBase(oracle_params).connection()
    OracleBase(oracle_params).call_proc(proc_name, db_conn)
    sql = "select COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10,COL11,COL12 from snap_show_config " \
          "union all " \
          "select RATE,SQL_ID,SQL_EXEC_CNT,VAL1,VAL2,VAL3,VAL4,VAL5,VAL6,VAL7,VAL8,VAL9 from snap_show"
    res = OracleBase(oracle_params).django_query(sql, db_conn)
    serializer = OracleTopSql(res, many=True)
    snap_json = JSONRenderer().render(serializer.data)
    return HttpResponse(snap_json)
Exemplo n.º 9
0
def ApiOracleTableSpaceLargeObject(request):
    tags = request.GET.get('tags')
    tablespace_name = request.GET.get('tablespace_name')
    oracle_params = get_oracle_params(tags)
    sql = "select owner, segment_name, round(sum(bytes) / 1024 / 1024 ,2) gbytes from " \
          "dba_segments where tablespace_name = '{}'  " \
          "group by owner, segment_name having sum(bytes) / 1024 / 1024 > 10".format(tablespace_name)
    largeobject_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleTableSpaceLargeObjectSerializer(largeobject_list,many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 10
0
def ApiOracleTempTableSpaceSessionUsed(request):
    tags = request.GET.get('tags')
    temptablespace_name = request.GET.get('temptablespace_name')
    oracle_params = get_oracle_params(tags)
    sql = "SELECT S.sid ,S.username, S.osuser, P.spid, S.module,S.program,SUM(T.blocks) * TBS.block_size / 1024/1024  mb_used," \
          "T.tablespace,COUNT(*) sort_ops FROM v$sort_usage T, v$session S, dba_tablespaces TBS, v$process P " \
          "WHERE T.session_addr = S.saddr AND S.paddr = P.addr AND T.tablespace = TBS.tablespace_name AND T.tablespace='{}' " \
          "GROUP BY S.sid,S.serial#,S.username,S.osuser,P.spid,S.module,S.program,TBS.block_size,T.tablespace".format(temptablespace_name)
    sessionused_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleTempTableSpaceSessionUsedSerializer(sessionused_list,many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 11
0
def ApiOracleProfile(request):
    tags = request.GET.get('tags')
    profile = request.GET.get('profile')
    oracle_params = get_oracle_params(tags)
    sql = """
                select profile,resource_name,resource_type,limit
                  from dba_profiles where  profile = '{}'
                """.format(profile)
    profile_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleProfileSerializer(profile_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 12
0
def ApiOracleUser(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''select username,profile,to_char(created,'yyyy-mm-dd hh24:mi:ss') created,
                   account_status,
                   to_char(lock_date,'yyyy-mm-dd hh24:mi:ss') lock_date,
                   to_char(expiry_date,'yyyy-mm-dd hh24:mi:ss') expiry_date,
                   default_tablespace,temporary_tablespace
            from dba_users order by created desc '''
    user_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleUserSerializer(user_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 13
0
def ApiOracleTableSpaceDayUsed(request):
    tags = request.GET.get('tags')
    tablespace_name = request.GET.get('tablespace_name')
    oracle_params = get_oracle_params(tags)
    sql = "select to_char(trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'), 'dd'),'yyyy-mm-dd') m_date,b.name," \
          "round(sum(tablespace_usedsize) / 1024 / 1024) used_mb " \
          "from dba_hist_tbspc_space_usage a, v$tablespace b " \
          "where a.tablespace_id = b.ts# and b.name = '{}' " \
          "and to_date(rtime, 'mm/dd/yyyy hh24:mi:ss')>sysdate-6 " \
          "group by to_char(trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'), 'dd'),'yyyy-mm-dd'),b.name".format(tablespace_name)
    dayused_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleTableSpaceDayUsedSerializer(dayused_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 14
0
def ApiOracleUndoTableSpaceSessionUsed(request):
    tags = request.GET.get('tags')
    undotablespace_name = request.GET.get('undotablespace_name')
    oracle_params = get_oracle_params(tags)
    sql = "SELECT r.name rbs,nvl(s.username, 'None') oracle_user,s.osuser client_user,p.username unix_user,s.program,s.sid," \
          "s.serial#,p.spid unix_pid,t.used_ublk * TO_NUMBER(x.value) / 1024 / 1024 as undo_mb," \
          "TO_CHAR(s.logon_time, 'mm/dd/yy hh24:mi:ss') as login_time,TO_CHAR(sysdate - (s.last_call_et) / 86400, 'mm/dd/yy hh24:mi:ss') as last_txn," \
          "t.START_TIME transaction_starttime " \
          "FROM v$process p,v$rollname r,v$session s,v$transaction t,v$parameter x" \
          " WHERE s.taddr = t.addr AND s.paddr = p.addr AND r.usn = t.xidusn(+) AND x.name = 'db_block_size' ".format(undotablespace_name)
    sessionused_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleUndoTableSpaceSessionUsedSerializer(sessionused_list,many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 15
0
def ApiOracleSequenceUsed(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''select sequence_owner,sequence_name,min_value,max_value,increment_by,cycle_flag,order_flag,
       cache_size,last_number,
       round((max_value - last_number) / (max_value - min_value), 2) * 100 pct_used
  from dba_sequences s
 where s.sequence_owner not in ('SYS','SYSTEM','OUTLN','DIP','ORACLE_OCM','DBSNMP','APPQOSSYS','WMSYS','EXFSYS',
'CTXSYS','ANONYMOUS','XDB','XS$NULL','ORDDATA','SI_INFORMTN_SCHEMA','ORDPLUGINS','ORDSYS','MDSYS','OLAPSYS',
'MDDATA','SPATIAL_WFS_ADMIN_USR','SPATIAL_CSW_ADMIN_USR','SYSMAN','MGMT_VIEW','APEX_030200','FLOWS_FILES',
'APEX_PUBLIC_USER','OWBSYS','OWBSYS_AUDIT','SCOTT') '''
    sequence_used_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleSequenceUsedSerializer(sequence_used_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 16
0
def ApiOracleBlockCount(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''
    select event, count(1) cnt
    from v$session
    where wait_class != 'Idle'
    group by event
    '''
    block_all = OracleBase(oracle_params).django_query(sql)
    row_lock_count = sum([each['CNT'] for each in block_all if each['EVENT']=='enq: TX - row lock contention'])
    all_block_count = sum([each['CNT'] for each in block_all])

    block_count_data = {'ROW_LOCK':row_lock_count,'ALL':all_block_count}
    return HttpResponse(json.dumps(block_count_data))
Exemplo n.º 17
0
def ApiOracleSessionCount(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''
    select a.status,count(*) cnt from v$session a where a.type='USER' group by a.status
    '''
    session_all = OracleBase(oracle_params).django_query(sql)
    active_session_count = 0
    inactive_session_count = 0
    for each in session_all:
        if each['STATUS'] == 'ACTIVE':
            active_session_count = each['CNT']
        if each['STATUS'] == 'INACTIVE':
            inactive_session_count = each['CNT']
    session_count_data = {'ACTIVE':active_session_count,'INACTIVE':inactive_session_count}
    return HttpResponse(json.dumps(session_count_data))
Exemplo n.º 18
0
def ApiOracleTopSegment(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''
    select *
  from (select a.owner,
               a.segment_name,
               a.partition_name,
               a.segment_type,
               a.tablespace_name,
               a.bytes / 1024 / 1024  segment_size,
               row_number() over(order by a.bytes desc) RN
          from dba_segments a)
 where rn <= 50
    '''
    top_segment_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleTopSegmentSerializer(top_segment_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 19
0
def ApiOracleActiveSession(request):
    tags = request.GET.get('tags')
    oracle_params = get_oracle_params(tags)
    sql = '''
    select to_char(a.logon_time, 'yyyy-mm-dd hh24:mi') logon_time,
       a.sql_id,
       a.event,
       a.blocking_session,
       a.username,
       a.osuser,
       a.process,
       a.machine,
       a.program,
       a.module,
       b.sql_text,
       b.LAST_LOAD_TIME,
       to_char(b.last_active_time, 'yyyy-mm-dd hh24:mi:ss') last_active_time,
       c.owner,
       c.object_name,
       a.last_call_et,
       a.sid,
       a.SQL_CHILD_NUMBER,
       c.object_type,
       p.PGA_ALLOC_MEM,
       a.p1,
       a.p2,
       a.p3,
       'kill -9 ' || p.spid killstr,
  'ps -ef|grep '|| p.spid ||'|grep LOCAL=NO|awk ''{print $2}''|xargs kill -9' kill_sh
    from v$session a, v$sql b, dba_objects c, v$process p
   where a.status = 'ACTIVE'
   and p.addr = a.paddr
   and a.sql_id = b.sql_id(+)
  -- and a.wait_class <> 'Idle'
   and a.sql_child_number = b.CHILD_NUMBER(+)
   and a.row_wait_obj# = c.object_id(+)
   and a.type = 'USER' '''
    active_session_list = OracleBase(oracle_params).django_query(sql)
    serializer = OracleActiveSession(active_session_list, many=True)
    json = JSONRenderer().render(serializer.data)
    return HttpResponse(json)
Exemplo n.º 20
0
def check_oracle(tags, oracle_params):
    db_version = oracle_params['db_version']
    host = oracle_params['host']
    port = oracle_params['port']
    service_name = oracle_params['service_name']
    linux_params = {
        'hostname': oracle_params['host'],
        'port': oracle_params['sshport_os'],
        'username': oracle_params['user_os'],
        'password': oracle_params['password_os']
    }
    check_time = now()
    db_conn = OracleBase(oracle_params).connection()
    db_conn_cdb = OracleBase(oracle_params).connection_cdb(
    ) if db_version == 'Oracle12c' else db_conn

    if db_conn and db_conn_cdb:
        # db信息监控
        checklog.logger.info('{}:开始获取Oracle数据库监控信息'.format(tags))
        # 数据库
        dbname, db_unique_name, database_role, open_mode, log_mode, dbid, flashback_on, platform, created = database_info(
            db_conn)
        # 容量
        datafile_size = round(get_datafile_size(db_conn)[0], 2)
        tempfile_size = round(get_tempfile_size(db_conn)[0], 2)
        archivelog_size = round(get_archivelog_size(db_conn)[0], 2)
        # 实例
        inst_id, instance_name, hostname, startup_time, version = instance_info(
            db_conn)
        updays = (datetime.now() - startup_time).days
        # 连接数
        max_process, current_process, process_used_percent = process_info(
            db_conn_cdb)
        # 归档
        archive_used_percent = get_archived(db_conn)
        # 审计
        audit_trail = para(db_conn, 'audit_trail')
        is_rac = para(db_conn, 'cluster_database')
        # 默认Undo表空间
        undo_tablespace = para(db_conn, 'undo_tablespace')
        # Oraclestat
        oraclestat = OracleStat(oracle_params, db_conn)
        oraclestat.get_oracle_stat()
        time.sleep(1)
        oracle_data = oraclestat.get_oracle_stat()
        # 状态数据
        oracle_osstat = oracle_data['os']
        oracle_stat = oracle_data['stat']
        oracle_wait = oracle_data['wait']
        oracle_sess = oracle_data['sess']
        oracle_mem = oracle_data['mem']
        oracle_load = oracle_data['load']
        # PGA使用率
        is_pga = para(db_conn, 'pga_aggregate_target')
        if int(is_pga) > 0:
            pga_target_size, pga_used_size, pga_used_percent = pga(db_conn)
        else:
            pga_target_size, pga_used_size, pga_used_percent = (0, 0, 0)
        if database_role == 'PHYSICAL STANDBY':
            adg_trans_lag, adg_trans_value = adg_trans(db_conn_cdb)
            adg_apply_lag, adg_apply_value = adg_apply(db_conn_cdb)
        else:
            adg_trans_lag = 'None'
            adg_apply_lag = 'None'
            adg_trans_value = 0
            adg_apply_value = 0

        # 锁等待信息
        lock_wait_res = get_lockwait_count(db_conn)
        dic_lock_wait = {each[0]: each[1] for each in lock_wait_res}
        enq_tx_row_lock_contention = dic_lock_wait.get(
            'enq: TX - row lock contention', 0)
        enq_tm_contention = dic_lock_wait.get('enq: TM - contention', 0)
        row_cache_lock = dic_lock_wait.get('row cache lock', 0)
        library_cache_lock = dic_lock_wait.get('library cache lock', 0)
        enq_tx_contention = dic_lock_wait.get('enq: TX - contention', 0)
        lock_wait_others = sum(each[1] for each in lock_wait_res) - (
            enq_tx_row_lock_contention + enq_tm_contention + row_cache_lock +
            library_cache_lock + enq_tx_contention)

        checklog.logger.info('{}:写入oracle_stat采集数据'.format(tags))
        clear_table(tags, 'oracle_stat')

        insert_data_values = {
            **locals(),
            **oracle_osstat,
            **oracle_wait,
            **oracle_load,
            **oracle_sess,
            **oracle_stat,
            **oracle_mem
        }

        insert_data_sql = "insert into oracle_stat(tags,host,port,service_name,hostname,platform,num_cpus,physical_memory,inst_id,instance_name,db_version," \
                          "dbid,created,dbname,db_unique_name,database_role,open_mode,updays,audit_trail,log_mode,is_rac,undo_tablespace,flashback_on," \
                          "datafile_size,tempfile_size,archivelog_size," \
                          "archive_used_percent,max_process,current_process,process_used_percent,pga_target_size,pga_used_size," \
                          "pga_used_percent,pga_size,sga_size,memory_used_percent,logons_cumulative,qps,tps,exec_count,user_commits,user_rollbacks," \
                          "consistent_gets,logical_reads,physical_reads,physical_writes,block_changes,redo_size,redo_writes,total_parse_count," \
                          "hard_parse_count,bytes_received,bytes_sent,io_throughput,total_sessions,active_sessions,active_trans_sessions," \
                          "blocked_sessions,dbtime,dbcpu,log_parallel_write_wait,log_file_sync_wait,log_file_sync_count," \
                          "db_file_scattered_read_wait,db_file_scattered_read_count,db_file_sequential_read_wait,db_file_sequential_read_count," \
                          "row_lock_wait_count,enq_tx_row_lock_contention,enq_tm_contention,row_cache_lock,library_cache_lock,enq_tx_contention,lock_wait_others," \
                          "adg_trans_lag,adg_apply_lag,adg_trans_value,adg_apply_value,status,check_time) " \
                          "values('{tags}','{host}',{port},'{service_name}','{hostname}','{platform}',{num_cpus},{physical_memory},{inst_id},'{instance_name}','{version}'," \
                          "{dbid},'{created}','{dbname}','{db_unique_name}','{database_role}','{open_mode}',{updays},'{audit_trail}','{log_mode}','{is_rac}','{undo_tablespace}','{flashback_on}'," \
                          "{datafile_size},{tempfile_size},{archivelog_size}," \
                          "{archive_used_percent},{max_process},{current_process},{process_used_percent},{pga_target_size},{pga_used_size}," \
                          "{pga_used_percent},{pga_size},{sga_size},{memory_used_percent},{logons_cumulative},{qps},{tps},{exec_count},{user_commits},{user_rollbacks}," \
                          "{consistent_gets},{logical_reads},{physical_reads},{physical_writes},{block_changes},{redo_size},{redo_writes},{total_parse_count}," \
                          "{hard_parse_count},{bytes_received},{bytes_sent},{io_throughput},{total_sessions},{active_sessions},{active_trans_sessions}," \
                          "{blocked_sessions},{dbtime},{dbcpu},{log_parallel_write_wait},{log_file_sync_wait},{log_file_sync_count}," \
                          "{db_file_scattered_read_wait},{db_file_scattered_read_count},{db_file_sequential_read_wait},{db_file_sequential_read_count}," \
                          "{row_lock_wait_count},{enq_tx_row_lock_contention},{enq_tm_contention},{row_cache_lock},{library_cache_lock},{enq_tx_contention},{lock_wait_others}," \
                          "'{adg_trans_lag}','{adg_apply_lag}',{adg_trans_value},{adg_apply_value},0,'{check_time}' )"

        insert_sql = insert_data_sql.format(**insert_data_values)
        mysql_exec(insert_sql)
        checklog.logger.info(
            '{}:获取Oracle数据库监控数据(数据库名:{} 数据库角色:{} 数据库状态:{})'.format(
                tags, dbname, database_role, open_mode))
        archive_table(tags, 'oracle_stat')

        # control file
        clear_table(tags, 'oracle_controlfile')
        controlfile_list = get_controlfile(db_conn)
        for each in controlfile_list:
            control_name, size = each
            insert_data_sql = "insert into oracle_controlfile(tags,host,port,service_name,name,size,check_time)" \
                              "values('{tags}','{host}',{port},'{service_name}','{control_name}',{size},'{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            mysql_exec(insert_sql)

        # redolog
        clear_table(tags, 'oracle_redolog')
        redolog_list = get_redolog(db_conn)
        for each in redolog_list:
            group_no, thread_no, type, sequence_no, size, archived, status, member = each
            insert_data_sql = "insert into oracle_redolog(tags,host,port,service_name,group_no,thread_no,type,sequence_no," \
                              "size,archived,status,member,check_time)" \
                                  "values('{tags}','{host}',{port},'{service_name}',{group_no},{thread_no},'{type}',{sequence_no}," \
                              "{size},'{archived}','{status}','{member}','{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            insert_sql = insert_sql.replace('None', 'NULL')
            mysql_exec(insert_sql)

        # 表空间
        clear_table(tags, 'oracle_tablespace')
        tbsinfo_list = tablespace(db_conn)
        for tbsinfo in tbsinfo_list:
            tablespace_name, datafile_count, total_size, free_size, used_size, max_free_size, percent_used, percent_free, used_mb = tbsinfo
            insert_data_sql = "insert into oracle_tablespace(tags,host,port,service_name,tablespace_name,datafile_count,total_size,free_size," \
                              "used_size,max_free_size,percent_used,percent_free,used_mb,check_time)" \
                              "values('{tags}','{host}',{port},'{service_name}','{tablespace_name}',{datafile_count},{total_size},{free_size}," \
                              "{used_size},{max_free_size},{percent_used},{percent_free},{used_mb},'{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            mysql_exec(insert_sql)
        archive_table(tags, 'oracle_tablespace')

        # 临时表空间
        clear_table(tags, 'oracle_temp_tablespace')
        temptbsinfo_list = temp_tablespace(db_conn)
        for temptbsinfo in temptbsinfo_list:
            temptablespace_name, total_size, used_size, percent_used = temptbsinfo
            insert_data_sql = "insert into oracle_temp_tablespace(tags,host,port,service_name,temptablespace_name,total_size,used_size," \
                              "percent_used,check_time)" \
                              "values('{tags}','{host}',{port},'{service_name}','{temptablespace_name}',{total_size}," \
                              "{used_size},{percent_used},'{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            mysql_exec(insert_sql)
        archive_table(tags, 'oracle_temp_tablespace')

        # undo表空间
        clear_table(tags, 'oracle_undo_tablespace')
        undotbsinfo_list = get_undo_tablespace(db_conn)
        for undotbsinfo in undotbsinfo_list:
            undotablespace_name, used_size, total_size, percent_used = undotbsinfo
            insert_data_sql = "insert into oracle_undo_tablespace(tags,host,port,service_name,undotablespace_name,total_size,used_size," \
                              "percent_used,check_time)" \
                              "values('{tags}','{host}',{port},'{service_name}','{undotablespace_name}',{total_size}," \
                              "{used_size},{percent_used},'{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            mysql_exec(insert_sql)
        archive_table(tags, 'oracle_undo_tablespace')

        # 统计信息分析
        clear_table(tags, 'oracle_table_stats')
        oracletablestats_list = get_tab_stats(db_conn)
        for each in oracletablestats_list:
            owner, table_name, num_rows, change_pct, last_analyzed = each
            insert_data_sql = "insert into oracle_table_stats(tags,host,port,service_name,owner,table_name,num_rows,change_pct,last_analyzed,check_time) " \
                              "values('{tags}','{host}',{port},'{service_name}','{owner}','{table_name}',{num_rows},{change_pct},'{last_analyzed}','{check_time}')"
            insert_sql = insert_data_sql.format(**locals())
            mysql_exec(insert_sql)

        # 后台日志解析
        # get_oracle_alert(tags,db_conn,oracle_params,linux_params)

        db_conn.close()
    else:
        error_msg = "{}:数据库连接失败".format(tags)
        checklog.logger.error(error_msg)
        clear_table(tags, 'oracle_stat')
        checklog.logger.info('{}:写入oracle_stat采集数据'.format(tags))
        sql = "insert into oracle_stat(tags,host,port,service_name,status,check_time) values(%s,%s,%s,%s,%s,%s)"
        value = (tags, oracle_params['host'], oracle_params['port'],
                 oracle_params['service_name'], 1, check_time)
        mysql_exec(sql, value)
        archive_table(tags, 'oracle_stat')
Exemplo n.º 21
0
        # report_file = os.getcwd() +  '/oracle/report/' +report_name
        report_file = os.getcwd() + '/templates/report/oracle/' + report_name
        self.save_report(report_file, data)
        insert_sql = " INSERT INTO oracle_report(tags,begin_time,end_time,report_type,file_path,status,create_time) " \
                     "values('{}','{}','{}','{}','{}','0','{}') ".format(
        self.tags, report_begin_time, report_end_time, report_type, 'report/oracle/'+report_name,now())
        mysql_exec(insert_sql, '')


if __name__ == '__main__':
    tags = 'pdb1'
    oracle_params = {
        'host': '192.168.48.60',
        'port': 1521,
        'service_name': 'pdb1',
        'user': '******',
        'password': '******',
        'service_name_cdb': 'orcl19c',
        'user_cdb': 'c##dbmon',
        'password_cdb': 'oracle'
    }
    report_type = 'addm'
    begin_snap = '1958'
    end_snap = '1960'
    db_conn = OracleBase(oracle_params).connection()
    db_conn_cdb = OracleBase(oracle_params).connection_cdb()
    oracle_report = OracleReport(db_conn_cdb,tags,oracle_params)
    oracle_report.get_report(report_type,1958,1960)

Exemplo n.º 22
0
                                                     instance_num, begin_snap,
                                                     end_snap, suffix)

        # report_file = os.getcwd() +  '/oracle/report/' +report_name
        report_file = os.getcwd() + '/report/' + report_name
        self.save_report(report_file, data)
        insert_sql = " INSERT INTO oracle_report(tags,begin_time,end_time,report_type,file_path,status,create_time) " \
                     "values('{}','{}','{}','{}','{}','0','{}') ".format(
        self.tags, report_begin_time, report_end_time, report_type, report_file,now())
        mysql_exec(insert_sql, '')


if __name__ == '__main__':
    tags = 'orcl19c_pdb1'
    oracle_params = {
        'host': '192.168.48.60',
        'port': 1521,
        'service_name': 'pdb1',
        'user': '******',
        'password': '******',
        'service_name_cdb': 'orcl19c',
        'user_cdb': 'c##dbmon',
        'password_cdb': 'oracle'
    }
    report_type = 'awr'
    begin_snap = '1282'
    end_snap = '1283'
    db_conn = OracleBase(oracle_params).connection()
    oracle_report = OracleReport(db_conn, tags, oracle_params)
    oracle_report.get_report(report_type, 1282, 1283)
Exemplo n.º 23
0
# encoding:utf-8

from utils.oracle_base import OracleBase
import json

if __name__ == '__main__':
    oracle_params = {
        'host': '192.168.48.60',
        'port': 1521,
        'service_name': 'pdb1',
        'user': '******',
        'password': '******',
        'service_name_cdb': 'orcl19c',
        'user_cdb': 'c##dbmon',
        'password_cdb': 'oracle'
    }
    db_conn = OracleBase(oracle_params).connection()
    OracleBase(oracle_params).call_proc('pro_top_cpu_sql', db_conn)
    sql = "select ID,COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10,COL11,COL12," \
          "SHOW_TYPE,SHOW_TITLE,INST_INFO from snap_show_config"
    res_config = OracleBase(oracle_params).query_one(sql, db_conn)
    sql = "select ID,RATE,SQL_ID,SQL_EXEC_CNT,VAL1,VAL2,VAL3,VAL4,VAL4,VAL5,VAL6,VAL7,VAL8," \
          "VAL9,SNAP_TYPE_ID from snap_show"
    res_data = OracleBase(oracle_params).query_all(sql, db_conn)

    data = {'snap_config': res_config, 'snap_data': res_data}
    print(json.dumps(data))