Database 在Oracle中,在不持有锁的情况下导出一天数据
我必须编写一个脚本,从一个表中提取一天的数据并将其转储到另一个表中(我的另一个进程将在其中处理该数据)。但是,我要从中导出数据的表是一个“活动”表,它具有大量插入。任何类型的锁定(在导出过程中)都是不可接受的。我知道mysql有一种不通过“-skip lock tables”标志持有锁的方法。甲骨文有类似的东西吗?如果没有,实现这一目标的最佳方式是什么Database 在Oracle中,在不持有锁的情况下导出一天数据,database,oracle,oracle12c,Database,Oracle,Oracle12c,我必须编写一个脚本,从一个表中提取一天的数据并将其转储到另一个表中(我的另一个进程将在其中处理该数据)。但是,我要从中导出数据的表是一个“活动”表,它具有大量插入。任何类型的锁定(在导出过程中)都是不可接受的。我知道mysql有一种不通过“-skip lock tables”标志持有锁的方法。甲骨文有类似的东西吗?如果没有,实现这一目标的最佳方式是什么 正在使用的Oracle版本是-Oracle SE One 12.1.0.1.v2在SELECT启动时,一个SCN连接到您的SELECT。SCN之
正在使用的Oracle版本是-Oracle SE One 12.1.0.1.v2在SELECT启动时,一个SCN连接到您的SELECT。SCN之后对数据的任何更改都不会影响您的选择。选择从“撤消”读取旧数据。如果这是一个高事务表,并且希望SELECT长期运行,请确保有足够的撤消空间和足够的撤消保留 同时,关注好的设计可以防止任何潜在的问题。从这个角度来看,我建议在源表上实现每日分区。这将有助于轻松备份一天的数据,并有助于将来维护该表
希望这能有所帮助。@Tim:read-only查询在Oracle中不带锁。此表中是否有任何列可用于按记录的年龄排序?@TimBiegeleisen-是的,有一个列条目\u date类型为timestamp。@TimBiegeleisen:在Oracle中绝对不需要“批量读取”。简单的select语句不会影响其他会话。在Oracle中,读卡器不会阻止编写器,编写器也不会阻止读卡器。唯一的问题(正如ArtBajji指出的)是撤销的大小。另外:如果真的“成批”完成,它将不再是数据的事务一致性视图。@a_horse_,没有名字供我自己学习,如果在读取开始后对记录执行DML语句,会发生什么?甲骨文如何处理这一问题?