oracle vm发现无效设置_Oracle数据库编译失效对象相关命令总结大全,值得收藏

概述

在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程Procedure、函数Function、视图View、同义词.....)会失效,呈现无效状态(INVALID)。有时候需要定期检查数据库中存在哪些失效对象,对于存在异常的对象需要重新编译,有些自动失效的对象,一般会在下次调用的时候,会被重新编译,所以这些不需要人工干预。那么为什么对象突然会失效呢?又如何快速、高效的编译失效对象呢?哪些失效的对象不需要我们去重新编译呢?


一、数据库对象失效原因

数据库对象失效的原因很多,这里大致归纳了一些常见的原因:

1、当被引用对象的结构变更时,都会使得相关的依赖对象转变为INVALID状态。

数据库中的对象(存储过程,函数,包,视图,触发器),它们往往需要直接或者间接的引用其它对象,对象的依赖包括直接和间接二种,其中直接依赖是指存储对象直接依赖于被引用对象,而间接依赖是指对象间接依赖于被引用对象

要查看被引用的对象,可以通过下面SQL查看

select * from dba_dependencies where name='&objectname';select * from all_dependencies where name='&objectname';select * from user_dependencies where name='&objectname';

其实不管视图,像存储过程,函数、包等,如果代码本身没有什么错误,只是引用的对象发生了变化。也会失效。但并不影响调用,因为ORACLE在调用时会自动重新编译的,如果其它对象变化后导致编译有错误。这时调用时重新编译后也是错误并处于失效状态,所以调用会出错。

2、发布SQL脚本时(包、存储过程、函数等),没有充分测试,编译时出错,这时对象变为无效。

3、数据库升级、迁移时,出现大量无效对象。

4、 诸如此类各种情况:例如,Oracle 会自动维护分区索引,对于全局索引,如果在对分区表操作时,没有指定update index,则会导致全局索引失效,需要重建。


二、查看失效对象

1、统计失效的对象:

select owner, object_type, status, count(*) from dba_objects where status='INVALID' group by owner, object_type, status order by owner, object_type;
1c85928ac6cbb19f061f84344edf910d.png

2、查看具体失效对象

col owner for a20;col object_name for a32;col object_type for a16col status for a8select owner, object_name, object_type, status from dba_objects where status='INVALID' order by 1, 2,3;
dc08542ef8cd98e0e18bacf8f7f1cc69.png

三、解决对策

1、使用ALTER *** COMPLIE语句手工进行编译,这个适用于少数、个别对象失效

alter package . compile;alter package . compile body;alter view . compile;alter trigger  compile;

2、执行@$ORACLE_HOME/rdbms/admin/utlrp.sql脚本编译数据库失效对象。

许多情况下,由于数据库的升级或迁移,会导致数据库中的对象失效。由于对象之间可能存在复杂的依赖关系,所以手工编译通常无法顺利通过。通常我们会在Oracle的升级指导中看到这个脚本,Oracle强烈推荐在迁移或者升级后,通过运行此脚本编译失效对象。但是此脚本需要用SQLPLUS以SYSDBA身份运行,并且当时数据库中最好不要有活动事物或DDL操作,否则极容易导致死锁的出现。

a96f34b3dabb18e00e678c12e4518c36.png
3f10b06d8f1071f670aeb21714d9c7e9.png

3、自动编译(慎用,可以手动就手动吧)

ORACLE提供了自动编译的接口dbms_utility.compile_schema(user,false); 调用这个过程就会编译所有失效的过程、函数、触发器、包

exec dbms_utility.compile_schema( 'SCOTT' )
fe7402d3dd60a9a44f524435811d59a6.png

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

48f5486c2d53a7cb23dc2a69c20afc62.gif

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

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

相关文章

WCF-001:WCF的发布

随着“云”时代的到来,“云”已经无处不在了。什么是“云”,无非就是利用互联网强大的功能建立多个服务器,然后再利用互联网的传输数据的特点将数据从某个服务器中读取出来或者将你的数据上传上去。当然这个服务器不是一定就是传统意义的服务…

在线编辑_水墨-在线 Markdown 编辑器

水墨-在线 Markdown 编辑器基于 Spring-boot、FreeMarker、layui、Vditor 构建的一款在线 所见即所得的 Markdown 编辑器。水墨-在线 Markdown 编辑器。本人使用 Vditor 编辑器时日已久,眼看着其功能日益强大,特此基于 Vditor 构建一款 Web 编辑器&#…

(转载)mysql 用drop和delete方法删除用户的区别

(转载)http://hi.baidu.com/yymagento/item/56c3f6184bce8347e75e06db在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下。 &#…

退出出库复核是什么意思_细思极恐!为什么是黄晓明退出而不是李菲儿?因为女方是芒果艺人...

本文转载自:娱评人吴清功序言:《乘风破浪的姐姐》第二季即将接档《姐姐的爱乐之程》,于每周五晚上十点档播出。2021年1月5日,《乘风破浪的姐姐2》第一次公演举行,选手李菲儿和发起人黄晓明有亲密互动,李菲儿…

ie6 ie7下使用clear不能将浮动的元素换行问题

在主流浏览器中使用clear方法可以轻松完成浮动元素的换行。 例如&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.o…

传值类型_Java内存管理:Stackoverflow问答-Java是传值还是传引用(十一)

勿在流沙筑高台&#xff0c;出来混迟早要还的。做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开&#xff01;本文导图&#xff1a;一、由一个提问引发的思考在Stack Overflow 看到这样一个问题&#xff1a;Is Java “pass-by-refere…

