自动编译失效的Oracle数据库对象

昨天看有个帖子说到的失效对象重新编译的问题,然后发现自己公司里也出现莫名其妙的失效对象。

--创建自动编译失效过程事务记录表
declaretabcnt integer := 0;
beginselect count(*) into tabcnt from dba_tables where table_name='RECOMPILE_LOG';if tabcnt = 0 thenexecute immediate 'create table recompile_log(rdate date,errmsg varchar2(200))';end if;
end;
/--创建编译失效对象的存储过程
create or replace procedure recompile_invalid_objects  
asstr_sql varchar2(200);  --中间用到的sql语句p_owner varchar2(20);   --所有者名称,即SCHEMAerrm varchar2(200);     --中间错误信息
begin/*****************************************************/p_owner := 'owner';/***用户名*************************//*****************************************************/ insert into recompile_log(rdate, errmsg) values(sysdate,'time to recompile invalid objects'); --编译失效存储过程for invalid_procedures in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'PROCEDURE' and owner=upper(p_owner))loopstr_sql := 'alter procedure ' ||invalid_procedures.object_name || ' compile';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_procedures.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;--编译失效函数for invalid_functions in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'FUNCTION' and owner=upper(p_owner))loopstr_sql := 'alter function ' ||invalid_functions.object_name || ' compile';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_functions.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;--编译失效包for invalid_packages in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'PACKAGE' and owner=upper(p_owner))loopstr_sql := 'alter package ' ||invalid_packages.object_name || ' compile';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_packages.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;--编译失效类型for invalid_types in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'TYPE' and owner=upper(p_owner))loopstr_sql := 'alter type ' ||invalid_types.object_name || ' compile';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_types.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;--编译失效索引for invalid_indexs in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'INDEX' and owner=upper(p_owner))loopstr_sql := 'alter index ' ||invalid_indexs.object_name || ' rebuild';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_indexs.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;--编译失效触发器for invalid_triggers in (select object_name from all_objectswhere status = 'INVALID' and object_type = 'TRIGGER' and owner=upper(p_owner))loopstr_sql := 'alter trigger ' ||invalid_triggers.object_name || ' compile';beginexecute immediate str_sql;exceptionWhen Others Thenbeginerrm := 'error by obj:'||invalid_triggers.object_name||' '||sqlerrm;insert into recompile_log(rdate, errmsg) values(sysdate,errm);end;end;end loop;end;
/--创建任务计划,每天早上8点整执行该任务,且保证此任务有且只有一个
declare jobcnt integer :=0;job_recompile number := 0;str_sql varchar2(200);
begin select count(*) into jobcnt from all_jobs where what = 'recompile_invalid_objects;' and broken = 'N';if jobcnt > 0 thenfor jobs in (select job from all_jobs where what = 'recompile_invalid_objects;' and broken = 'N')loopstr_sql := 'begin dbms_job.remove('||jobs.job||'); end;';beginexecute immediate str_sql;exceptionWhen Others Then null;end;end loop; end if;--创建任务计划dbms_job.submit(job_recompile,'recompile_invalid_objects;',sysdate,'TRUNC(SYSDATE + 1) + 8/24');--启动任务计划dbms_job.run(job_recompile);
end;
/

  

转载于:https://www.cnblogs.com/lynnwang/p/4868034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机进程设置多少个最好_安卓手机难逃卡顿宿命?打开4个系统设置,秒变新机般流畅...

近两年安卓手机的进步无疑的巨大的,不论是界面美观性、系统流畅度,还是功能的丰富性都有很大的进步,但是针对安卓的旧设备,用了两三年依旧开始变得卡顿,难道安卓手机真的难逃卡顿的宿命吗?虽然不能解决&…

dropzonejs vue 使用_如何在Dropzone上手动触发上传文件事件

我将Dropzonejs很好地集成到了我的前端(VueJS)中。如何在Dropzone上手动触发上传文件事件我有验收测试Dropzone使用Webdriver/Codeception的问题。底线是Webdriver需要一个文件输入,因此它也可以附加文件。任何方式手动触发例如悬浮窗内上传?我可以在页面…

html5新增的js,HTML5新增属性data-*和js/jquery之间的交互及注意事项

