我在sql*plus 中用system 登录后,使用insert into 语句向某个表中插入了几条记录。然后,我在Enterprise manager control 中在方案节点中打开这个表,但是看不到刚插入的记录。如果在sql*plus 中用select 语句还能查出来。不知是怎么回事。还有,可能过 上一会就能看到刚插入的记录了,是不是在Enterprise manager control 中查看记录有个延时呀?

解决方案 »

  1.   

    你在SQL*PLUS中插入记录以后,有没有进行COMMIT操作啊,如果没有进行的话,那么在别的会话中是看不到刚刚插入的记录的.
      

  2.   

    谢谢。各位。这其中的原理是什么呀?我开始用insert into插入数据后,此时数据保存在什么地方呢?为什么等好长时间,我没有用commit ,但在EMC里面又看到了呢?
      

  3.   

    为什么等好长时间,我没有用commit ,但在EMC里面又看到了呢?----------------------------------------------------
    其實你肯定已經commit,只不過沒有顯式提交事務,當你進行DDL、
    DCL操作時,oracle會自動提交事務!
      

  4.   

    我来给你解释一下!oracle的工作机制是这样,为了运行快速orecle的所有操作都是在内存中进行的,当没有出现事物提交commit,你所插入的数据都会存储在sga中的高速数据缓存区中的脏数据缓存区,刚说过了oracle的操作都是在内存中完成的,所以你的应用程序连接的并读取的并不是数据文件里的数据,而是脏数据块中修改过的数据,但这些据数据按照oracle的存储机制只有产生一定条件参会把内存中的数据存入数据文件,其中commit是一种情况,讲到这有些基础的朋友应该明白了吧!