请问Oracle 的 数据操作写到那个log里面。

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE "PROC_WRITE_LOG" (filecontent varchar2,
                                               filename    varchar2) is
      ifle_write_handle utl_file.file_type;
      status_failure    VARCHAR2(2000);
    begin
      ifle_write_handle := utl_file.fopen('DATA_PUMP_DIR', to_char(sysdate,'yyyymm')||filename, 'a');
      utl_file.put(ifle_write_handle,
                   to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') ||'     '|| filecontent);
      utl_file.fclose(ifle_write_handle);
    EXCEPTION
      WHEN OTHERS THEN
        status_failure := TO_CHAR(SQLCODE) || ': ' || SUBSTR(SQLERRM, 1, 980);
        insert into system_proc_write_log
        values
          (filename, filecontent, status_failure, sysdate);
    end;
      

  2.   

    我的意思,对数据库操作,比如 新增数据,删除数据之类。Oracle 会自动去写log,这些log在什么地方。
      

  3.   

    REDO01.LOG
    REDO02.LOG
    REDO03.LOG
    是这个吗
      

  4.   

    oracle进行增删改时会写UNDO和REDO,和编辑器中的UNDO和REDO类似。
    UNDO记录在UNDO表空间(以前叫回滚段),用于事务处理的ROLLBACK等。
    REDO记录在在线重做日志文件中(文件名类似:REDOxxx.LOG),主要用于数据库恢复。
    在线REDO日志文件是重复使用的,只有开启了归档模式,才能在在线日志文件被覆盖之前归档保存。
      

  5.   


    /*
    我们对数据库的insert,delete,update这三个操作会生成undo和redo
    oracle redo:
    oracle重做日志文件,分为两类:在线(online)和归档(archived)重做日志文件‘
    万一实例或者介质失败,这两种日志都是用于恢复;
    redo用于在失败时重放事物;
    oracle undo:
    在你对数据库进行修改时,数据库会生成undo信息,如果你执行的事物或者语句失败了,
    或你在执行语句之后rollback了,生成的undo信息用来就可以帮助你将数据库恢复到修改
    之前的样子。undo用于取消一条语句或者一组语句的作用。undo信息存储在undo segment中。
    关于undo,其实就是将你修改的对象恢复到修改之前的状态:
    对于insert,oracle会完成相应的delete,
    对于delete,oracle会执行相应的insert,
    对于update,oracle会执行一个反update,或者另一个update。redo和undo协同工作:
    insert
    insert into当你向表中写入数据是,也一并生成了undo和redo,undo保存在undo segment中,
    redo保存在重做日志缓冲区中。如果commit了,那么重做日志缓冲区中的redo会全部写入磁盘中,
    而且是永久的。但是undo segment中的undo信息并不会被刷新或者生成什么永久的文件,
    当下一个事物重用这些undo segment时,上一次写入undo的信息就被刷新了。
    update
    与insert相比,update生成的undo量更大,因为undo肩负着如果事物语句失败,恢复数据的操作。
    我们都知道,update其实是delete和insert两个操作组合而成的,所以,如果一旦事物失败,
    undo信息将会非常有用。这就是update生成的undo比较大的原因。
    update生成的redo在重做日志缓存区写满后也会写入磁盘。
    delete
    delete也会生成undo和redo,redo记录了操作过程和信息,undo用于如果用户操作完成后执行rollback。
    commit
    commit操作,将会把我们上面三个操作产生的redo写入重做日志文件里面,而undo则存在undo segment中,
    直到下一个事物刷新这个undo segment
    */