该场景在我的Java代码中,其中我创建了一个临时表并将其填充有需要删除的记录,然后通过从临时表中连续获取数据来从各种表中删除记录。一次只从所有表中删除1000条记录,然后提交语句,再次删除下一个1000条记录,并继续循环直到删除所有记录。
sql语句是简单的删除查询。由于数据以百万计且表已建立索引,因此我的事务日志开始填充,并且在代码运行时不允许db将其存档。由于我提交了所有语句,但仍然有一些事务日志并阻止了从存档开始。
我需要知道什么可以锁定事务日志,因为所有语句均按固定间隔提交。 Java中有连接池。执行完全部代码后,连接将关闭。连接或准备好的语句是否可以使事务处于活动状态,从而使其无法归档或进行任何其他处理?
Db是db2,而日志记录是归档日志记录。不能使用循环日志记录,也不能使用NLI命令。
答案 0 :(得分:2)
使用以下查询查找具有最旧事务的应用程序的应用程序ID。
select appl_id_oldest_xact from sysibmadm.snapdb
如果您想知道此(或其他)应用程序发出了哪些语句/事务,请使用事件监视器进行活动。 Configuring data collection for an activity event monitor。
-- Temporarily turn the collection on with the following query
ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA ON COORDINATOR WITH DETAILS
-- Run you workload
-- Turn the collection off
ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA NONE
-- Find the corresponding information in the corresponding event monitor tables
您还可以将有关所有应用程序的信息或具有已知应用程序句柄的单个应用程序的信息收集到此监视器的表中。 Collecting data for individual activities。