问题1
环境:oracle8.1.7   (oracle9.2.0上没有问题)
再现方法(在同一个oracle session中):
1。运行logmnr(使用了字典文件,不使用字典文件的情况下没有试验)
2.用utl_file打开一个文件。
一次不行,重复1,2两次以上。一般1次就会出现
现象:
该session(比如sqlplus session)就会死掉,无法响应用户操作。
发生问题的位置在utl_file.fopen处。问题2:
环境:oracle9.2.0   (oracle8.1.7上没有问题)
1。用sqlplus登录oracle,使用dbms_application_info.set_client_info("tttttttttttttttttt")设置session的client_info.
2.使用该session更新数据库中的内容,commit.
3.使用logmnr察看redo log内容
现象:
可以看到2中的修改数据,但是在v$logmnr_contents的session_info的client_info部分,没有
看到预期的ttttttttttttttt(上面1中设置内容).

解决方案 »

  1.   

    重做logmnr数据挖掘logmnr---
    1)set directory
    2)retartup
    3)create directory file
      dbms_logmnr_d.build
    4)add/remove log file
      dbms_logmnr.add_logfile(removefile)5)start logmnr
      dbms_logmnr.start_logmnr
    6)v$logmnr_content ---sqlredo/sqlundo
      

  2.   

    2.用utl_file打开一个文件
    -------------------------
    运行logmnr后,这步是什么意思?
      

  3.   

    谢谢大家回答。
    to yown(yong) :
    感觉重做logmnr没有用,因为每个问题都在2台以上的机器上再现了。
    不过,还是信你的,在做一次。to zhaokeke2004(男人·海洋)
    就是在正常运行logmnr之后,在相同的oracle session中,使用utl_file打开任意一个文件。
    例子代码如下:
    DECLARE
      CURSOR C_LOGFILE IS
        SELECT MEMBER
          FROM V$LOGFILE;
      N_OPTIONS    BINARY_INTEGER;
      B_FIRST_ADD  BOOLEAN := TRUE;
      V_LOGFILE    V$LOGFILE.MEMBER%TYPE;
      FILE_HDL     SYS.UTL_FILE.file_type;
    BEGIN
          -- add the log file
      FOR LOGFILE IN C_LOGFILE LOOP
        IF B_FIRST_ADD THEN
          N_OPTIONS := SYS.DBMS_LOGMNR.NEW;
          B_FIRST_ADD := FALSE;
        ELSE
          N_OPTIONS := SYS.DBMS_LOGMNR.ADDFILE;
        END IF;
        V_LOGFILE := LOGFILE.MEMBER;
        SYS.DBMS_LOGMNR.ADD_LOGFILE( V_LOGFILE, N_OPTIONS );
      END LOOP;
      
      -- analysis
      sys.dbms_logmnr.start_logmnr(
      DictFileName => 'g:\oracle81\oradata\gene8\generalist.dic');
      sys.dbms_logmnr.end_logmnr;   FILE_HDL := SYS.UTL_FILE.fopen('g:\oracle81\oradata\gene8\','InitTest.log','r');
      SYS.UTL_FILE.fclose(FILE_HDL);
    END;