暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何检查数据库中的所有程序?

askTom 2018-06-27
206

问题描述

你好Oracle大师,

首先,祝贺这个网站和你的答案,你是如此的好,我今天尝试我的机会。


是否可以随时在一个表或一个视图中或使用PL/SQL软件包找到可以在我的数据库中执行的所有程序?
一个精度: 我不谈论存储过程,而只谈论由Oracle “计划” 或 “触发” 的程序。为什么不是存储过程?因为我无法访问正在调用它们的java程序。
原因是什么?看看数据库中实现了什么,看看开发人员把什么放在里面,却忘了告诉数据库管理员... 说 “哦,我的上帝,那是什么,对性能来说太糟糕了,我取消了它”。


我的问题是,有太多的功能,我可以用它来触发操作,每个都有自己的视图来检查。

例如,
对于触发器,我将检查DBA_TRIGGERS。
对于作业,我将检查DBA_SCHEDULER_JOBS。
对于统计管理,我将检查DBA_AUTOTASK_TASK。
对于审核,我将检查DBA_STMT_AUDIT_OPTS。
等等

但是有些功能我不知道,我无法检查它们的视图。
例如,I discovered the DBMS_ADVANCED_REWRITE (can be very dangerous) with its DBA_REWRITE_EQUIVALENCES view.
但是有太多未知的功能无法做到这一点。

所以,不可能知道与这些触发程序相关联的每个视图,因为有太多的特性,这就是为什么我要寻找一个单一的视图或表。

一个朋友告诉我,V $ 访问很好。是的,这是一个好的开始,但是我们只看到现在访问的程序,而不是将来可以访问的所有程序。
好的,我可以创建一个作业,每秒运行一次,以查看一个月内触发的内容。但有些节目可能只在两个月或年底才会触发...所以还不够。


汤姆,你有比V $ ACCESS最好的选择吗?也许是一个PL/SQL包或数据字典中的表?

最好的问候,再次感谢您的出色工作!

大卫·杜布瓦

专家解答

我不知道您可以使用一个视图来查找所有计划或将要触发的内容。我不确定这将如何工作,因为有些是 “在行动” (触发器,在提交MV刷新,...),其他被安排 (工作),可以说一些如VPD是被动的。

其中一些只会有条件地发生。例如,您需要将query_rewrite_integrity设置为受信任的DBMS_ADVANCED_REWRITE效果发生。

而且这不会捕获任何基于客户端的操作,例如cron作业。这仍然是数据库中发生的事情的重要组成部分。

听起来您需要重新控制环境。如果任何人都可以在数据库中运行任何内容而没有记录他们所做的事情,那么您将遇到问题。确保每个人都记录他们在变更存储库中运行的脚本的详细信息。理想情况下,具有回源控制的链接以及相关的变更单/项目详细信息。

要弄清楚你有什么,请查看dba_objects。查找数据库中安装的所有不同的object_types。对于您找到的每个对象,请深入特定于对象的视图以查找更多详细信息。

其他人可能会有更多关于如何解决这个问题的建议。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论