ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS
使用orachk工具检查数据库实例的时候,发现报告里面有类似下面这样一些错误(最近有给Oracle 10g应用补丁PSU 10.2.0.5.180717,不清楚是这个产生的还是其他原因导致),使用脚本检查,发现有很多INVALID对象(具体参考[转载]—Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1))
[W] - P_OBJ#=37817 D_OBJ#=38416
[W] - P_OBJ#=38014 D_OBJ#=38605
[W] - P_OBJ#=38020 D_OBJ#=38611
[W] - P_OBJ#=38043 D_OBJ#=38634
[W] - P_OBJ#=38061 D_OBJ#=38652
[W] - P_OBJ#=38064 D_OBJ#=38655
[W] - P_OBJ#=38087 D_OBJ#=38678
[W] - P_OBJ#=38090 D_OBJ#=38681
select
do.obj# d_obj,do.name d_name, do.type# d_type,
po.obj# p_obj,po.name p_name,
to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",
to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",
decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X
from sys.obj$ do, sys.dependency$ d, sys.obj$ po
where P_OBJ#=po.obj#(+)
and D_OBJ#=do.obj#
and do.status=1 /*dependent is valid*/
and po.status=1 /*parent is valid*/
and po.stime!=p_timestamp /*parent timestamp not match*/
order by 2,1;
然后在执行编译一些INVALID对象时遇到了下面错误ORA-04045,如下所示:
SQL> alter public synonym "SM$VERSION" compile;
alter public synonym "SM$VERSION" compile
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS
ORA-04064: not executed, invalidated
ORA-04064: not executed, invalidated package body "LBACSYS.LBAC_EVENTS"
ORA-06508: PL/SQL: could not find program unit being called:
"LBACSYS.LBAC_EVENTS"
ORA-06512: at line 2
ORA-06508: PL/SQL: could not find program unit being called:
"LBACSYS.LBAC_EVENTS"

如下所示,LBACSYS下有很多INVALID对象,最奇怪的是,执行了上面脚本,会触发ORA-04045,似乎还会导致其他会话执行脚本时也触发这个错误:
SQL> col comp_name for a36;
SQL> col version for a30;
SQL> col version for a10;
col status for a8;
select comp_id, comp_name, version, status
from dba_registry
where comp_name='Oracle Label Security';
COMP_ID COMP_NAME VERSION STATUS
------------------------------ ------------------------------------ ---------- --------
OLS Oracle Label Security 10.2.0.5.0 VALID
SQL>
SQL> select * from v$option where parameter = 'Oracle Label Security';
PARAMETER VALUE
---------------------------------------------------------------- --------------
Oracle Label Security FALSE
SQL>

