需要修改的是那个“另外数据交换程序”,它不能把本次的SYSDATE记录下来作为下次抽取的起点,应该去V$TRANSACTION里面找最小的START_TIME, 找不到才用SYSDATE。

TOM"Oracle 9i 10g编程艺术":

7.3.1 一种会失败的常用数据仓库技术

我看到,许多人都喜欢用这样一种常用的数据仓库技术:

(1) 他们使用一个触发器维护源表中的一个 LAST_UPDATED 列,这与上一章的 6.2.3 节中讨论的

方法很相似。

(2) 最初要填充数据仓库表时,他们要记住当前的时间,为此会选择源系统上的 SYSDATE。例

如,假设现在刚好是上午 9:00。 ------------------ 此处就是引起漏洞的原因,需要修改

(3) 然后他们从事务系统中拉(pull)出所有行,这是一个完整的 SELECT * FROM TABLE 查询,

可以得到最初填充的数据仓库。

(4) 要刷新这个数据仓库,他们要再次记住现在的时间。例如,假设已经过去了 1 个小时,现

在源系统上的时间就是 10:00.他们会记住这一点。然后拉出自上午 9:00 (也就是第一次拉出

数据之前的那个时刻)以来修改过的所有记录,并把这些修改合并到数据仓库中。

注意 这种技术可能会在两次连续的刷新中将相同的记录 “拉出”两次。由于时钟的粒度所致,这是不可

避免的。MERGE 操作不会受此影响(即更新数据仓库中现有的记录,或插入一个新记录)。

他 们相信,现在数据仓库中有了自第一次执行拉出操作以来所修改的所有记录。他们确实可能有所

有记录,但是也有可能不是这样。对于其他采用锁定系统的数据库来 说,这种技术确实能很好地工作, 在

这些数据库中读会被写阻塞,反之写也会被读阻塞。但是在默认支持非阻塞读的系统中,这个逻辑是有问

题的。

要看这个例子有什么问题,只需假设上午 9:00 至少有一个打开的未提交事务。例如,假设在上午

8:59:30 时,这个事务已经更新了表中我们想复制的一行。在上午 9:00, 开始拉数据时,会读取这个表中

的数据,但是我们看不到对这一行做的修改;只能看到它的最后一个已提交的版本。如果在查询中到达这

一行时它已经锁定,我们就 会绕过这个锁。如果在到达它之前事务已经提交,我们还是会绕过它读取查询

开始时的数据,因为读一致性只允许我们读取语句开始时数据库中已经提交的数据。在 上午 9:00 第一次

拉数据期间我们读不到这一行的新版本,在上午 10:00 刷新期间也读不到这个修改过的行。为什么呢?上

午 10:00 的刷新只会拉出自那天早上上午 9:00 以后修改的记录,但是这个记录是在上午 8:59:30 时修改的 ,

我们永远也拉不到这个已修改的记录。

在许多其他的数据库中,其中读会被写阻塞,可以完成已提交但不一致的读,那么这个刷新过程就能

很好地工作。如果上午 9:00(第一次拉数据时)我们到达这一行,它已经上锁,我们就会阻塞,等待这一

行可用,然后读取已提交的版本。如果这一行未锁定,那么只需读取就行,因为它们都是已提交的。

那么,这是否意味着前面的逻辑就根本不能用呢?也不是,这只是说明我们需要用稍微不同的方式来

得到 “现在”的时间。应该查询 V$TRANSACTION,找出最早的当前时间是什么,以及这个视图中 START_TIME

列记录的时间。我们需要拉出自最老事务开始时间(如果没有活动事务,则取当前的 SYSDATE 值)以来经

过修改的所有记录:

select nvl( min(to_date(start_time,'mm/dd/rr hh24:mi:ss')),sysdate)

from v$transaction;

在这个例子中,这就是上午 8:59:30,即修改这一行的事务开始的那个时间。我们在上午 10:00 刷新

数据时,会拉出自那个时间以来发生的所有修改,把这些修改合并到数据仓库中,这就能得到需要的所有

东西。

