在Oracle中重编译所有无效的存储过程

  SQL_PLUS中,

spool ExecCompProc.sql
select 'alter procedure '||object_name||' compile;
' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE';
spool off
@ExecCompProc.Sql;

  整理成一个存储过程

Create Or Replace Procedure Zl_Compile_Invalid_Procedure As
Strsql Varchar2(200);
Begin
For x In (Select Object_Name From All_Objects Where Status = 'INVALID'
And Object_Type = 'PROCEDURE') Loop
Strsql := 'Alter Procedure ' || x.Object_Name || ' Compile';
Begin
 Execute Immediate Strsql;
 Exception
--When Others Then Null;  
When OTHERS Then dbms_output.put_line(Sqlerrm);  
End;
End Loop;
End;

  执行

exec Zl_Compile_Invalid_Procedure;
  如果要看到无法重编译的过程的出错信息,需要执行前设置set serverout on

时间: 2024-11-16 20:18:03

在Oracle中重编译所有无效的存储过程的相关文章

Oracle中重编译所有无效的存储过程

SQL_PLUS中spool ExecCompProc.sql select 'alter procedure '||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql; 整理成一个存储过程Create Or Replace Procedure Zl_Compile_Invalid_Procedur

Oracle中恢复被删掉的存储过程的案例

在某些时候,容易误删存储过程,那么针对存储过程被删除了,我们如何进行恢复呢 ? 这里分享几种简单的处理方法! 首先我准备好一个测试用例,如下创建测试存储过程: SQL> conn roger/roger Connected. SQL> CREATE OR REPLACE PROCEDURE proc_test_drop 2 AS 3 BEGIN 4 FOR x IN (SELECT sysdate FROM dual) 5 LOOP 6 DBMS_OUTPUT.put_line (x.sysd

Eclipse插件开发中实现刷新和重编译

在做eclipse插件开发中,特别是自动生成代码或者uml->代码的插件中,有时需要刷新一下文件夹或者重新编译一下.那如何实现这两个操作呢. 一.实现刷新 1.一个关键的接口是org.eclipse.core.resources.IResource 调用这个接口的refreshLocal方法即可.例如refreshLocal(IResource.DEPTH_INFINITE, null) 2.到底有哪些类实现了这个接口呢? 来看一下继承结构 首先继承自IResource的接口有IContaine

全面解析oracle中的锁机制3

5.TX事务锁和 TM(DML enqueue)锁: TX锁:数据块的前面有一个开销空间(ITL),这里会存放一个块的事务列表,对于每一个锁定了块的事务,都会在这个事务列表中有一个条目.这个结构的大小有创建对象时的两个参数决定: INITRANS:初始分配的可容纳事务的大小,一般初始为2,可以说是事务槽. MAXTRANS:这个结构可以扩缩到的最大大小.它默认为255,在实际中,最小值为2.在Oracle10g 中,这个设置已经废弃了,所以不再使用.这个版本中的MAXTRANS 总是255.  

oracle在线重定义包DBMS_REDIFINITION #

http://blog.itpub.net/post/468/12855 在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了.而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作. 在线重定义表具有以下功能: 1.

oracle中字段名与sql关键词重复的处理方法

ORACLE中,如果表中的字段名,正好跟sql中关键词重名,写sql语句时: 1.要将该字段名大写 2.字段名前后要加双引号(注:必须是双引号,单引号将无效) 比如:SELECT * FROM MYTABLE ORDER BY "ORDER"

Oracle中的游标、硬解析、软解析、软软解析、解析失败

Oracle中的游标.硬解析.软解析.软软解析.解析失败 一. 游标的分类及共享游标 游标(Cursor)是Oracle数据库中SQL解析和执行的载体,它可以分为共享游标(Shared Cursor)和会话游标(Session Cursor).共享游标可以细分为父游标(Parent Cursor)和子游标(Child Cursor),可以通过视图V$SQLAREA和V$SQL来查看当前缓存在库缓存(Library Cache)中的父游标和子游标,其中V$SQLAREA用于查看父游标,V$SQL用

SQL Server 2005性能测试之CPU篇(编译与重编译)

如果在没有额外复杂条件下突然出现CPU瓶颈,有可能是因为没有优化查询,错误的数据库配置,或者是数据库设计上的原因和硬件资源不足引起.在决定采用增加CPU数量或者使用更快速的CPU之前,应该先检查消耗CPU资源最多的操作是否能够被优化. 如果发现性能计数器Processor: % Processor Time的值很高,每一个CPU的% Processor Time都超过80%时,可视为出现CPU瓶颈.也可以通过视图sys.dm_os_schedulers监视SQL Server的进程调度(sche

在ORACLE中移动数据库文件

在ORACLE中移动数据库文件 ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成.由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,数据库管理员可能会考虑移动数据库文件.下面以UNIX平台为例,分别讨论三种数据库文件的移动方法. ---- 一.移动数据文件: ---- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件. ---- 1. ALTER DATABASE方法: ---- 用此方法,可以移动任何表空间的数据文件.