sql - 用 Oracle 解释 PL/SQL 计划
问题描述
有没有办法在 Oracle 数据库中调试 PL/SQL 或解释它?
我为一个大型组织工作,他们有 PL/SQL 地狱,我如何解开成千上万的 PL/SQL 脚本?
至少我想解析出columns
,tables
和views
被访问。EXPLAIN PLAN 非常适用于纯 SQL 语句。
其他想法:
- 购买商业 PL/SQL 解析器
- 使用 ANTLR 将 PL/SQL 解析为节点(有点帮助?)
- 使用 Postgres Parser 接近?https://github.com/lfittl/libpg_query
解决方案
可能不是您正在寻找的完整答案,但您可以从 DBA_DEPENDENCIES 视图开始,至少获取包/过程所依赖的对象。
例子
Select distinct
referenced_name "Object name",
referenced_type "Object type",
referenced_owner "Owner",
nvl(referenced_link_name,'n/a') "DB Link"
from dba_dependencies
where owner = 'SCHEMA_NAME'
and name = 'OBJECT_NAME'
and type = 'PACKAGE BODY'
and referenced_type != 'NON-EXISTENT'
order by 3,2,1;
推荐阅读
- pdf - pdfbox给定坐标与XML(相同的pdf转换为xml)坐标不匹配?
- python - 如何在范围```range()```中使用小数?
- android - 睡眠模式下大量 UDP 丢包
- google-sheets - 是否免费使用 Google Sheets API?
- javascript - 如何根据当前域修改axios中的baseURL
- google-bigquery - 如何永久关闭 BQ 中的 ..."Powered by Data Catalog" 弹出窗口
- sapui5 - 如何使输入字段成为超链接?
- angular - Bazel + Angular + SocketIO V3 原因:Uncaught TypeError: XMLHttpRequest is not a constructor
- python - Pyspark 将输出保存为多种格式
- php - HttpKernel\Exception\MethodNotAllowedHttpException:此路由不支持 GET 方法。支持的方法:Laravel 中的 POST