oracle时间戳效率问题,时间戳问题 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...相关推荐

  1. oracle 的跨天查询,考勤跨天如何统计 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...

    本帖最后由 yaksha1 于 2020-9-11 17:29 编辑 请问下,目前正在统计每个人每天考勤数据是否正常,上班打一次卡,下班打一次卡,算是正常.打卡情况大致分两种,一种是正常白班,朝九晚五 ...

  2. oracle语句怎么查工作日,SQL查询工作日 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...

    with t1 as ( /*连续的日期*/ SELECT to_date('2016-01-01', 'yyyy-mm-dd') + (level - 1) as normal_date FROM ...

  3. oracle的addm,addm报告分析 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区

    本帖最后由 alibull 于 2014-5-9 18:14 编辑 SQL> SELECT total.tablespace_name, 2         Round(total.MB, 2) ...

  4. mysql 小型机_小型机宕机问题 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    最近客户主机每隔10天左右就会宕机,配置为P650+DS4300+3582,上面跑着oracle+webshere+tsm.宕机是,连接主机的显示器无反应,可以ping通主机,无法telnet及ftp ...

  5. oracle安装时EM,EM 安装时报错 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    一下是日志文件,求帮助哦 2013-12-30 14:38:18 oracle.sysman.emcp.EMConfig perform 信息: 正在将此操作记录到 D:\oracle\product ...

  6. oracle asm无法关闭,ASM无法关闭 - Oracle专题深入讨论 - ITPUB论坛-中国专业的IT技术社区...

    原帖由 Yong Huang 于 2011-5-18 02:14 发表 According to ORA-15097 Cannot Shutdown ASM if OCR is Located in ...

  7. oracle数据库问题处理,ora 问题处理 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    牛奶早餐 asm日志 p740 client_id='' type='UNKNOWN' level='16' host_id='P740' host_addr='172.16.15.82' modul ...

  8. oracle 内存 opp,求助OPP问题! - Oracle EBS DBA - ITPUB论坛-中国专业的IT技术社区

    EBS R12.1.3 APP安装在LUNIX服务器(128核CPU 256GB内存)上,并发请求很多,每天能有1万以上.OPP输出几天就死掉,只能重启OPP并发管理器. 几个月了,实在烦死了. OP ...

  9. oracle 应收票据,应收票据请求错误 - Oracle ERP - ITPUB论坛-中国专业的IT技术社区...

    各位大侠,最近做应收票据业务  在运行结算风险解除时出现下面错误,MATALINK有关文档看了一下,有类似问题,但又不太一样,看看有什么建议  其他业务均能完成 +------------------ ...

最新文章

  1. 科研经验2:云协作建立实验室工作总结和内部资料共享平台
  2. C#筛法求出范围内的所有质数
  3. mysql转换double_MySQL 字符串转in/double类型——CAST/CONVERT函数的用法
  4. 点权生成树(gentree)
  5. python 浏览器自动化测试,python中使用chrome进行自动化测试,浏览器变量设置
  6. GPS服务端解析程序编写日记之--vs2010中多种语言开发及调试的若干注意事项
  7. 从龙门镖局看自动化测试
  8. 在ABAP debugger里手动trigger DB commit
  9. ios 启用 证书_如何在iOS 10中启用就寝提醒,轻柔的唤醒和睡眠跟踪
  10. csredis封装_ASP.NET Core 2.0下使用Redis——基于CSRedis实现
  11. bigsur正式版clover引导_迟来的OC引导版本升级教程,让大家在更新mac OS Big Sur的时候变得更轻松...
  12. PreferenceScreen 悬浮清除按钮
  13. lora 网关 linux,选择LoRaWAN网关的5大关键 很重要!
  14. 数据结构图---拓扑结构
  15. 【壁纸小程序】搭建自己的壁纸小程序-微信抖音双端
  16. 北京最新道路货物运输驾驶员考试真题题库及答案
  17. VPN的搭建与使用--CentOS7.9(OpenVpn环境配置)
  18. 高德地图定位、画线 基础功能
  19. 我,32岁零基础转大数据,不需要别人怎么看!
  20. [转]键盘上的符号用英语怎么读?

热门文章

  1. PHP数组的详细解读
  2. c#问题(按F1或F2键时触发事件)
  3. SQL Server 本地语言版本
  4. Java中看今天是星期几,礼拜几
  5. 安全使用网上银行 享受在线购物时尚生活
  6. mysql 优化器关联查询_MySQL 查询优化器(二)
  7. rust如何进枪战服_rust手机版
  8. 我开源的软件只能我拿来赚钱
  9. 阿里预面:谈谈你对双亲委派机制的理解?这个名字有啥问题?如何打破?为啥双亲委派?...
  10. 二月,劝 Java 工程师不要跳槽!