首页 > 解决方案 > 用 Oracle 解释 PL/SQL 计划

问题描述

有没有办法在 Oracle 数据库中调试 PL/SQL 或解释它?

我为一个大型组织工作,他们有 PL/SQL 地狱,我如何解开成千上万的 PL/SQL 脚本?

至少我想解析出columns,tablesviews被访问。EXPLAIN PLAN 非常适用于纯 SQL 语句。

其他想法

  1. 购买商业 PL/SQL 解析器
  2. 使用 ANTLR 将 PL/SQL 解析为节点(有点帮助?​​)
  3. 使用 Postgres Parser 接近?https://github.com/lfittl/libpg_query

标签: sqloracleplsql

解决方案


可能不是您正在寻找的完整答案,但您可以从 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;

推荐阅读