html的data-*属性是HTML5的新属性,用的时候在IE8html的data-*属性是HTML5的新属性,用来自定义属性,以在JS 中控制,用不会出问题,就是用js去获得的时候会有问题, 不过用Jquery的$(element).attr("data-…

精通android(Pro Android 4)面试题总结(一)

有些知识会了,但不一定理解了机制,或者不会很深入体会。最近开始看《精通android》(Pro Android 4)这本书,发现书本后面有一些面试题,看了一下。发现还是有些帮助,不错!!就上网找答案,可是网上好像没有这类资源(也许是我没找到),所以准备自己总结一下。 …

韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验

来源:百问网作者:韦东山本文字数:924,阅读时长:3分钟阅读本节前先阅读:Pinctrl子系统重要概念GPIO子系统重要概念基于GPIO子系统的LED驱动程序1.1 确定引脚并生成设备树节点NXP公司对于IMX6ULL芯片&#xf…

php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了

多个任务同时执行比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如…

C#中的interface

接口(interface) 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。 接口实际上是一个约定: 如&…

网易不进垃圾箱html,腾讯QQ、网易126、163邮箱发送邮件进入垃圾箱及收不到邮件怎么办?...

近期有用户反馈在云奇付(www.361ser.com)会员中心通过腾讯QQ邮箱、网易126、163邮箱绑定账号及安全验证无法正常收取或收不到云奇付发送的邮件怎么办?其实这是因为QQ邮箱、126邮箱、163邮箱等其它邮箱都有反垃圾邮件机制,很多企业网站的邮件都被误拦截到…

java技术分享主题_Java开发入门:适合新手练手的Java项目(附源码下载)

Java作为一门古老的语言,已有20年左右的历史,这在发展日新月异的技术圈可以说是一个神话。虽然不少人曾抱怨Java语言就像老太太的裹脚布,又臭又长,有时写了500行都不能表达程序员的意图。但从市场上的招聘现状看,Java工…

ehcache 缓存丢失_解决Ehcache缓存警告问题

警告: Creating a new instance of CacheManager using the diskStorePath "D:\Apache Tomcat 6.0.18\temp" which is already used by an existing CacheManager.The source of the configuration was classpath.The diskStore path for this CacheManager will be …

html简单父子页面,js 的 iframe 父子页面通信的简单方法

1、获取 子页面 的 window 对象在父页面中,存在如下两个对象window.framesdocument.iframeElement.contentWindow可以获取到 子页面 window 对象// iframe iddocument.getElementById(menuIframe).contentWindow// iframe namewindow.frames[menuIframe].window// i…

uni app 调用网络打印机_uni-app 的使用体验总结

[实践] uni-app 的使用总结最近使用 uni-app 的感受。使用体验没用之前以为真和 Vue 一样,用了之后才知道。有点类似 Vue 和 小程序结合的感觉。写类似小程序的标签,有着小程序和 Vue 的生命周期钩子。对比 uni-app 文档和微信小程序的文档,不…

iOS开发——高级篇——二维码的生产和读取

一、二维码的生成 从iOS7开始集成了二维码的生成和读取功能此前被广泛使用的zbarsdk目前不支持64位处理器 生成二维码的步骤:导入CoreImage框架通过滤镜CIFilter生成二维码 二维码的内容(传统的条形码只能放数字):纯文本名片URL // 1. 实例化二维码滤镜 …

python 地址_python 解析地址 | 学步园

socekt.getaddrinfo的返回值介绍family: 表示socket使用的协议簇。常用的协议簇包括AF_UNIX(本机通信)/AF_INET(TCP/IP协议簇中的IPv4协议)/AF_INET6(TCP/IP协议簇中的IPv4协议)。在python的socket包中,用1表示AF_UNIX,2表示AF_INET,10表示AF…

html 微信发送给朋友,H5链接分享给微信好友,显示标题、描述、缩略图

效果展示image.png1.公众号设置1.1公众号需要经过认证,具有分享接口功能image.png1.2填写正确的域名(域名需要经过备案)image.png1.3 保存好AppID、AppSecret、设置好ip白名单(非常重要)image.png2.php代码(需要有php环境下,放到域名目录下)2.1展示下目录…

python怎么创建变量_python怎么创建变量

变量(variable)是学习python初始时,就会接触到的一个新的知识点,也是一个需要熟知的概念。python是一种动态类型语言,在赋值的执行中可以绑定不同类型的值,这个过程叫做变量赋值操作,赋值同时确定了变量类型。在python…

nginx 学习笔记【持续更新...】

1.如果在安装过程中出现以下错误 需要安装pcre库 解决方案:yum install pcre 2.如果nginx启动提示端口被占用,则停止该端口的服务再启动nginx,一般为httpd服务 解决方案:service httpd stop 3.nginx下php编译 ./configure --prefix/usr/local/fastphp …

python问号表达式_python中的问号表达式

我们知道C语句中存在问号表达式,例如下面:1a2>1? 10: -10;那么,Python脚本语言中是否也存在类似的问号表达式呢?答案是肯定的。而且存在两种方式。方式1:使用if else实现如下例:1b 5a 2 if b 4 else 1p…

计算机入门在线阅读,电脑入门基础教程..doc

PAGEPAGE 8大学计算机基础实验指导书A班2013年9月实验一 windows基本操作、系统环境一、实验目的1.熟悉Windows的基本知识和基本操作。2.熟悉Windows的程序管理。3.熟悉“Windows资源管理器”和“我的电脑”的使用。4.熟悉文件和文…

efcore 实体配置_创建并配置模型

创建并配置模型Creating and configuring a model10/13/2020本文内容Entity Framework 使用一组约定基于实体类的形状构建模型。Entity Framework uses a set of conventions to build a model based on the shape of your entity classes. 可指定其他配置以补充和/或替代约定的…