天萃荷净

Oracle数据库开发时使用伪列函数ora_rowscn查询出数据库表中行数据的修改时间

一、默认情况下

–创建t_orascn测试表

SQL> create table t_orascn(id number);

Table created

–插入两条数据

SQL> insert into t_orascn values(1);

1 row inserted

SQL> insert into t_orascn values(2);

1 row inserted

SQL> commit;

Commit complete

–查询ora_rowscn和相关数据

SQL> select ora_rowscn,id from t_orascn;

ORA_ROWSCN ID

———- ———-

559036 1

559036 2

–更新其中一条数据

SQL> update t_orascn set id=2 where rownum=1;

1 row updated

SQL> commit;

Commit complete

–再查询ora_rowscn和相关数据

SQL> select ora_rowscn,id from t_orascn;

ORA_ROWSCN ID

———- ———-

559669 2

559669 2

–查询更详细信息

SQL> Select versions_xid,versions_startscn,versions_endscn,

2 DECODE(versions_operation,’I',’Insert’,'U’,'Update’,'D’,'Delete’, ‘Original’) “Operation”, id from t_orascn versions between scn minvalue and maxvalue;

VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operation ID

—————- —————– ————— ——— ———-

0500180055010000 559669 Update 2

02001C0068010000 559036 Insert 2

02001C0068010000 559036 559669 Insert 1

–查询操作时间

SQL> select to_char(scn_to_timestamp(ora_rowscn),’yyyy-mm-dd hh24:mi:ss’),id from t_orascn;

TO_CHAR(SCN_TO_TIMESTAMP(ORA_R ID

—————————— ———-

2011-04-11 00:01:12 2

2011-04-11 00:01:12 2

–查询数据详细操作时间

SQL> Select versions_xid,to_char(scn_to_timestamp(versions_startscn),’yyyy-mm-dd hh24:mi:ss’),versions_endscn,DECODE(versions_operation,’I',’Insert’,'U’,'Update’,'D’,'Delete’, ‘Original’) “Operation”, id from t_orascn versions between scn minvalue and maxvalue;

VERSIONS_XID TO_CHAR(SCN_TO_TIMESTAMP(VERSI VERSIONS_ENDSCN Operation ID

—————- —————————— ————— ——— ———-

0500180055010000 2011-04-11 00:01:12 Update 2

02001C0068010000 2011-04-10 23:59:03 Insert 2

02001C0068010000 2011-04-10 23:59:03 559669 Insert 1

–结论:ora_rowscn在没有默认情况下,如果数据库块中的任何一条记录发生改变,该块中的所有记录的ora_rowscn中对应的scn值都改变

二、创建表含有rowdependencies测试

–创建测试表t_orascn_b

SQL> create table t_orascn_b(id number) rowdependencies;

Table created

SQL> insert into t_orascn_b values(1);

1 row inserted

SQL> insert into t_orascn_b values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select ora_rowscn,id from t_orascn_b;

ORA_ROWSCN ID

———- ———-

560532 1

560532 2

SQL> insert into t_orascn_b values(3);

1 row inserted

SQL> select ora_rowscn,id from t_orascn_b;

ORA_ROWSCN ID

———- ———-

560532 1

560532 2

3

SQL> commit;

Commit complete

SQL> select ora_rowscn,id from t_orascn_b;

ORA_ROWSCN ID

———- ———-

560532 1

560532 2

560555 3

–说明一点:没有提交ora_rowscn不改变(update)或者不存在(insert)

SQL> update t_orascn_b set id=10 where id<2;

1 row updated

SQL> commit;

Commit complete

SQL> select to_char(scn_to_timestamp(ora_rowscn),’yyyy-mm-dd hh24:mi:ss’),id from t_orascn_b;

TO_CHAR(SCN_TO_TIMESTAMP(ORA_R ID

—————————— ———-

2011-04-11 00:15:38 10

2011-04-11 00:12:37 2

2011-04-11 00:13:28 3

SQL>

SQL> Select versions_xid,versions_startscn,versions_endscn,

2 DECODE(versions_operation,’I',’Insert’,'U’,'Update’,'D’,'Delete’, ‘Original’) “Operation”, id from t_orascn_b versions between scn minvalue and maxvalue;

VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operation ID

—————- —————– ————— ——— ———-

0800290054010000 560614 Update 10

0500130056010000 560555 Insert 3

0A00090001010000 560532 Insert 2

0A00090001010000 560532 560614 Insert 1

SQL> Select versions_xid,to_char(scn_to_timestamp(versions_startscn),’yyyy-mm-dd hh24:mi:ss’),versions_endscn,DECODE(versions_operation,’I',’Insert’,'U’,'Update’,'D’,'Delete’, ‘Original’) “Operation”, id from t_orascn_b versions between scn minvalue and maxvalue;

VERSIONS_XID TO_CHAR(SCN_TO_TIMESTAMP(VERSI VERSIONS_ENDSCN Operation ID

—————- —————————— ————— ——— ———-

0800290054010000 2011-04-11 00:15:38 Update 10

0500130056010000 2011-04-11 00:13:28 Insert 3

0A00090001010000 2011-04-11 00:12:37 Insert 2

0A00090001010000 2011-04-11 00:12:37 560614 Insert 1

–结论:如果创建表时指定了rowdependencies,则ora_rowscn是以行为单位变化,而不是块

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之学习笔记:Oracle伪列函数ora_rowscn 记录表中行数据的修改时间

oracle数据变化记录,学习笔记:Oracle伪列函数ora_rowscn 记录表中行数据的修改时间...相关推荐

  1. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  2. Oracle数据二进制传输,学习笔记:Oracle数值函数 十进制与二进制相互转换的函数使用案例...

    天萃荷净 ORACLE 十进制与二进制互转函数,开发DBA向我咨询数值转换的方法,Oracle数值转换函数NUMBER_TO_BIT等函数可用 1.Oracle数值转换之十进制转换二进制 CREATE ...

  3. oracle 删除awr报告,学习笔记:Oracle awr入门 深入了解AWR报告

    天萃荷净 深入了解AWR报告,ASH与AWR报告的官方说明,数据库进程和性能视图获取 1.AWR与ASH概念 1.ASH 若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重.但 ...

  4. oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...

    天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...

  5. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  6. oracle rac 环境配置文件,学习笔记:Oracle RAC spfile参数文件配置案例详解

    天萃荷净 rac中的spfile探讨,记录一下Oracle RAC搭建完成后关于spfile参数文件的配置案例,与更改RAC环境中参数文件的方法 今天朋友的的rac,因为被同事做数据库升级,分别在两个 ...

  7. oracle的脚本日志,学习笔记:Oracle alert日志文件巡检脚本

    天萃荷净 分享一篇Oracle alert日志文件巡检脚本 每天都检查oracle日志,所以写了一个比较完善的shell,让其自动处理,在运行程序之前,需要在该脚本目录下新建tmp目录 #!/usr/ ...

  8. python爬虫爬取58网站数据_python实战学习笔记:爬取58同城平板电脑数据

    学习爬虫一周后独立完成的第一个作业项目:爬取58同城平板电脑数据. 1.首先确定URL,并抓取详情页中需要的信息 首先我们确定好需要爬取的网页URL是:http://zhuanzhuan.58.com ...

  9. 斯坦福大学数据可视化课程学习笔记:第一节 可视化的发展与目标

    <斯坦福大学数据可视化课程学习笔记>课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分.本系列是 "秉姝" 同学在学习过程中记录和整理的学习笔记 ...

最新文章

  1. 将多窗体应用程序改造为仿Chrome形式的简易方法
  2. SecureCRT自动保存窗口数据到文件,自动保存日志,每行添加时间戳
  3. 修改图片背景_用P图软件将图片背景更改
  4. MySQL表联接原理分析
  5. 基于THUCNews数据的BERT分类
  6. Cmd下开启3389
  7. maven工程下管理module发布到SVN注意
  8. journalctl工具基础介绍
  9. pdf文件如何在线转换为jpg图片 1
  10. 走进脑计划(四):linux下安装SPM、DPABI
  11. 手机录制视频然后一帧一帧分析
  12. 室内定位蓝牙信标安装规划问题
  13. 防沉迷与身份证系统挂钩 网游要实名认证
  14. android可以控制手机充电吗,关于防止遥控器向安卓手机充电的问题
  15. lin卡pci linux驱动下载,万能PCI串口卡驱动
  16. 计算机核心显卡,电脑核心组件之显卡如何选择
  17. 汉语韵律短语切分方法初探
  18. mapbox-gl加载气象场数据(视频)
  19. Android 如何判断分屏模式是否开启或者多窗口显示
  20. python运行快捷键修改_pycharm快捷键、常用设置、配置管理

热门文章

  1. 使用ENVI打开raw格式影像
  2. 服务器无盘启动慢什么情况,网吧无盘系统电脑启动慢是怎么回事?
  3. 计算机网络——传输层实现可靠数据传输
  4. mysql的limit用法、逻辑分页和物理分页
  5. 数字孪生之降阶模型与代理模型
  6. 收藏:情歌天后梁静茹最新两首单曲mv天灯 不敢当(温柔动感)
  7. 打通数据壁垒,提升应用价值
  8. 利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!
  9. vivo Z3i标准版评测 强劲配置带来酣畅体验
  10. DETR:End-to-End Object Detection with Transformers