HI~~~ORACLE版的兄弟姐妹..我现在需要用C#或者C++分析ORACLE的日志.日志位于 C:\ORACLE\admin\{SID}\dbump\alert_{sid}.LOG看了一下这个文件,感觉如果用程序来找"ORA-"这样的字符串,会找出很多没用的东西,并且重复的东西.而且没有什么规律.请问可以用SQL语句来查询吗?或者其他方法吗?主要是查询ORA-错误,谢谢各位!

解决方案 »

  1.   

    把alert_sid.log文件建成外部表,然后通过like查询ora-啊:例子如下:
    SQL> create or replace directory bdump as 'D:\oracle\admin\testDb\bdump';
    SQL> create table alert_log(text varchar2(255))
         organization external 
         (type oracle_loader
          default directory bdump
          access parameters
          (records delimited by newline  
           badfile 'bad.txt'
           logfile 'log.txt'
           FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'  LDRTRIM 
           MISSING FIELD VALUES ARE NULL 
           REJECT ROWS WITH ALL NULL FIELDS  
    )
           location ('alert_testdb.log')
         )
         reject limit unlimited;  
    --测试
    SQL> select * from alert_log where text like '%ORA-%' and rownum<=10;
      

  2.   

    查询到有ORA-***** 错误之后,要怎样才能知道发生错误的日期,(如果能知道原因更好,看不懂这个alert_ .log)
      

  3.   

    为什么我直接使用select * from alert_log where text like '%ORA-%' and rownum<=10;报错:表或视图不存在一定要执行
    SQL> create or replace directory bdump as 'D:\oracle\admin\testDb\bdump';
    SQL> create table alert_log(text varchar2(255))
         organization external 
         (type oracle_loader
          default directory bdump
          access parameters
          (records delimited by newline  
           badfile 'bad.txt'
           logfile 'log.txt'
           FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'  LDRTRIM 
           MISSING FIELD VALUES ARE NULL 
           REJECT ROWS WITH ALL NULL FIELDS  
        )
           location ('alert_testdb.log')
         )
         reject limit unlimited;  这样的语句吗?这是干什么用的,因为是在线数据库,不允许执行其他操作.
      

  4.   

    没有 创建表 
    create table alert_log
    这个过程,你执行select * from alert_log 当然提示表不存在了。
      

  5.   


    恩  楼主可以在自己的机器上试下啊   难道自己机器上没装Oracle?
      

  6.   

    我已经新建了一个数据库.执行了oracledbalgtu 给的语句(完全不变的执行),但是
    select * from alert_log where text like '%ORA-%' and rownum <=10; 
    仍然报错:
    ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错
    ORA-29400: 数据插件错误KUP-04063: unable to open log file log.txt
     OS error 系统找不到指定的文件。
    ORA-06512: 在"SYS.ORACLE_LOADER", line 14
    ORA-06512: 在line 1
    oracledbalgtu 能再帮帮忙吧,关于ORACLE我太菜....另外,会对现有的日志文件造成影响吗?能方便得到出错的时间吗?alert_log属于哪一个用户?其他兄弟也都帮忙看看,分不够我再加,谢谢!
      

  7.   

    对日志没有影响。每一个实例会对应着一个alert_log,所以,不能说alert_log是针对哪个用户的