我正在通过当前执行大量DML语句的批处理进行调试,但不会立即执行提交.能够在未提交事务时查看来自另一个会话的“待定”更改将会很高兴.这可能吗?
例:
Insert into table myTable (col1,col2) values ("col1","col2"); --Somehow view the pending transaction maybe by system view?.... ...other DML statements.... commit;
根据批处理过程的详细信息以及尝试查看未提交的更改的原因,有几种不同的方法.
原文链接:/oracle/205315.html1)Oracle Workspace Manager是一种工具,最初设计用于允许人们开发Spatial应用程序具有相当于极长时间运行的事务(即可能需要数天或数周的人类确定在一个事务中运行管道的位置的事务).您的批处理过程可以创建一个新的工作区(在逻辑上就像创建一个新的事务),在需要时随时提交它所需的任何更改.在单独的会话中,在进入批处理工作区之前,您不会看到任何已提交的更改.批处理完成后,它可以将其工作空间合并回实时工作空间,这相当于提交事务.
2)DBMS_XA package可用于允许您将事务从一个会话“切换”到另一个会话,并允许一个会话连接到另一个会话启动的事务.这是一个非常模糊的软件包,但最近有一个很好的例子,可以在PL/SQL Challenge中使用它(你可能需要一个免费帐户来访问它).
3)如果您只是想查看批处理过程的状态而不是查看实际数据,批处理过程可以使用您可以从另一个会话查询的自治事务来编写日志记录信息.或者您可以使用DBMS_APPLICATION_INFO package让您的应用程序在V $SESSION和/或V $SESSION_LONGOPS中更新各种属性,以便您可以监视来自另一个会话的加载状态.