恩,当然可以看啦啊。
因为userA用户已经提交,将内存的数据写入数据文件。所以tableA表里面有数据。
因为userB在执行查询的时候,实际就是查询userA数据文件下面,tableA表的内容,所以看到的信息是一样的。

解决方案 »

  1.   


    commit 命令 只是把日志缓存的数据写到了日志文件, 并没有把内存的数据写到数据文件中commit是把数据写到日志文件,而不是写到数据文件中!。
    你百度一下看看呢
      

  2.   

    确实commit之后,并没有立马写入数据文件,但是commit之后就可以确保你提交的数据具有永久的安全性,你查询数据可不一定是直接读取数据文件的,它也可以读取内存中的是数据,那什么时候会写入数据文件呢,有下面几种情况:1. 当Buffer Cache中的Dirty List长度达到阀值:DBWR将Dirty List中的Dirty Buffer写入磁盘(user Server Process在LRU List中查找free buffer时将碰到的dirty blocks移入Dirty List)
    2.  当user Server Process在Buffer Cache的LRU List中搜索了过长的时间而仍然没有找到free buffer:DBWR直接从LRU List中将Dirty Buffer写入磁盘
    3. 每过3秒钟:DBWR把dirty buffers从LRU List移到Dirty List,一旦Dirty List长度达到阀值,DBWR便将数据写入磁盘
    4. Checkpoint发生时:DBWR把所有的dirty buffers从LRU List移到Dirty List,并且开始写数据
    5. 当Tablespace开始Hot backup时:DBWR把所有属于该表空间的dirty buffers从LRU List移到Dirty List,并且开始写数据
    6. 当Tablespace offline时:DBWR把所有属于该表空间的dirty buffers从LRU List移到Dirty List,并且开始写数据
    7. 执行Drop时:drop table或者index将促使DBWR先将属于该segment的dirty blocks写入磁盘