ORA-44204: library cache object string.string found in an in-flux state ORACLE 报错 故障修复 远程处理

文档解释

ORA-44204: library cache object string.string found in an in-flux state

Cause: The pseudo-cursor depends on a table which was found to be obsolete due to metadata invalidation of the library cache object.

Action: Contact Oracle Support Services for additional information.

ORA-44204表示在FLUX状态下发现了library cache对象(又被称为一条Library Cache Lock),主要是因为当前被加载的对象正在被使用,但仍然有另一个进程正在尝试加载该对象。

官方解释

ORA-44204表示系统正在检测到给定名称的library cache对象已被加载,但同时仍然有另外一个进程正在尝试加载它,这会在某些特定的情况下产生混乱,因此需要检查给定的library cache对象。

常见案例

1. 如果您正在使用并发执行(PX)类型的查询,那么如果某个SQL正在多个会话中,并且有若干进程正在尝试获取它那可能会导致library cache lock错误。

2. 另一个可能的案例是,如果您使用相同的表创建唯一索引并且某个当前活动连接正在尝试创建同一个唯一索引,那么它会发出ORA-44204错误.

正常处理方法及步骤

1. 检查是否有任何进程正在尝试加载给定库cache对象。 确认在尝试加载object之前,确实有进程正在使用它。 如果没有,那么它可能只是一种外部环境问题(比如,正在等待给定的行或表锁)。

2. 查看并kill正在尝试加载库cache对象的进程

3. 使用DBMS_SHARED_POOL来清理脏的library cache。

4. 检查library cache 对象是否可以被open,以及能否从v$resource_limit视图中检查到。

5. 调整library cache 内存大小以释放可用内存(如何调整library cache大小:登陆到SQL,输入ALTER SYSTEM SET SHARED_POOL_SIZE=value,其中value为指定的值)。

6. 重启数据库。


数据运维技术 » ORA-44204: library cache object string.string found in an in-flux state ORACLE 报错 故障修复 远程处理