Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在Oracle中,在不持有锁的情况下导出一天数据_Database_Oracle_Oracle12c - Fatal编程技术网

Database 在Oracle中,在不持有锁的情况下导出一天数据

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之

我必须编写一个脚本,从一个表中提取一天的数据并将其转储到另一个表中(我的另一个进程将在其中处理该数据)。但是,我要从中导出数据的表是一个“活动”表,它具有大量插入。任何类型的锁定(在导出过程中)都是不可接受的。我知道mysql有一种不通过“-skip lock tables”标志持有锁的方法。甲骨文有类似的东西吗?如果没有,实现这一目标的最佳方式是什么


正在使用的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语句,会发生什么?甲骨文如何处理这一问题?