ORA-12806: could not get background process to hold enqueue
Cause: Internal error.
Action: This error should not normally occur. If it persists, contact Oracle Support Services.
ORA-12806错误是一种通用编程错误,说明在尝试使用enqueue过程时,工具未能获得一个能够作为保持enqueue的后台进程。
Oracle官方对于ORA-12806错误的解释是:检查并增加特定数据库上可获得的后台进程数量,以确保能够获得enqueue。
触发ORA-12806错误的常见案例有:
(1)Oracle在尝试获取enqueue时,后台进程不足;
(2)有数据库异常活动(包括逻辑备份运行或其他已知进程消耗)占用大量后台进程;
(3)在尝试获取enqueue时,enqueue正在被另一进程占有;
(1)检查init.ora文件确定enqueue_processes参数是否低于运行中的数据库活动所需要的最小值,如果是,就需要增大该参数;
(2)挂起当前可能占有锁的进程,以释放enqueue;
(3)创建一个新的会话执行“Alter system set events”语句;
(4)用“Select status from v$lock”检查是否存在锁等待;
(5)把当前存在的enqueue跟踪到原始请求所在的会话;
(6)取消对原请求的执行,或者对现行的控制文件和日志文件进行备份?
(7)从数据库实例中关闭处于不活动状态的会话,避免继续占用enqueue;
(8)尝试关闭数据库实例并启动;
(9)重新连接到数据库,以确保enqueue在启动时被正确初始化;
(10)检查数据库实例是否正常,以确保可以使用enqueue功能。