zoukankan      html  css  js  c++  java
  • external table + alert_sid.log

    创建 directory

    – create alert directory

    select *
    from dba_directories dd
    where 1=1
    and dd.directory_name='ALERT_DIR'
    ;
    
    create or replace directory alert_dir as '/oracle/admin/orcl/bdump'
    

    alert_dir 需要根据 oracle 版本不同而不同
    – grant

    grant read,write on directory ALERT_DIR to system
    ; 

    创建外部表

    – Create table

    create table ALERT_LOG_VIEW_ORCL
    (
      MSG_LINE VARCHAR2(4000)
    )
    organization external
    (
      type ORACLE_LOADER
      default directory ALERT_DIR
      access parameters 
      (
        records delimited by newline
        nobadfile
        nologfile
        nodiscardfile skip 0
        READSIZE 10485760 FIELDS LDRTRIM
        REJECT ROWS WITH ALL NULL FIELDS
        (MSG_LINE (1:1000) CHAR(1000))
      )
      location (ALERT_DIR:'alert_orcl.log')
    )
    reject limit UNLIMITED;   
    

    查询外部表

    select                 
           LINENO, 
           THEDATE, 
           ORA_ERROR, 
           MSG_LINE
    from (        
      select LINENO, 
             THEDATE, 
             ORA_ERROR, 
             MSG_LINE
      from (select *
              from (
               select lineno,
                      msg_line,
                      thedate,
                      max(case
                           when (   ora_error like '%ORA-%' 
                                 or ora_error like '%PLS-%'
                                 or ora_error like '%TNS-%' 
                                 or ora_error like '%WARNING%'
                                 ) then
                            rtrim(substr(ora_error, 1, instr(ora_error, ' ') - 1),
                                  ':')
                           else
                            null
                         end) over(partition by thedate) ora_error
                from ( 
                   select lineno,
                          msg_line,
                          max(thedate) over(order by lineno) thedate,
                          lead(msg_line) over(order by lineno) ora_error
                    from ( select rownum lineno,
                                  substr(msg_line, 1, 132) msg_line,
                                  case
                                    when replace(msg_line,'CST ','') like '___ ___ __ __:__:__ ____' 
                                              then to_date(replace(msg_line,'CST ',''),'Dy Mon DD hh24:mi:ss yyyy')
                                    else null
                                  end thedate
                            from alert_log_view_orcl
                          )
                      )
                 )
           )
     where 1=1
       and ora_error is not null
       and thedate >= (sysdate - 1)
     order by thedate
    )  
  • 相关阅读:
    功能测试点总结
    SQL 注入
    软件特征功能测试过程分析 (引用)
    高效率测试之巧用策略模式 (引用)
    Oracle数据库安装过程中遇到的若干问题
    涉众利益分析
    问题账户需求分析
    2018春阅读计划
    《我们应当怎样做需求分析》阅读笔记
    个人总结
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9793136.html
Copyright © 2011-2022 走看看