在事务回滚时处理全局临时表中的数据



我有一个使用多个实例运行的作业,即所有实例的代码库都是相同的,但每个实例都在分配给它的数据集上工作,以实现应用程序的并行性和更好的吞吐量。 这些作业使用全局临时表来处理数据,因为在计算最终输出之前会执行多个复杂的操作。 如果失败,事务将回滚(应有的(,但这样一来,我也丢失了 gtt 中的数据。

有没有办法在回滚事务时将 gtt 中的记录复制到另一个永久表。 我知道这听起来很奇怪,但这是我面临的一个实际问题。 我需要以某种方式将数据存储在会话表中,以防任何 sql 失败,同时回滚事务,因为其中一个 sql 失败了。

谢谢。

嗯,也许是这样的:

  • 创建一个永久表,该表将在发生故障时保存 GTT 数据
  • 创建一个insert into permanent select * from gttcommit的自主交易程序
  • 在异常处理程序部分中调用该过程,然后rollback

唯一的方法是在回滚之前打印所需的数据。

您可以使用UTL_FILE在文件中存储数据。稍后,您可以使用 oracle 的概念来检索表中external table数据。

干杯!!

相关内容

  • 没有找到相关文章

最新更新