Tue Jun 25 20:15:01 HKT 2019
Errors in file /u01/app/oracle/admin/xxx/udump/xxx_ora_11203.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS
ORA-04064: not executed, invalidated
ORA-04064: not executed, invalidated package body "LBACSYS.LBAC_EVENTS"
ORA-06508: PL/SQL: could not find program unit being called: "LBACSYS.LBAC_EVENTS"
ORA-06512: at line 2
ORA-06508: PL/SQL: could not find program unit being called: "LBACSYS.LBAC_EVENTS"
ORA-06512: at line 2
[oracle@xxxxx bdump]$ more /u01/app/oracle/admin/xxxx/udump/xxx_ora_11203.trc
/u01/app/oracle/admin/EPPS/udump/epps_ora_11203.trc
Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: xxxx
Release: 2.6.32-200.13.1.el5uek
Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011
Machine: x86_64
Instance name: xxx
Redo thread mounted by this instance: 1
Oracle process number: 48
Unix process pid: 11203, image: oracle@xxxx (TNS V1-V3)
*** ACTION NAME:() 2019-06-25 20:15:01.745
*** MODULE NAME:(sqlplus@xxxx (TNS V1-V3)) 2019-06-25 20:15:01.745
*** SERVICE NAME:(SYS$USERS) 2019-06-25 20:15:01.745
*** SESSION ID:(113.2150) 2019-06-25 20:15:01.745
Error in executing triggers on connect internal
*** 2019-06-25 20:15:01.750
ksedmp: internal or fatal error
ORA-00604: error occurred at recursive SQL level 1
ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS
ORA-04064: not executed, invalidated
ORA-04064: not executed, invalidated package body "LBACSYS.LBAC_EVENTS"
ORA-06508: PL/SQL: could not find program unit being called: "LBACSYS.LBAC_EVENTS"
ORA-06512: at line 2
ORA-06508: PL/SQL: could not find program unit being called: "LBACSYS.LBAC_EVENTS"
ORA-06512: at line 2
当时参考“ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS”这篇文章做了如下处理,告警日志里面不会出现ORA-04045错误了,但是如果我使用
上面的语句编译INVALID对象。就又会触发这个错误出现。似乎这种方法是指标不治本
shutdown immediate;
startup migrate;
alter view lbacsys.lbac$all_table_policies compile;
alter package lbacsys.lbac_events compile body;
shutdown immediate;
startup;
最后参考官方文档“ORA-07445 [zllcini] or ORA-04045 in a Database with OLS Set to FALSE (文档 ID 233110.1)“给出解决方案:
ORA-4045 related to LBACSYS.LBAC_EVENTS
---------------------------------------
ORA-00604: error occurred at recursive SQL level 1
ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 2
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 2
Solution Description
--------------------
1. Install Oracle Label Security with the Oracle Universal Installer
2. Run $ORACLE_HOME/rdbms/admin/catnools.sql script to disable OLS
3. Optionally de-install 'The Label Security' software
Explanation
-----------
The Oracle Universal Installer may install OLS components in some cases:
patchset apply
解决方案:
1:卸载Oracle Label Security
@?/rdbms/admin/catnools.sql
2:运行/tmp/compiling.lst重编译失效对象
3:运行@?/rdbms/admin/catols.sql脚本安装Oracle Label Security
第三步可以做也可以不做,是具体情况而定。
参考资料:
http://www.itpux.com/thread-568-1-1.html
ORA-07445 [zllcini] or ORA-04045 in a Database with OLS Set to FALSE (文档 ID 233110.1)
ORA-04045: errors during recompilation/revalidation of LBACSYS.LBAC_EVENTS的更多相关文章
- 误删除AUD$所在的表空间,无法切换用户
问题故障:数据库Open,无法切换普通用户: ---递归SQL无法执行 SQL> conn hr/hr ERROR at line 1: ORA-00604: error occurred ...
- Oracle10g使用$ORACLE_HOME/rdbms/admin/awrrpt.sql报错
Enter value for report_name: Using the report name awrrpt_1_591_593.htmlselect output from table(dbm ...
- 记录一次Oracle导入数据库失败的解决办法,最终报错:UDI-04045、ORA-04045、ORA-01775
费了很大的工夫,终于解决了.做个记录. ******************************************************************************** ...
- Oracle的静默安装 升级和卸载 参考规范
Oracle的静默安装 升级和卸载 参考规范 20180912 V1 一.Oracle的安装 Oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3. ...
- Oracle数据库迁移--->从Windows到Linux
I did a practice to migrate the oracle database from windows to linux operation system. The followin ...
- 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复
[RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...
- Oracle Study之--Oracle 单实例11.2.0.1.0升级到11.2.0.3.0
Oracle Study之--Oracle 单实例11.2.0.1.0升级到11.2.0.3.0 系统环境: 操作系统:RedHat EL6(64位) Oracle: Oracle 11gR2 ...
- 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)
探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言: Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...
- oracle重新编译失效对像
重新编译失效对像可执行utlrp.sql文件: SQL> @?/rdbms/admin/utlrp.sql TIMESTAMP --------------------------------- ...
随机推荐
- C# ThreadPool 线程池
Thread与ThreadPool Thread: .NetFramework1.0 对线程对象的一个封装 Thread方法很多很强大,但是太过强大,而且没有限制 功能繁多,反而用不好--就像给4岁 ...
- Kubernetes行业调研报告:多集群、多云部署成企业首选策略
新兴的多集群.多云部署成为首选的企业策略,而边缘部署则呈上升趋势 2019年11月5日,业界采用最广泛的Kubernetes管理平台创造者Rancher Labs(以下简称Rancher)发布了首份调 ...
- Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2
一.Unicode.UCS.GBK 1.开始计算机只在美国用.八位的字节一共可以组合出256(2的8次方)种不同的状态.把这些0×20以下的字节状态称为”控制码”.他们又把所有的空 格.标点符号.数字 ...
- mysql中skip-grant-tables无效
今天我登录MySQL时,MySQL竟然报出这样的错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using pass ...
- centeros系统之上传下载文件
安装lrzszlrzsz这个软件,可以让我们直接从linux上,下载和上传文件的操作 yum install -y lrzsz11.上传文件通过输入 rz命令,可以弹出上传文件的对话框,然后就可以上传 ...
- [Go] 实现面向对象中的继承和覆盖方法
go中的继承是使用结构体嵌套实现的,可以继承父类的方法 覆盖和其他面向对象的语言是一样的,函数名,参数,返回类型一致,就可以覆盖父类的方法 package main import "log& ...
- Linux系统学习 二十、SAMBA服务—介绍、安装、端口
1.简介 网络数据文件共享服务器 可以和Windows中的网上邻居通用 数据共享的方法: Windows中最常用的是“网上邻居”.网上邻居使用的文件系统是CIFS(通用互联网文件系统)协议进行数据共享 ...
- 数组类的创建——DynamicArray.h
完成DynamicArray类的具体实现 DynamicArray设计要点——类模板 动态确定内部数组空间的大小 实现函数返回数组长度 拷贝构造和赋值操作 DynamicArray类的声明 templ ...
- 关于String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
关于 String path = request.getContextPath(); String basePath = request.getScheme()+"://"+req ...
- 什么是java变量,java变量是什么
什么是变量,变量是什么 1.1. 什么是变量 在日常生活中,人们会用到大量数据,像去ATM机取款,首先,需要插入银行卡,这个过程其实就是ATM机的系统在获取银行卡号这个数据,而后,输入密码,这个过程也 ...