前言:

近期处理了一起Oracle数据库组件出现大量invalid的问题,分析发现是由于一些系统包的public公共用户权限丢失导致,相关的组件用户无法方法这些系统包,致使数据库组件大量出现invalid的问题。

问题:

数据库组件出现状态大量的invalid

问题分析:

查询组件用户的失效对象数量

select owner,status,count(*) from dba_objects where  status='INVALID' and owner in ('LBACSYS','OLAPSYS','CTXSYS','WMSYS','XDB','MDSYS')group by owner,status;

可以发现出现组件用户出现大量的失效对象

查看失效对象编译的错误原因

set linesize 200
set pagesize 10000
col owner for a10
col name for a20
col text for a100
select owner,name,line,text
from dba_errors
where owner in ('LBACSYS','OLAPSYS','CTXSYS','WMSYS','XDB','MDSYS')
order by owner,name,line;

可以发现,错误大部分都是调用包出现未声明的情况,这些包DBMS_SQL,DBMS_SCHEDULER,UTL_FILE都是数据库自带的一些包,而现在出现调用未声明的情况,说明组件的相关用户没有权限是调用这些包

而调用这些包的权限,通常都是通过授予public公共用户,从而使相关组件用户有权限进行调用的,所以,我们获取了当前环境的public对象的execute权限与组件正常环境权限进行了比对


set linesize 400
set pagesize 400
col privilege for a20
col owner for a20
select grantee,PRIVILEGE,owner,table_name
from dba_tab_privs
where grantee='PUBLIC' and PRIVILEGE='EXECUTE';

发现了以下包权限存在丢失的情况,而这些对象跟之前包编译报错的包是一致的

EXECUTE ON DBMS_LOB TO public ;
EXECUTE ON UTL_TCP TO public ;
EXECUTE ON UTL_HTTP TO public ;
EXECUTE ON DBMS_SQL TO public ;
EXECUTE ON UTL_FILE TO public ;
EXECUTE ON DBMS_XMLGEN TO public ;
EXECUTE ON UTL_SMTP TO public ;
EXECUTE ON DBMS_JOB TO public ;
EXECUTE ON DBMS_SCHEDULER TO public ;
SELECT ON ALL_USERS TO public;

问题原因:

数据库组件出现大量invalid的问题,是由于一些系统包的public公共用户权限丢失导致,相关的组件用户无法方法这些系统包,致使数据库组件大量出现invalid的问题。

问题修复:

对丢失的权限重新进行授权,并重新进行数据库组件编译

---权限授权
GRANT EXECUTE ON DBMS_LOB TO public ;
GRANT EXECUTE ON UTL_TCP TO public ;
GRANT EXECUTE ON UTL_HTTP TO public ;
GRANT EXECUTE ON DBMS_SQL TO public ;
GRANT EXECUTE ON UTL_FILE TO public ;
GRANT EXECUTE ON DBMS_XMLGEN TO public ;
GRANT EXECUTE ON UTL_SMTP TO public ;
GRANT EXECUTE ON DBMS_JOB TO public ;
GRANT EXECUTE ON DBMS_SCHEDULER TO public ;
GRANT SELECT ON ALL_USERS TO public;
---重新编译
@?/rdbms/admin/utlrp

组件状态重新变为valid

set linesize 200
Col Comp_name Format a40
col schema for a20
com comp_id for a20
Col Status Format a12
Select comp_id,Comp_name, status, Version,schema
From Dba_Registry
Order by Comp_name;

其他问题:

对于public公共用户权限为何会出现丢失?

可能是以下原因导致

1 在数据库升级迁移的过程中public权限没有跟随迁移,导致丢失

2 用户在进行数据库安全改造的过程中,回收了public权限