java位运算(转)

位移动运算符: <<表示左移, 左移一位表示原来的值乘2. 例如&#xff1a;3 <<2(3为int型) 1&#xff09;把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011&#xff0c; 2&#xff09;把该数字高位(左侧)的两个零移出&#xff0c;其他的数字都朝左平移2位…

android图片的缩放、圆角处理

android中图片缩放方法有三种&#xff1a;1&#xff0c;bitmapFactory&#xff1b;2&#xff0c;bitmapmetrix&#xff1b;3&#xff0c;thumbUtil 方法一&#xff1a;bitmapFactory&#xff1a; public static Bitmap resizeBitmapByFactory(String path, int w, int h) {Bitm…

Navicat for MySQL介绍以及Navicat for MySQL基本使用方法

Navicat for MySQL是一款流行的MySQL图形化管理工具。 如何使用Navicat for MySQL连接MySQL服务器&#xff1f; 1.单击“连接”按钮&#xff0c;出现“新建连接”窗口。 2.分别输入连接名、MySQL 服务器主机地址、服务 端口号、用户名和密码&#xff0c;单击“确定” 按钮。…

python正则表达式怎么用_Python如何使用正则表达式

1. Python与正则表达式开始查看python当前如何通过使用re模式来支持正则表达式&#xff0c;re模式在古老的Python1.5版本中引入&#xff0c;用于替换哪些已经过时的regex模块和regsub模块---这两个模块在Python2.5版本中被移除&#xff0c;并且此后导入这两个模块中的任意一个都…

MySQL小白飞速成长记-运算符篇

运算符连接表达式中的各个操作数&#xff0c;其作用是指明对操作数所进行的运算。常见的运算有数学运算&#xff0c;比较运算和逻辑运算。运算符可以更加灵活地使用表中地数据&#xff0c;常见的运算符类型&#xff1a;算术运算符&#xff0c;比较运算符和逻辑运算符。 上面说…

批处理通过字符串截取得到文件名

当有一个完整的文件路径时&#xff0c;如何截取文件名呢&#xff0c;可以使用 echo 命令。 如下代码&#xff1a; echo off set a"E:\Program Files\Image-Line\FL Studio 9\FL.exe" set b"E:\Program Files\Image-Line\FL Studio 9\Plugins\VST\Revitar20\Effe…

可以批量转modis投影_SNAP批量处理Sentinel2数据

Sentinel-2数据以其高时空分辨率获得了越来越多的应用&#xff0c;然而由于Sentinel-2数据空间分辨率高&#xff0c;光谱分辨率高&#xff0c;数据量也较Landsat数据大幅上升。好在ESA SNAP软件批处理功能也很强大&#xff0c;可以支撑起大数据量的应用。下面就介绍一下如何使用…

MySQL表结构管理

今天我们来介绍一下MySQL数据类型&#xff0c;任何数据库中数据表的每个字段都必须设定数据类型&#xff0c;合适的数据类型可以有效的节省存储空间&#xff0c;有效的提升数据的计算性能&#xff0c;那么常见的数据类型有哪些呢&#xff0c;一起来看看吧 类型分类 类型 取值…

清空文件夹里面的所有文件和文件夹

private void deletefileOrDic(System.IO.DirectoryInfo path){try{foreach (System.IO.DirectoryInfo d in path.GetDirectories()){d.Delete(true);}foreach (System.IO.FileInfo f in path.GetFiles()){f.Delete();}}catch (Exception ex){}} 转载于:https://www.cnblogs.co…

涡轮增压扫地机器人_帮着做家务,好坏在哪里,科沃斯T5扫地机器人

小家电中要说对自己家里最有用的&#xff0c;其中之一就是扫地机器人&#xff0c;自从三年多前开始用了扫地机器人后&#xff0c;家里的地面是大为改观&#xff0c;劳动强度大为下降&#xff0c;可谓朕心甚慰。从此之后&#xff0c;一发不可收拾&#xff0c;用过也有20台以上的…

struts2整合uploadify插件怎样传参数

关于uploadify3.1&#xff0c;先看下帮助文档中的有些知识。 其中有个onUploadStart方法&#xff0c;我们可以使用这个向后台传参。 下面举个例子&#xff0c; js&#xff1a; <script type"text/javascript">$(function () {$(#actpic).uploadify({debug: fal…

教你正确把加减乘除运用在MySQL里面

加减乘除—>MySQL?相信在座的各位也想知道其中的奥秘&#xff1f;而这就不得不说到聚合函数&#xff0c;聚合函数用于对一组数据进行计算并返回一个汇总值&#xff0c;常用来统计记录行数&#xff0c;计算某个字段值的总和以及这些值的最大值&#xff0c;最小值和平均值等。…

对齐方式有那些_Excel基础:开始菜单之对齐方式,那些被遗忘的实用功能

今天小编要分享的Excel基础系列文章是"第三区块-对齐方式"。对齐方式主要是出来文字的排版问题&#xff0c;对齐方式包含的所有功能下面思维导图已经列出来。大多数功能都是我们常用的&#xff0c;也是比较简单的&#xff0c;这些功能小编就不说了&#xff0c;小编来…

来自Java空间的传送门

变量是程序中存储数据的基本单元&#xff0c;在该存储空间中&#xff0c;存储的数据值可以改变。 通过变量名可以简单快速地找到它存储的数据 使用Java的过程中我们需要注意一些细节&#xff0c;那就是Java语言的规范性了&#xff0c;比如Java的变量命名&#xff1a; 1.标识符…