如果只在10:30做commit的话
1. 10:00
2. 不能DIY.

解决方案 »

  1.   

    commit操作是在10:30导入结束后执行哪位兄弟有这方面的经验,不妨写一写,谢谢!
      

  2.   

    请教: jlandzpa(ORA-00600) 兄
    难道做select 的时候会把table1锁住,或使trigger失效?
    因为他是往table2里写数据,对table1只是select,应该不会影响table1的使用,以及trigger的触发吧?
      

  3.   

    写错了吧?触发器监听的是table2?table1只是被select数据,哪里有insert?如果不commit,那么表table2在10:00 - 10:30期间其实并没有insert事件发生,因此trigger不起作用。
      

  4.   

    TO wpltt(NullpointException):没有写错,TABLE1表中会不断的有数据插入或者更新,在导数据的过程中,TABLE1也会有数据变化。TRIGGER监听的是TABLE1。难就难在这里!
      

  5.   

    btw:如果你的TABLE1中这段时间有commit并且回滚段不是足够大的话
    将出现 ora-01555错误
      

  6.   

    对于1,我刚才做了个试验,

    insert into table2 select * from table1 然后在另一个会话中对table1进行编辑,中间提交了三次。
    最后,select * from table2,结果是table1的旧数据 。
      

  7.   

    1、完全正确,虽然在插入TABLE2中数据时用了很长时间,但对于一个SESSION的一次操作,ORACLE保持数据读的一致性,所以即便在导数的过程中出现的数据变化,则操作的结果将仍然是10:00时的数据。
     2、对于触发器就不同了,因为你的触发器是键在TABLE1上的,所以触发器的工作与导数是完全分开了,只要对TABLE1有操作,触发器就会触发,而触发器的作用结果也将与启动触发器的事务一块提交或回退。
      另外,我认为不会出现biti_rainy(biti_rainy)提到的 ora-01555错误错误,即便出现也不是对TABLE1操作COMMIT的原因,因为操作TABLE1和INTO TABLE2是两个不同的事务,两者是没有关系的。而且如果TABLE1中数据量很大的话,SELECT .. INTO ..可以单独指定一个大的回滚段。