我的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.