ITPub博客

首页 > 数据库 > > GaussDB 100 表函数D篇中

GaussDB 100 表函数D篇中

作者:GaussDB_数据库 时间:2020-03-06 10:26:12 0 删除 编辑

DBA_PROC_LINE

语法:

select * from table(dba_proc_line(param1, param2));

功能:查看存储过程源码。按行显示。

注意:

  • 在数据库参数UPPER_CASE_TABLE_NAMES值为TRUE(缺省值)情况下,数据库中的用户名,表名默认为大写,此函数必须给定参数大写名,否则会报对象不存在或者用户没有权限的错误。

  • 若参数值修改为FALSE或者如果用户通过双引号输入大小写敏感的表对象,那么函数中给定的相同大小写敏感的参数,否则会报对象不存在错误。

  • 该表函数允许当前用户查询自己创建的存储过程、自定义函数或触发器,或被赋予了DBA角色权限的用户查询其他用户的存储过程,自定义函数或触发器。

说明:

  • param1:用户名字符串。

  • param2:程序名称字符串。

  • LOC_LINE:物理行号。

  • SOURCE_LINE:单个物理行对应程序源码。

示例:

SQL> select * from table(dba_proc_line('omm', 'GATHER_CHANGE_STATS'));

LOC_LINE SOURCE_LINE
------------ ----------------------------------------------------------------
1 CREATE OR REPLACE PROCEDURE GATHER_CHANGE_STATS (
2 estimate_percent NUMBER DEFAULT 30,
3 change_percent NUMBER DEFAULT 10,
4 force BOOLEAN DEFAULT TRUE
5 )
6 --force false: don't gather when cbo is disable
7 IS
8 cbo_enable VARCHAR(3);
9 BEGIN
10 --check cbo flag
11 IF force = FALSE THEN
12 SELECT VALUE INTO cbo_enable FROM SYS.DV_PARAMETERS WHERE NAME='CBO';
13 IF UPPER(cbo_enable) = 'OFF' THEN
14 RETURN;
15 END IF;
16 END IF;
17
18 --flush modification to table
19 DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO();
20
21 --gather the table changed
22 FOR ITEM IN (SELECT A.OWNER, A.TABLE_NAME
23 FROM DBA_TABLES A, DBA_TAB_MODIFICATIONS B
24 WHERE A.PARTITIONED = AND A.OWNER = B.TABLE_OWNER AND A.TABLE_NAME=B.TABLE_NAME
25 AND( A.NUM_ROWS is null or
26 ((NVL(B.INSERTS, ) + NVL(B.UPDATES, ) + NVL(B.DELETES, ))>= (CHANGE_PERCENT * A.NUM_ROWS/100))))
27 LOOP
28 BEGIN
29 DBMS_STATS.GATHER_TABLE_STATS(ITEM.OWNER, ITEM.TABLE_NAME, NULL, estimate_percent);
30 EXCEPTION
31 WHEN OTHERS THEN
32 NULL;
33 END;
34 END LOOP;
35
36 --temp table without statistic will gather at the first time
37 FOR ITEM IN (SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE PARTITIONED = AND TABLE_TYPE <> 'HEAP' AND LAST_ANALYZED IS NULL) LOOP
38 BEGIN
39 DBMS_STATS.GATHER_TABLE_STATS(ITEM.OWNER, ITEM.TABLE_NAME, null, estimate_percent);
40 EXCEPTION
41 WHEN OTHERS THEN
42 NULL;
43 END;
44 END LOOP;
45

45 rows fetched.

DBG_BREAK_INFO

语法:

select * from table(dbg_break_info(param1));

功能:查询断点信息,包含断点编号,断点所在程序的用户,断点所在程序的名称和类型,断点所在程序的物理行号,使能禁止标志,有效标志,断点触发条件(暂不支持),最大忽略次数。

注意:

  • 当前session为debug session且被调试程序为WAITING or IDLE状态,才可以使用该表函数。

说明:

  • 输入参数说明

    • param1:int类型,断点编号,从1开始计数。如果设置为0,则查询所有在使用的断点。

  • 返回参数说明

    • BREAK_ID:断点编号,从1开始计数。

    • OWNER:断点所在程序对应的用户。

    • OBJECT:断点所在程序名称。

    • PL_TYPE:程序类型。

    • LOC_LINE:断点所在程序对应物理行号。

    • IS_ENABLED:使能禁止标志。

    • IS_VALID:有效标志,设置断点后如果。

    • COND:断点触发条件(暂不支持)。

    • MAX_SKIP:断点最大忽略次数。

示例:

select * from table(dbg_break_info());
BREAK_ID OWNER OBJECT PL_TYPE LOC_LINE IS_VALID IS_ENABLED COND MAX_SKIP
------------ ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------ -------- ---------- ---------------------------------------------------------------- ------------
1 SYS SET_DELETE_BREAK_PROC PROCEDURE 9 FALSE TRUE
2 SYS SET_DELETE_BREAK_PROC PROCEDURE 10 FALSE TRUE
3 SYS SET_DELETE_BREAK_PROC PROCEDURE 11 FALSE TRUE
3 rows fetched.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3156362/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19240