Oracle数据库失效对象处理详情

作者:jingkunliu 时间:2023-07-13 16:42:39 

近期对数据库进行巡检,发现数据库业务用户(非 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://www.cnblogs.com/Jingkunliu/p/14755021.html

标签:Oracle,数据库,对象
0
投稿

猜你喜欢

  • 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    2024-01-26 03:05:05
  • 设计和布局之间的思考

    2008-10-09 13:06:00
  • 通过淘宝数据爬虫学习python scrapy requests与response对象

    2021-11-07 05:46:39
  • python引入导入自定义模块和外部文件的实例

    2023-01-25 10:02:18
  • Python实现将MongoDB中的数据导入到MySQL

    2024-01-21 04:41:01
  • 在Python中合并字典模块ChainMap的隐藏坑【推荐】

    2022-11-16 09:48:18
  • python实现处理mysql结果输出方式

    2024-01-28 03:30:42
  • Python远程视频监控程序的实例代码

    2021-02-08 14:26:22
  • 6G数据库的导入 报各种错误的解决办法

    2024-01-28 09:58:22
  • Python中np.random.randint()参数详解及用法实例

    2022-04-17 19:40:48
  • SQLSERVER 创建索引实现代码

    2012-04-13 12:17:05
  • pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)

    2023-10-13 11:55:44
  • Python socket模块ftp传输文件过程解析

    2021-04-17 02:22:59
  • 关于 文本框默认值 的操作js代码

    2024-04-18 09:28:39
  • 如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)

    2022-06-08 09:09:28
  • python中使用smtplib和email模块发送邮件实例

    2022-09-16 05:37:23
  • Python tkinter实现图片标注功能(完整代码)

    2022-08-11 07:07:33
  • 带你一文读懂Python垃圾回收机制

    2022-03-03 11:58:03
  • SQL Server附加数据库报错无法打开物理文件,操作系统错误5的图文解决教程

    2024-01-13 04:20:28
  • Django forms表单 select下拉框的传值实例

    2023-04-21 02:23:53
  • asp之家 网络编程 m.aspxhome.com