Oracle-数据库组件invalid问题处理

时间:2024-01-10 01:02:46 标签:  oracle  数据库  Dba  oracle  运维  

前言:

        近期处理了一起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权限

来源:https://blоg.сsdn.nеt/sinаt_36757755/аrtiсlе/dеtаils/127798017

智能推荐

前言:         近期处理了一起Oracle

标签:oracle  数据库  Dba  oracle  运维  

一、什么是高水线(High Water Mark)?Oracle 数据库在创建一张表时,会为这张表分配一个段空间(segment),为了方便理解,把段空间容纳数据的上限,称之为高水位线(HIGH WATER MARK) HWM ,HWM是一个标记,用来说明表示有多少未使用的块分配给这个段。两个结论:1.水位线以上表示已经分配但还未使用块(block),水位先以下爱表示已经分配且已经使用过的块(包含了正在使用的块和使用过的且被删除了数据的空块)2.理论上来说,一张表的水位线只会增大不会减小(除非通过特殊的方法重置),即使将表中的数据全部删除,HWM还是为原值。二、HWM数据库的操作有如下影响:a) 全表扫描通常

标签:水位  数据库  oracle  

近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。思考:基于以下原因,建议对失效对象进行处理:1、通过失效的对象,可能能够反推发现业务软件问题(业务系统功能太多,可能存在测试不充分的问题);2、如果失效对象太多,业务又频繁调用的话,担心影响数据库性能(未进行测试,个人想法,如有错误请大家指正)

标签:对象  数据库  oracle  

本文分享自天翼云开发者社区《大数据通用组件故障处理》,作者:f****nHDFS1.HDFS 服务一直异常

标签:组件  故障处理  数据  

一、背景 发现一个10.19号的任务下午还没跑完&

标签:hive  hive  hadoop  数据仓库  

一、数据采集:        1.1  Flume集群:

标签:大数据  Kafka  分布式  大数据  

Ⅰ 数据库  ①层次型数据库  ②网状型数据库

标签:数据库  oracle  

一、背景介绍

标签:linux  数据库  oracle  数据库  Dba  

导读本文是线上问题处理案例系列之一,旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象,逐步定位到数据库连接池保活问题的全过程,并对其中用到的一些知识点进行了总结。一、问题描述大促期间,某接口超时次数增多,经排查直接原因是GC耗时过长,查看监控FullGC达500ms以上,接口超时时间与FullGC发生时间吻合。

标签:线上  出乎意料  案例  数据库  连接池  

什么是数据倾斜 Hadoop能够进行对海量数据进行批处理的核心,在

标签:hadoop  大数据  MapReduce  scala  spark  

Oracle转达梦数据库 针对 null 和 空字符串的处理 最近在进行 Oracl

标签:异常问题记录  oracle  数据库  

问题背景: 在Oracle19c进行19.15RU

标签:oracle  数据库  oracle  Dba  运维  

1.trunc 函数  截断函数既可以截取日期 也可以截取数字  返回今天的日期 select trunc(sysdate)  from dual; --07-6月 -20      返回昨天的日期 select trunc(sysdate-1) from dual;  返回当月第一天 select trunc(sysdate,mm)  from dual; --01-6月 -20   返回当年第一天 三种写法 select trunc(sysdate,yy)  from dual; --01-1月 -20  

标签:函数  日期  oracle  

Oracle数据库复习目录Oracle数据库复习数据库完整性SQL语言DDL数据库定义语言DML数据库操纵语言 Insert Update Delete表的建立、修改、删除 Table查询单表查询连接查询子查询与集合操作分页数据删除的恢复 FlashBackPL/SQL程序控制结构 If Case Loop While For GoTo函数

标签:数据库  oracle  

1.创建对应的directory目录 切换oracle

标签:oracle  数据库  

猜你喜欢

前言         这是我在学习数字图像处理这门课程时,从网络上

标签:图像处理  

前言         这是我在学习数字图像处理这门课程时,从网络上

标签:图像处理  

