Oracle数据库失效对象处理

Oracle数据库失效对象处理近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。 思考: 基于以下原因,建议对失效对象进行处理

Oracle数据库失效对象处理

近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。

思考:

基于以下原因,建议对失效对象进行处理:

1、通过失效的对象,可能能够反推发现业务软件问题(业务系统功能太多,可能存在测试不充分的问题);

2、如果失效对象太多,业务又频繁调用的话,担心影响数据库性能(未进行测试,个人想法,如有错误请大家指正);

处理方式:

1、先搜索发现失效对象(在sys用户下执行)

select owner, object_name, object_type, status  from dba_objects t  where status="INVALID"  order by t.owner,t.object_type;

2、对失效对象自动生成重编译语句,进行重编译

下面是为视图、函数、物化视图、包、触发器的生成语句。

--自动生成视图重新编译语句
select owner, object_name, object_type, status  ,"alter view " || t.owner||"." || object_name || " compile"||";"
from dba_objects t  
where status="INVALID" and t.object_type="VIEW"  order by t.owner,t.object_type;
--自动生成函数重新编译语句
select owner, object_name, object_type, status  ,"alter FUNCTION " || t.owner||"." || object_name || " compile"||";"
from dba_objects t  
where status="INVALID" and t.object_type="FUNCTION"  order by t.owner,t.object_type;
--自动生成视物化图重新编译语句
select owner, object_name, object_type, status  ,"alter MATERIALIZED VIEW " || t.owner||"." || object_name || " compile"||";"
from dba_objects t  
where status="INVALID" and t.object_type="MATERIALIZED VIEW"  order by t.owner,t.object_type;
--自动生成包重新编译语句
select owner, object_name, object_type, status  ,"alter PACKAGE " || t.owner||"." || object_name || " compile"||";"
from dba_objects t  
where status="INVALID" and t.object_type="PACKAGE BODY"  order by t.owner,t.object_type;
--自动生成触发器重新编译语句
select owner, object_name, object_type, status  ,"alter TRIGGER " || t.owner||"." || object_name || " compile"||";"
from dba_objects t  
where status="INVALID" and t.object_type="TRIGGER"  order by t.owner,t.object_type;

生成语句后复制处理批量执行即可。

3、重新编译应该会解决掉一部分的失效对象,但是仍然会有部分对象无法通过重新编译解决。对于这部分对象,需要进行人工的逐个分析,现场可以确认的进行确认处理(有用则修改,无用则删除),现场不能确认的可以和研发确认,最终完成对失效对象处理的目的。

如果最终仍有部分无人可以确认,建议先暂时保留即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6204.html

(0)
上一篇 2023-04-15
下一篇 2023-04-15

相关推荐

  • Redis学习笔记(十九) 发布订阅(上)「建议收藏」

    Redis学习笔记(十九) 发布订阅(上)「建议收藏」Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息,它的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。

    2023-03-10
    113
  • 如何使用 SQL CREATE TABLE 创建新表[亲测有效]

    如何使用 SQL CREATE TABLE 创建新表[亲测有效]本文介绍如何使用 SQL CREATE TABLE 创建新表,DROP TABLE 用来完整地删除一个表,ALTER TABLE 用来更改表列或其他诸如约束或索引等对象。 一、创建表 SQL 不仅用于

    2023-05-17
    100
  • fresco缓存原理_常见的缓存策略

    fresco缓存原理_常见的缓存策略对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端

    2023-05-01
    116
  • Python正则表达式解析实现

    Python正则表达式解析实现Python中的正则表达式是一种常用的文本处理工具,通过使用一定的符号表示法来描述字符集合、分组、重复等规则,对文本进行匹配、查找、替换等操作。在Python中,re模块就是专门用于正则表达式操作的标准模块,它提供了一系列强大而灵活的函数和方法,可以满足各种不同的文本处理需求。

    2024-03-24
    32
  • redis速度慢_数据库性能慢了

    redis速度慢_数据库性能慢了本篇为Redis性能问题诊断系列的第四篇,也是最后一篇,主要从应用程序、系统、服务器硬件及网络系统等层面上进行讲解,重点分享了哪些配置需要重点关注和调整优化,才能最大程度的发挥Redis的处理能力;

    2023-06-06
    101
  • Sql Server Sum函数的特殊使用「建议收藏」

    Sql Server Sum函数的特殊使用「建议收藏」利用Sql Server的Sum函数开窗得到累计值 具体详解https://www.cnblogs.com/zhaoshujie/p/9594676.html 个人示例例子 DECLARE @Sale

    2023-03-09
    109
  • 什么是流处理

    什么是流处理流处理正变得像数据处理一样流行。流处理已经超出了其原来的实时数据处理的范畴,它正在成为一种提供数据处理(包括批处理),实时应用乃至分布式事务的新方法的技术。 1、什么是流处理? 流处理是不断合并新数据

    2023-03-18
    108
  • 【2020Python修炼记】MySQL之 数据备份、pymysql模块

    【2020Python修炼记】MySQL之 数据备份、pymysql模块【目录】 一、IDE工具介绍与安装使用——navicat 神器 二、MySQL数据备份 三、pymysql模块 1、安装 2、使用模块 一、IDE工具介绍与安装使用——navicat 神器 https

    2023-02-26
    99

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注