oracle 编辑失效对象,oracle编译 失效对象方式

如果procedure 所使用的表结构发生了改变等其它情况,在相应的xxx_objects表的status字段会变为invalid状态,但是如果在调用时procedure会自动编译,grant失效对象权限给别人时也会自动编译,也是在dba_objects表可以查到最后一次编译的时间last_ddl_time,但并不是说调用就会重编译,

高并发的oltp , 多个session 同时编译 就会出现 library cache lock/pin,最好还是更新完,手动编译.

对于已失效的存储过程,只要不是语法上的问题,编译一下又可以重新使用了,手动编译而不等到用时也要做到自动化,方法如下

1. Oracle SQL *Plus 中 —— 用 spool 生成脚本文件,然后 @ 调入执行,代码如下:

spool comProc.sql

select ‘alter procedure ‘||object_name||’ compile;’ from all_objects

where status = ‘INVALID’ and object_type = ‘PROCEDURE’ AND owner=’xxx';

spool off

@comProc.sql;

2. 写成一个存储过程 —— 让这个存储过程在某个时机执行,比如  Job 中,代码如下:

create or replace procedure compile_invalid_procedures(

p_owner varchar2 — 所有者名称,即 SCHEMA

) as

–编译某个用户下的无效存储过程

str_sql varchar2(200);

begin

for invalid_procedures in (select object_name from all_objects

where status = ‘INVALID’ and object_type = ‘PROCEDURE’ and owner=upper(p_owner))

loop

str_sql := ‘alter procedure ‘ ||invalid_procedures.object_name || ‘ compile';

begin

execute immediate str_sql;

exception

–When Others Then Null;

when OTHERS Then

dbms_output.put_line(sqlerrm);

end;

end loop;

end;

编译失效的其它对象

alter 的语句写法参考下面:

alter function function_name compile;

alter package package)name compile;

alter type type_name compile;

alter index index_name rebuild;

–等等…………

可以用 Oracle 提供的工具:dbms_utility.compile_schema(schema varchar2, compile_all boolean default TRUE);来编译方案下的所有对象。

ORACLE编译失效对象小结

在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有时候需 ...

sqlplus编译失效对象

原文整理自:http://www.51testing.com/?uid-16403-action-viewspace-itemid-98161:http://www.eygle.com/archive ...

oracle 编译无效对象

在数据库中,会存在一些无效的对象,导致这种现象的发生原因很多,其中最常见的就是数据库升级(例如修改了表的结构),迁移而引起. 编译无效对象的方式: 1 使用alter **** compile 语句进 ...

oracle重新编译失效对像

重新编译失效对像可执行utlrp.sql文件: SQL> @?/rdbms/admin/utlrp.sql TIMESTAMP --------------------------------- ...

oracle 索引失效原因及解决方法

oracle 索引失效原因及解决方法 2010年11月26日 星期五 17:10 一.以下的方法会引起索引失效 ‍1,<>2,单独的>,

能使 Oracle 索引失效的六大限制条件【转】

. 引用自: http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html  总结得非常到位 Oracle 索引的目标是避免全表扫描 ...

SQL Server 重新编译存储过程的方式有三种

SQL Server 中,强制重新编译存储过程的方式有三种: sp_recompile 系统存储过程强制在下次执行存储过程时对其重新编译.具体方法是:从过程缓存中删除现有计划,强制在下次运行该过程时创 ...

jdbc&sol;ojdbc连oracle的三种方式&lpar;转&rpar;

文章转自:http://blog.itpub.net/22664653/viewspace-1383092/ 前言  本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle ...

Oracle EBS在编码方式为AL32UTF8时的注意事项

现如今的EBS系统中,为了推进国际化的进程,以及系统向全球化的扩展,在Oracle数据库的编码方式上渐渐从支持中国本土简体中文的ZHS16GBK转向了更趋于国际化的AL32UTF8编码方式.但随之而来 ...

随机推荐

c&num;列举和迭代器

列举 - Enumeration 迭代器是一个值序列(集合)上的一个只读且只向前移动的游标.迭代器要么实现了IEnumerator接口,要么实现了IEnumerator接口. 从技术 ...

Python内置函数解析

我们知道,为了方便使用,python内置了一系列常用及关键的函数,如type().下面将对这些函数进行逐一分析.解释. Python内置函数表: 1. abs():返回绝对值.如abs(-1)= 1. ...

hdu 5023 A Corrupt Mayor&&num;39&semi;s Performance Art 线段树

A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100 ...

js、jquery、动态添加option项

var selid = document.getElementById("sltid"); for(var i=0; i<10;i++){     //循环添加多个值 sid ...

在Eclipse下debug 出现Source not found for &period;&period;&period;

在Eclipse下debug 出现Source not found for ... 在Eclipse下调试Servlet出现了Source not found for XxxAction.execut ...

CodeForces 670A Holidays

简单题. #pragma comment(linker, "/STACK:1024000000,1024000000") #include #inclu ...

&OpenCurlyDoubleQuote;不能在dropdownlist中选择多个项

DropDownList.ClearSelection(); DropDownList.SelectedItem.Text = "value值";

AJ的笔记之上拉电阻的工作原理分析

第二章:聊一聊上拉电阻的工作原理 **********本文所采用的单片机是:STC89C52RC系******************** [重点提要]其实,理解上拉电阻的原理,关键是理解这两个词:锁 ...

在 &period;NET Core 下的 Swagger UI 自定义操作

1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...

记录&colon;工作中用到的Js日期时间方法

/** * 获取当前时间 */ function getDate() { return new Date(); } /** * 格式化当前时间 * @param {*} value */ functi ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值