xml为:<Items><item xmlns=0><ItemId>32</ItemId></item></Items>Oracle中通过xml获取数据: SELECT *FROM XMLTABLE(XMLNAMESPACES(0 AS ns1), /Items/ns1:item PASSING XMLTYPE(<Item

标签:数据  XVM  oracle  XML  Invalid  

准备工作:    1、核对数据字符集:        &nbsp; 一般Oracle在安装的时候默认是选择ZHS16GBK,如有改动,使用 select userenv(language) from dual;语句查看使用的字符集,确保两边的字符集一致。     不一致的情况下,在导入数据时,可能回到字段长度变长导致数据写入失败,甚至乱码等情况。&nbsp;    2、创建表空间:       创建表空间时,可以根

标签:数据库  文件  系统  oracle  win  

1.Oracle数据库安装1.1.整合PL/SQL Developer软件1.点击Tools—>Preferences—>Connection连接,填写连接信息:

标签:一文  数据库开发  数据库  地图  知识  

数据泵导入Oracle数据库一.sqlplus登录目标数据库,创建导入的目录路径#该目录要在导入的数据库本机建立,如果是docker就在容器内部创建create directory data_dir as /home/oracle/prd_imp/prd_dump;data_dir为路径名称,可自命名。路径是导出的dmp文件存放的路径必须存在。查询

标签:分片  数据库  文件  数据  impdb  

有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式。我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况)。这时候就要用到css的动画了这是第一版,也是错误的版本下面是jsx的代码<BackTop> <div className=normal-top></div></B

标签:组件  背景图片  动态  antd  BackTop  

迁移命令  Add-Migration t1  Update-Dat

标签:Asp.net Core  .netcore  

当我们使用SqlSugar框架时,一般都会通过Visual Studio的NuGet安装SqlSugar,安装完成后只把SqlSugar.dll引入项目。在使用SqlSugar连接Oracle数据库就会报如下图所示错误:错误信息中提示可通过NuGet安装Oracle.ManagedDataAccess,这样操作后,会下载大量互相引用的程序包,但最终问题依然没有解决。所以这种方法不可取。

标签:报错  数据库  方法  oracle  SqlSugar  

Oracle SQL*Plus常用命令一、SYS用户和System用户Oracle安装会自动的生成SYS用户和System用户。1) SYS用户时超级用户,具有最高权限,具有SYSDBA角色,有CREATE DATABASE的权限,该用户默认的密码是change_on_install;

标签:入门  数据库  oracle  

数据库分类一、数据库分类1、小型数据库:Access、FoxBase;2、中型数据库:Informix、SQL Server、MySQL;3、大型数据库:SyBase、DB2、Orac

标签:入门  数据库  oracle  

当我们在Linux系统中&#xff0c;安装好oracle后&#xff0c;该怎么连接plsql呢

标签:数据库  oracle  

1.创建用户、赋权限、删除用户drop tablespace test_tbs including contents cascade constraints; --删除表空间create

标签:语句  数据库  oracle  sql  

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSqlDatabase数据库模块的常用方法及灵活运用。Qt SQL模块是Qt框架的一部分,它提供了一组类和函数,用于在Qt应用程序中进行数据库操作。这个模块的目标是简化数据库访问和操作,并提供一致的接口,使得开发者可以方便地与不同数据库系统进行交互。一般SQL组件常用的操作,包括读取数据、插入数据、更新数据、删除数据功能,这四个功能我将分别介绍它是如何使用的。在使用此模块时必须要引入对应文件,需要在*.pro文件内增加

标签:组件  数据库  qt  QSqlDatabase  

一、密码包含了&#64;等特殊字符导致disql无法直接连接和运行。需要通过转移符来处理。disql

标签:Dba  数据库开发  数据库架构  数据仓库  

一、数据库的启动与关闭1.1、数据库启动过程1.2、数据库启动命令STARTUP1.3、更改数据库状态ALTER DATABASE MOUNT;

标签:学习笔记  实例  数据库  oracle  

在数据读多写少的情况下作为缓存来使用,恐怕是Redis使用最普遍的场景了。当使用Redis作为缓存的时候,一般流程是这样的。如果缓存在Redis中存在,即缓存命中,则直接返回数据如果Redis中没有对应缓存,则需要直接查询数据库,然后存入Redis,最后把数据返回

标签:性问题  数据库  数据  redis  

相关问题

相关文章

热门文章

推荐文章

相关标签