Oracle-数据库组件invalid问题处理相关推荐

  1. oracle数据库各组件介绍,Oracle 数据库 组件相关说明【第一部分】

    参考MOS文档: Information On Installed Database Components and Schemas (文档 ID 472937.1) Oracle 组件可以通过下面的S ...

  2. Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法

    场景 打开Navicat-文件-新建连接-Oracle 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书. ...

  3. java olap oracle_【案例】Oracle数据库升级OLAP组件异常 删除OLAP组件

    天萃荷净 Oracle研究中心案例分析:在升级完一套Oracle数据库后发现OLAP组件出现异常,详细记录如何删除OLAP组件的过程. 本站文章除注明转载外,均为本站原创: 转载自love wife ...

  4. Navicat连接Oracle数据库失败,提示无效的用户名和密码(Invalid username and password)

    1.Navicat是一款非常好用的数据库管理工具,可是一段时间没有使用,突然发现之前建立的Oracle连接无法打开,提示要输入旧密码和新密码以及确认新密码,在Navicat管理工具中连接之前超过180 ...

  5. 数据字典在sga的哪一个组件中缓存_【赵强老师】Oracle数据库的内存结构

    首先,我们通过一张图片来了解一下Oracle数据库的内存结构,如下: 每个数据库实例有两个关联的内存结构-系统全局区(SGA),程序全局区(PGA). 系统全局(SGA):一组共享的内存结构(称为SG ...

  6. oracle11g数据库登录01017,sqlplus登录Oracle时ORA-01017: invalid username/password; logon denied的错误...

    今天用scott用户登录Oracle数据库时,竟然出现了ORA-01017: invalid username/password; logon denied错误,原以为是因为我的scott用户没有解锁 ...

  7. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]

    [2021] node连接oracle数据库示例[使用oracle官方组件] node 连接 oracle 示例 本示例采用的 oracledb 和 instantclient-basic-windo ...

  8. bde怎么配置oracle数据库,Oracle数据访问组件ODAC教程:如何从BDE和DOA迁移

    ODAC(Oracle Data Access Components )是一个Oracle数据访问组件.ODAC可以为Oracle提供本地连接(Delphi, Delphi for .NET, C++ ...

  9. SpringBoot连接Oracle数据库报ORA-01017: invalid username/password; logon denied

    目录 一.报错如下图: 二.lz的环境版本 三.解决方式 四.lz报错的原因 一.报错如下图: 问题描述 lz用sqlplus或者navicat客户端连接oracle数据库正常连接,但是在项目中运行一 ...

最新文章

  1. 数据中心的未来:一体化无人值守
  2. iOS设计模式(03):工厂方法
  3. QEMU 网络虚拟化
  4. HDU2602 (0-1背包)
  5. [vue] 有在vue中使用过echarts吗?踩过哪些坑?如何解决的?
  6. 简洁又快速地处理集合——Java8 Stream(下)
  7. 洛谷P1279 字串距离 (动态规划)
  8. java ee是什么_死磕 java集合之HashSet源码分析
  9. esp mounter pro_对比 | 以大欺小?剑指宋Pro和哈弗H6,欧尚X7的黑马潜质从何而来?...
  10. ARM CORTEX-M0 权威指南 英文
  11. Mac删除Windows10后空间丢失解决
  12. 区块链入门教程,这一篇就足够了
  13. ojdbc6不能使用的解决办法
  14. 番茄花园xp开机音乐_抱歉,Windows XP的开机音乐骗了你20年
  15. matlab仿真AMI码变换,matlab编程
  16. 计算机表格外边框颜色怎么设置,#表格外部框线设置颜色#如何把excel里所有边框颜色改变...
  17. 玩数字域名投资有风险吗 风险与机遇并存
  18. vue-element-admin基础学习
  19. 第七章集合与字典作业
  20. G.7xx的音频编码方式与带宽计算

热门文章

  1. 3.5mm耳机喇叭和麦克接头差异
  2. [转]花了500学的seo课程教程笔记公布
  3. Python 爬虫 中国行政区划信息爬取 (初学者)
  4. 近3千多道小学语数英知识题ACCESS数据库
  5. node+express 搭建商城项目(2-建立 Mysql链接 完成注册账号接口)
  6. 出行者信息服务器,出行者信息服务系统解析.ppt
  7. 自然语言处理(NLP)发展历程(1),什么是自然语言处理?
  8. 联想服务器改为win7系统,联想电脑怎么把Win10系统改为win7系统?
  9. 大三期末前端页面开发论文
  10. 自媒体注意了:借着315今日头条关闭了一批头条号账号