Oracle中的ORA_ROWSCN函数的作用是什么

0    130    2

Tags:

👉 本文共约3177个字,系统预计阅读时间或需12分钟。

简介

对于每一行数据,ORA_ROWSCN可以返回每一行最近被修改的大概时间,可用于查询表最后一次被执行DML操作的时间。是每个表自带的一个伪列。

由于Oracle通过事务提交对行所在数据块来进行SCN(System Change Number,系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,它是系统中维持数据的一致性和顺序恢复的重要标志)的跟踪,即该块上有任何一行进行了修改,该块的ora_rowscn都发生变化,而且一个块的ora_rowscn是相同的。所以,它不精确。可以通过在创建表时使用行级别的依赖跟踪(ROWDEPENDENCIES)来获得一个更加精确的SCN。

在对视图进行查询时,不能使用ORA_ROWSCN函数,但对于视图的基表是可以使用ORA_ROWSCN函数的,也能在UPDATE或DELETE语句的WHERE子句中使用ORA_ROWSCN函数。

ORA_ROWSCN虽然不能用于闪回查询,但是可以用闪回版本查询来代替ORA_ROWSCN。

ORA_ROWSCN也不能用于外部表。

示例1

基于块级别

对表做dml操作

a. 创建测试表,查询原始数据,ora_rowscn为3089371

b. 修改一行数据,ora_rowscn变成3089858

c. 删除一行数据,ora_rowscn变成3089961

d. 插入一行数据,老块(BLOCK_ID 315)的ora_rowscn仍然是3089961,新插入的行(BLOCK_ID 319)ora_rowscn是3090014

​ e. 再插入一行数据,老块(BLOCK_ID 315)的ora_rowscn不变,新插入的行(BLOCK_ID 319)ora_rowscn变成3090087

可以看到ora_rowscn记录的是块级别的改动,即该块上有任何一行进行了修改,该块的ora_rowscn都发生变化,而且一个块的ora_rowscn是相同的。

对表做ddl操作

a. 新增一列,ora_rowscn没有发生变化

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Oracle中的ORA_ROWSCN函数的作用是什么后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部