大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说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