首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Oracle10g与10g+语句级读取一致性的理解

对Oracle10g与10g+语句级读取一致性的理解
EN

Database Administration用户
提问于 2019-08-05 04:49:53
回答 1查看 689关注 0票数 0

我是Oracle的新手,我只想确认我对Oracle10g和10g+语句级读取一致性的理解。

Oracle10g文档指出:

Oracle总是执行语句级的读取一致性。这保证了单个查询返回的所有数据都来自一个时间点--即查询开始的时间。因此,查询永远不会看到在查询执行期间提交的脏数据或事务所做的任何更改。随着查询执行的进行,只有查询开始前提交的数据对查询是可见的。查询不会看到在语句执行开始后提交的更改。

Oracle11g文档声明:

Oracle数据库总是执行语句级的读取一致性,这保证了单个查询返回的数据相对于单个时间点是提交的和一致的。单个SQL语句一致的时间点取决于事务隔离级别和查询的性质:

  • 在read提交的隔离级别中,这一点是打开语句的时间。例如,如果SELECT语句在SCN 1000处打开,则此语句与SCN 1000一致。
  • 在可序列化或只读事务中,这一点是事务开始的时间。例如,如果事务以SCN 1000开始,并且在此事务中出现多个SELECT语句,则每个语句与SCN 1000一致。
  • 在闪回查询操作中(选择.)时,SELECT语句显式地指定时间点。例如,您可以查询上周四下午2点出现的表。

请看粗体文字。如果我正确理解,Oracle将其行为更改为10g和10g+。在10g中,语句级读取一致性总是基于语句启动时的视图。在10g+中,语句级读取一致性基于依赖于隔离级别和查询本身的视图。我的理解正确吗?谢谢。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-08-05 08:05:44

这种行为并没有改变。至少在Oracle 7之后(可能是以前,但那是在我的时代之前),现在的Oracle 19也是如此。文档刚刚被扩展到包含默认读取提交以外的隔离级别的行为,或者在使用Flashback查询机制时。

(您应该看看最新的文档:https://docs.oracle.com/en/database/oracle/oracle-database/index.html - 11g非常古老)

重要的一点是,Oracle使用的默认隔离(语句级一致性)意味着重复相同的语句可能不会产生相同的结果,因为其他事务可能已经在语句的第一次执行期间更新了数据。Oracle使用多版本一致性来提供并发访问,这样读取器就不会阻止作者,而编写者就不会阻止读者。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/244525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档