我和我的团队开始着手进行旧的Oracle DB项目。整个业务逻辑都是用PL / SQL编写的,没有任何文档。
现在,我们希望获得所有内容的概述,尤其是要调用哪些过程/函数/包。问题在于,存在带有后缀_v1
,_v2
,_v1_org
,_v2_new
的软件包,我们不知道它们中的哪一个真正在使用。
我们不想通过在每个函数或过程的开头添加一条日志记录语句来更改所有内容。
是否存在某种可以在函数调用时触发的触发器?
例如调用此代码
CREATE OR REPLACE FUNCTION helloWorld AS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello world!');
END;
将输出类似这样的内容(行顺序无关)
Function "helloWorld" was called.
Hello world!
答案 0 :(得分:2)
问题很广泛。在您的位置,我将从以下内容开始:
将初始化部分添加到软件包中:
create or replace package body my_package as
...
-- add this after all functions, procedures, etc:
begin
dbms_output.put_line('Package my_package is initialised');
end;
这将允许您定义使用哪些软件包。初始化部分在会话中的第一个包调用上执行一次。
使用DBA_DEPENDENCIES
系统视图检查数据库对象之间的依赖关系。
答案 1 :(得分:1)
您可以使用DBMS_TRACE或DBMS_PROFILER来分析正在发生的事情。