搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
C++之stringstream类-基本用法详解_c++ stringstream
2
org.apache.flink.table.client.SqlClientException: Could not read from command line【Flink解决方案】
3
规则引擎技术选型-qlExpress
4
Spring Cloud Eureka 详解_spring cloud + eureka
5
Kimi:文本解析利器,你相信光么?_kimi没有解析出文字
6
智能检测的边缘计算:优化与实践
7
数据结构:实验七:数据查找_(1)编写程序,利用顺序查找,从控制台给定的十个数据中查找一个数据是否存在。
8
UG476-Xilinx-7Series-FPGA高速收发器使用学习—TX发送端
9
Oracle RAC集群安装,从零开始_it邦德 rac
10
VS Code 终端打开当前路径_vscode 集成终端没有切换到目录
当前位置:
article
> 正文
Oracle 中重新编译无效的存储过程, 或函数、触发器等对象_oracle 数据库存储过程重新编译
作者:寸_铁 | 2024-07-03 01:51:46
赞
踩
oracle 数据库存储过程重新编译
Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效,至今原因都未查明。
查询 dba_dependencies 视图可以看到存储过程所引用的对象,再就在 dba_objects 视图中可以看到对象的 created 和 last_ddl_time 时间。
上面的那种无效的存储程,只要不是语法上有问题,重新编译一下又是可用的了。总不能每次发现时人工去编译的,所以要实现自动化,有以下两种方法(网上找到的所有的
在Oracle中重新编译所有无效的存储过程
代码排版都很混乱,所以主要是重新整理了):
1. Oracle SQL *Plus 中 -- 用 spool 生成脚本文件,然后 @ 调入执行,代码如下:
spool ExecCompProc.sql select 'alter procedure '||object_name||' compile;' from all_objects where status = 'INVALID' and object_type = 'PROCEDURE' AND owner='UNMI'; spool off @ExecCompProc.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;
在 SQL *Plus 中执行该存储过程时,如果要看到 dbms_output.put_line(sqlerrm); 的输出,需要执行 set serverout on 打开输出。
这里述及的是如何重新编译存储过程,依次推及到,重新编译 FUNCTION、PACKAGE、TYPE、TRIGGER 等,和重建 INDEX 等。所不同的就是查询 all_objects 时的 object_type 不一样,还有要执行的 alter 语句不一样。
object_type 有哪些可用 select distinct object_type from all_objects 获取到;alter 的语句写法参考下面:
alter function function_name compile; alter package package)name compile; alter type type_name compile; alter index index_name rebuild; --等等............
参考:1.
为什么我的存储过程总要重新编译?
2.
在Oracle中重新编译所有无效的存储过程
补充,请看这里:
1. 其实存储过程、函数等是 INVALID,只要内容无错误就不要紧,因为执行的时候会自动重新编译
2. 在 SQL *Plus 或者 PL/SQL Developer 的 Command Windows 中用 show errors procedure procedure_name 或 show errors function function_name 可以查看到存储过程具体错误
3. 可以用 Oracle 提供的工具:dbms_utility.compile_schema(schema varchar2, compile_all boolean default TRUE); 来编译某个 Schema 下的所有 PROCEDURE、FUNCTION、PACKAGE 和 TRIGGER。比如执行 dbms_utility.compile_schema('Unmi')。
参考:1.
为什么我创建的存储过程,存储函数都是无效的?
2.
DBMS_UTILITY
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/781602
推荐阅读
article
LATERAL
横向派生表_
lateral
join
oracle
...
参考董旭阳TonyDong的博客,网址:https://blog.csdn.net/horses/article/det...
赞
踩
article
Oracle
VM
VirtualBox
虚拟机
加载
USB
硬盘
_
vbox
虚拟机
挂载 usb 移动硬...
Oracle
VM
VirtualBox
虚拟器加载
USB
硬盘
制作:狂龙骄子整理:2014-08-31 22:00最近自...
赞
踩
article
【
Oracle
】
调用
HTTP
接口...
在oracle中发起http请求对oracle压力比较大,建议不要将完整报文都丢给oracle进行
调用
。建议的方式是,请...
赞
踩
article
oracle
监听
配置_
oracle
监听
配置...
一 静态
监听
配置:在配置文件中加入,需要添加sid
监听
的配置静态
监听
注册成功,下方出现unkown的标识(表示静态
监听
注...
赞
踩
article
oracle
clustr,
Oracle
CLUSTER
_
INTERCONNECTS
参数详解...
This note attempts to clarify the cluster_interconnects para...
赞
踩
article
oracle
数据
集
cat
,Oracle...
在给
数据
库打补丁的时候,看文档中都有一个步骤"SQL> @
cat
bundle.sql psu apply",那么这个脚本...
赞
踩
article
Oracle
OAC
系列:
数据
集
关联
so
easy
_如何选取
数据
集中相
关联
的
数据
...
前面两部分我们学习了快速进行
数据
分析和
数据
集管理,对
OAC
(
数据
分析)平台有了初步的认识。那么我们将多个
数据
集添加到某个...
赞
踩
article
主流
数据
库(
SQL
Server
、My
sql
、
Oracle
)通过
sql
实现多行
数据
合为一行_
sql
多...
FOR XML是
SQL
Server
提供的一种功能,允许您将查询结果转换为 XML 格式。PATH模式则是其中一种灵...
赞
踩
article
Oracle
错误
总结及
问题
解决
ORA
_
ora
-00027...
ORA
错误
大全_
ora
-00027
ora
-00027 使用 Ctrl + F ...
赞
踩
article
Oracle
区块
链
表
,一个集中式的
区块
链
平台...
Oracle
区块
链
表
是一个具有防篡改功能的表,只能插入数据,同时提供了表级和行级的保留期限。
区块
链
表
中的所有行构成了一...
赞
踩
article
Oracle
Primavera
P6
导入
Excel
文件_
primavera
p6 用
excel
...
应工作需要,时将常用的Office
Excel
处理
导入
进P6系统,而
导入
过程中最关键的一步便是
导入
操作,这里特别解释...
赞
踩
article
oracle
merge
的使用...
Oracle的MERGE语句是一个功能强大的工具,允许用户在一个SQL语句中同时执行INSERT和UPDATE操作。通过...
赞
踩
article
Xshell
连接VM虚拟机
的
Centos7
遇到
的
问题及
解决办法
_用最简单
的
方法解决
xshell
or...
ifconfig 、 ping 、 虚拟机 、
xshell
、Centos_用最简单
的
方法解决
xshell
oracle
...
赞
踩
article
2023
年
中国
数据库
市场
440亿,云
数据库
四强(阿里、腾讯、亚马逊、
华为
),本地
数据库
四强(Orac...
近期IDC公布了
中国
关系型
数据库
市场
的数据,整体
市场
276亿人民币(38亿美元),其中公有云
数据库
市场
175亿人民币(2...
赞
踩
article
Oracle
(PLSQL) +
MySQL
[
存储
过程
和函数]_
plsql
存储
过程
临时表...
学习笔记_
plsql
存储
过程
临时表
plsql
存储
过程
临时表 ...
赞
踩
article
Oracle
Performance
Tuning
1
1
g2 (2-
1
)...
在windows live writer中编辑的时候,以及预览的时候都是整整齐齐的,但是一上传到博客中就变得乌七八黑了 ...
赞
踩
article
数据
集合
oracle
,
oracle
集合
...
oracle
集合
1初识
集合
集合
是
oracle
中的一种数据类型 存放一组数据类型相同的数据
集合
组成由下标和值组成下标的类型...
赞
踩
article
Oracle
数据
集
...
Oracle
在表与表之间取交
集
,差
集
关键字UNION, UNION ALL, INTERSECT, and MINUS...
赞
踩
article
oracle
plsql
高级
编程
一
集合
_
oracle
plsql
编程
中申明
一
个
集合
参数...
1.1 索引表索引表是将数据保存在内存中!!!1.1.1 定义索引表-- 定义记录集TYPE yang_rec IS R...
赞
踩
article
Oracle
、My
SQL
、PostGre
SQL
、
SQL
Server
-查询每秒
事务
数_
数据库
事务
统计...
在做 db benchmarks 时,qps、tps 是衡量
数据库
性能的关键指标,TPS : Transactions ...
赞
踩
相关标签
Lateral
虚拟机
virtualbox
加载USB硬盘
加载U盘
oracle
http
数据库
oracle clustr
oracle数据集cat
bi
数据分析
数据建模
mysql
sqlserver
Oracle
ORA
Oracle错误
Oracle错误大全
区块链表
区块链
blockchain
项目管理
Primavera P6
导入