trace file有报什么错误吗
我的猜想是因为过多session同时对测试表进行操作产生的,一个session操作的时候没有问题我想是因为它都是等锁释放了后才进行下一步操作,但是多个session同时操作时会不会产生锁数目不够或等待时间过长,请大家继续发言

解决方案 »

  1.   

    我来说几点
    1、为什么要用触发器来跟踪DML语句呢?触发器跟踪DDL语句挺好的,我用触发器来跟踪DDL语句和数据库事件。
    2、如果同时往表中插入数据,是不会引起锁定与资源争用的,oracle的审计也只写一张表,为什么没有争用,如果没有update,你的争用何在
    3、DML语句的监控为什么不用审计,我怀疑你的争用不是出在写的那张表,而是建立trigger的多张表上,是trigger耗费了你的资源,甚至是你的trigger出现了嵌套,但是你不知道。
    4、DML语句其实采用LOGMNR也可以调查,何必采用这么复杂的方式呢?
    5、建议日志记录到磁盘比较好,写成日志文件,这样可以避免因为回滚造成了你往日志表中记录的数据也回滚了,然而,你还是不知道。
      

  2.   

    会不会是因为进程相互等待引起死锁?
    我怀疑你的触发器中使用了动态sql语句,而动态sql语句跟踪非常困难
      

  3.   

    请问各位大哥,我的触发器都调用同一个PACKAGE中的同一个存储过程来写日志,这样如果同一时间多个SESSION调用不会出现问题吧?wanghai(汪海) :
      恕小弟愚蠢,“trace file有报什么错误吗”中的TRACE FILE指的是哪些文件?penitent(只取一瓢):
      你好,谢谢你给了我这么多建议,我之所以使用触发器而不使用审计,是因为审计记录不能满足我的要求。至于你说的LOGMNR我不太明白,还请赐教。KingSunSha(弱水三千)
      你好,谢谢你。我没有使用动态SQL语句,只是将要写的数据以参数的方式传给PACKAGE中的写日志存储过程,在这个过程中所有的SQL语句都是写死的,连游标都没有使用。不知哪位大哥可以将引起死锁的各种原因列出来?
      

  4.   

    Trace files
                Contains internal errors detected by server or background processes.
            If dumped by a background process the file is located in a destination specified by initialization parameter BACKGROUND_DUMP_DEST.LogMiner提供一个过程将REDO LOG的内容转换成描绘对数据库的逻辑操作的SQL STATEMENTS                LogMiner必须运行在8.1版本以后,可分析8.0版本后的REDO LOG文件                LogMiner可以在数据库MOUNT或NOMOUNT状态下运行
    我个人还是认为是等待太多引起的
      

  5.   

    wanghai(汪海):
      如果真是等待太多造成的,怎么解决?
      

  6.   

    测试数据库和正式使用数据库是有很大差别的.
    包可以同时被多个进程调用,不会出现等待
    除非你在包中执行了dml语句,而没有提交时可能会有一个包在等另一个包过程的执行提交或回滚.
    但是,如果你仅仅执行的插入语句,不该有太大争用与等待
    ----------------
    建议,不要用这么多的dml触发器,因为触发器的执行不是你控制的,如果不是完全熟悉,可能会有意外的发生.
      

  7.   

    问题已解决,谢谢大家,原因是因为我对:LONG类型数据处理不当引起的.