我的Oracle 11g数据库有一个表 FILE_CONTROL
,看起来像
file_id | file_path | file_name | status
--------------------------------------------
1 /my/path myfile1.dat COMPLETE
2 /my/path myfile2.dat PENDING
3 /my/path myfile3.dat COMPLETE
4 /my/path myfile4.dat PENDING
5 /my/path myfile5.dat PENDING
这个 table 上总共有2个守护进程 .
守护进程 D1
在此表中插入新行并将状态设置为 'PENDING'
. 另一个守护进程 D2
从此表中选择status = 'PENDING'
,并在完成处理文件时将状态更改为 'COMPLETE'
.
我想编写一个cron作业,每小时报告一次 PENDING
文件的数量,但是我不能使用这个SQL
select count(*) from FILE_CONTROL where status = 'PENDING'
因为守护进程总是阻塞表中的某些行 . 阻塞时间有时可能需要1个多小时 . 我无法控制这些守护进程,也无法编辑其源代码,因此我无法更改阻止表的行为 .
Is it possible to count rows from this table by ignoring the blocked rows, I only want an approximate number of files.