加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

使用调试信息编译Oracle模式

发布时间:2021-01-18 12:30:58 所属栏目:站长百科 来源:网络整理
导读:我们有一个剧本,可以在Oracle 12.1.0.2.0数据库上建设很多新的Oracle包,触发器,视图和函数. 之后,编译全部这些工具.我们起首行使DBMS_UTILITY.COMPILE_SCHEMA来编译全部这些工具.可是,COMPILE_SCHEMA不会添加调试信息.我们还想添加调试信息. 最好的要领是什

我们有一个剧本,可以在Oracle 12.1.0.2.0数据库上建设很多新的Oracle包,触发器,视图和函数.

之后,编译全部这些工具.我们起首行使DBMS_UTILITY.COMPILE_SCHEMA来编译全部这些工具.可是,COMPILE_SCHEMA不会添加调试信息.我们还想添加调试信息.

最好的要领是什么?这是我们当前的算法:

>建设全部工具
>逐个编译调试模式中的全部工具.这会使很多工具无效,这些工具引用了列表中稍后呈现的工具.
>行使DBMS_UTILITY.COMPILE_SCHEMA从头编译全部工具,以便全部工具都有用.

在这种环境下,全部工具都被编译两次,这显然不是最佳的.有许多工具以是必要很长时刻.我们但愿加速速率.

是否有任何可用的成果与DBMS_UTILITY.COMPILE_SCHEMA沟通,但包括调试信息?

办理要领

如 the documentation中所述:

DEBUG

Has the same effect as PLSQL_OPTIMIZE_LEVEL=1—instructs the PL/SQL compiler to generate and store the code for use by the PL/SQL debugger. Oracle recommends using PLSQL_OPTIMIZE_LEVEL=1 instead of DEBUG.

因此,您可以在建设工具之前或从头编译模式之前配置它.为了匹配SQL Developer在“编译调试”时所做的工作,您还必要将PLSQL_DEBUG配置为true.这是一个快速演示:

create or replace package p42 as
  function f return number;
end p42;
/

create or replace package body p42 as
  function f return number is
  begin
    return 42;
  end f;
end p42;
/

select name,type,plsql_optimize_level,plsql_debug
from user_plsql_object_settings where name = 'P42';

NAME                           TYPE         PLSQL_OPTIMIZE_LEVEL PLSQL_DEBUG
------------------------------ ------------ -------------------- -----------
P42                            PACKAGE                         2 FALSE       
P42                            PACKAGE BODY                    2 FALSE       


alter session set plsql_optimize_level = 1;
alter session set plsql_debug = true;

exec dbms_utility.compile_schema(user);

select name,plsql_debug
from user_plsql_object_settings where name = 'P42';

NAME                           TYPE         PLSQL_OPTIMIZE_LEVEL PLSQL_DEBUG
------------------------------ ------------ -------------------- -----------
P42                            PACKAGE                         1 TRUE        
P42                            PACKAGE BODY                    1 TRUE

虽然,你可以在建设工具之前改变你的会话,可是假如你知道你老是要老是从头编译模式 – 假如你必需从头编译全部对象,而不只仅是无效的工具 – 那么比及当时也许是好.可是假如您确其实启用调试的环境下建设工具,您如故可以行使以下呼吁从头编译并保存它:

DBMS_UTILITY.COMPILE_SCHEMA(schema => user,reuse_settings => true);

…假如要从头编译全部内容,可能只想从头编译无效工具:

DBMS_UTILITY.COMPILE_SCHEMA(schema => user,compile_all => false,reuse_settings => true);

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读