dreamno

导航

 

2013年7月25日

摘要: 在Oracle数据库中,undo主要有三大作用:提供一致性读(Consistent Read)、回滚事务(Rollback Transaction)以及实例恢复(Instance Recovery)。 一致性读是相对于脏读(Dirty Read)而言的。假设某个表T中有10000条记录,获取所有记录需要15分钟时间。当前时间为9点整,某用户A发出一条查询语句:select * from T,该语句在9点15分时执行完毕。当用户A执行该SQL语句到9点10分的时候,另外一个用户B发出了一条delete命令,将T表中的最后一条记录删除并提交了。那么到9点15分时,A用户将返回多少条记录? 如果返回 阅读全文
posted @ 2013-07-25 17:54 dreamno 阅读(328) 评论(0) 推荐(0) 编辑
 
摘要: COMMIT是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生: 1.在SGA(Buffer Cache)中已经生成了undo块; 2.在SGA(Buffer Cache)中已经生成了产生改变的数据块和索引块; 3.在REDO LOG BUFFER生成了前面两项的redo信息; 4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经 有一部分输出到了磁盘; 5.所有需要的锁已经获得; 当执行COMMIT命令时,只执行如下操作: 1.为事务生成SCN:SCN是ORAC 阅读全文
posted @ 2013-07-25 11:16 dreamno 阅读(698) 评论(0) 推荐(0) 编辑
 
摘要: 在《【IMPDP】同一数据库实例不同用户间数据迁移复制——NETWORK_LINK参数》(http://space.itpub.net/519536/viewspace-631571)文章中谈到了使用 NETWORK_LINK参数实现在相同的数据库实例中不同用户的数据复制。只要深刻理解了NETWORK_LINK参数的含义,实现不同数据库实例不同用户间数据迁移复制功能道理是相同的。需求:将ora10g实例中的sec用户数据迁移到secooler实例的housw用户中。实现流程:a.在secooler实例所在的数据库中创建指向ora10g数据库实例的DATABASE LINK;b.使用NETWOR 阅读全文
posted @ 2013-07-25 10:07 dreamno 阅读(1001) 评论(0) 推荐(0) 编辑
 
摘要: 假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下:1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。2、在1点30分,用户B执行了update命令,更新了testdb表中的第4100万行的这条记录,这时,用户A的全表扫描还没有到达第4100万条。毫无疑问,这个时候,第4100万行的这条记录是被写入了回滚段,假设是回滚段UNDOTS1,如果用户A的全表扫描到达了第4100万行,是应该会正确的从回滚段UNDOTS1中读取出1点钟时刻的内容的。3、 阅读全文
posted @ 2013-07-25 09:49 dreamno 阅读(946) 评论(0) 推荐(0) 编辑