`
yanghuidang
  • 浏览: 958078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[Oracle] How to Use DBMS_SUPPORT Package

阅读更多

整理:Fenng
日期:24-Oct-2004 
出处:http://www.dbanotes.net
版本:0.9


DBMS_SUPPORT是Oracle提供的一个软件包。供内部支持人员使用以更有效地跟踪SQL。这个包没有正式的说明文件,默认情况下,系统不安装这个包。如果需要使用的话,需进行单独设置。在你的$ORACLE_HOME/rdbms/admin/目录下应该存在dbmssupp.sql,prvtsupp.plb这两个文件。
SQL> connect / as sysdba                     
Connected.
SQL> @$ORACLE_HOME/rdbms/admin/dbmssupp.sql

Package created.

Package body created.

SQL>            
如果要其他用户也可以使用这个包,可以考虑提交如下授权操作(PUBLIC可以替换为具体的用户)并创建同义词:
SQL> GRANT EXECUTE ON dbms_support TO PUBLIC;

Grant succeeded.

SQL> CREATE PUBLIC SYNONYM dbms_support FOR dbms_support;
DBMS_SUPPORT的结构并不复杂:
SQL> desc DBMS_SUPPORT

FUNCTION MYSID RETURNS NUMBER
FUNCTION PACKAGE_VERSION RETURNS VARCHAR2
PROCEDURE START_TRACE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 WAITS                          BOOLEAN                 IN     DEFAULT
 BINDS                          BOOLEAN                 IN     DEFAULT
PROCEDURE START_TRACE_IN_SESSION
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 SID                            NUMBER                  IN
 SERIAL                         NUMBER                  IN
 WAITS                          BOOLEAN                 IN     DEFAULT
 BINDS                          BOOLEAN                 IN     DEFAULT
PROCEDURE STOP_TRACE
PROCEDURE STOP_TRACE_IN_SESSION
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 SID                            NUMBER                  IN
 SERIAL                         NUMBER                  IN

SQL> 
其中通过MYSID可以获得当前会话(Session)的SID(以及serial#):
SQL> SELECT SYS.dbms_support.mysid FROM DUAL;

     MYSID
----------
        25

SQL> 
SQL>SELECT SID, serial# FROM v$session WHERE SID = dbms_support.mysid;

       SID    SERIAL#
---------- ----------
        25       4328

SQL> 
通过package_version可以得到软件包所能支持的最低的PL/SQL的版本:
SQL> SELECT dbms_support.package_version
  2  FROM dual;

PACKAGE_VERSION
--------------------------------------------------------------------
DBMS_SUPPORT Version 1.0 (17-Aug-1998) - Requires Oracle 7.2 - 8.0.5
如何激活SQL跟踪? START_TRACE有两个参数:WAITS和BINDS。其中WAITS默认为TRUE,BINDS默认为FALSE。如果简单的提交:
SQL>EXECUTE dbms_support.start_trace;
则默认激活10046事件,level 1。也即等同于:
SQL>ALTER SESSION SET EVENTS '10046 trace name context forever, level 1';
如果提交:
SQL>EXECUTE dbms_support.start_trace (BINDS=>true);
则激活10046事件,level 4。等同于:
SQL>ALTER SESSION SET EVENTS '10046 trace name context forever, level 4';
如果提交:
SQL>EXECUTE dbms_support.start_trace (WAITS=>true);
则激活10046事件,level 8。等同于:
SQL>ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';
停止跟踪提交:
SQL>EXECUTE dbms_support.stop_trace;
start_trace_in_session有四个参数,可参考上面DESCRIBE的输出。如果要跟踪其他用户的会话,就要用上它了。以上面的输出举例(需要SID和SERIAL#):
SQL>EXECUTE dbms_support.start_trace_in_session (25, 4328, waits->true,binds=>true,);
上面这条命令和以下语句起到同样功能:
SQL>EXECUTE dbms_system.set_ev (25, 4328, 10046, 4, 8);
停止跟踪提交:
SQL>EXECUTE dbms_support.stop_trace_in_session (25, 4328);

其他问题


这个包从Oracle RDBMS 7.2 开始就有提供。但在某些版本/平台上可能不存在。

注:各个Level的基本解释:
Level 0 = No statistics generated 
Level 1 = standard trace output including parsing, executes and fetches plus more. 
Level 2 = Same as level 1. 
Level 4 = Same as level 1 but includes bind information 
Level 8 = Same as level 1 but includes wait's information 
Level 12 = Same as level 1 but includes binds and waits 

参考信息


Metalink - http://metalink.oracle.com ( Note 62294.1 )

本文作者

Fenng,某美资公司DBA,业余时间混迹于各数据库相关的技术论坛且乐此不疲。目前关注如何利用ORACLE数据库有效地构建企业应用。对Oracle tuning、troubleshooting有一点研究。
个人技术站点:http://www.dbanotes.net/ 。可以通过电子邮件 dbanotes@gmail.com 联系到他。

原文出处

http://www.dbanotes.net/Oracle/Oracle_DBMS_SUPPORT.htm

回首页

All Articles (by Fenng) are licensed under a Creative Commons License.
I would welcome any feedback. Please send questions, comments or corrections to dbanotes@gmail.com
分享到:
评论

相关推荐

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...

    ORACLE SYS.DBMS_REGISTRY_SYS has errors

    标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...

    oracle dbms_lob

    Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...

    使用dbms_stats包手工收集统计信息

    Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...

    dbms_obfuscation_toolkit加密解密数据

    ### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...

    ORACLE数据库封装过程DBMS_SQL的应用.pdf

    ORACLE 数据库封装过程 DBMS_SQL 的应用 DBMS_SQL 是 ORACLE 数据库提供的一种封装过程,它允许开发者在 PL/SQL 程序中执行 DDL 语句和动态的 SQL 语句。DBMS_SQL 的应用可以解决在项目开发中对用户管理和 DDL 使用...

    Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml

    Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml

    Oracle统计分析-dbms_stats.pdf

    Oracle 统计分析-dbms_stats.pdf Oracle 中的统计分析对于数据库的性能至关重要。dbms_stats 是 Oracle 提供的一个统计分析工具,能够良好地估计统计数据,特别是针对较大的分区表,并且能获得更好的统计结果,最终...

    DBMS_STATS.GATHER_TABLE_STATS详解.pdf

    `DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关重要。该过程允许数据库管理员通过一系列参数来灵活控制...

    DBMS_JOB包创建ORACLE定时任务

    ### DBMS_JOB包创建Oracle定时任务详解 在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,...

    Oracle动态SQL之DBMS_SQL系统包的使用.pdf

    本文将探讨Oracle中的动态SQL实现机制,重点介绍DBMS_SQL系统包的结构与使用方法,通过实例展示动态SQL的基本用法和相关技巧。 动态SQL是指在程序执行时才能确定的SQL语句,它与静态SQL相对。静态SQL的语句在编写...

    怎样禁用及回收java的授权dbms_java

    在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了Java应用程序的企业来说尤为重要。本文将详细介绍如何利用`dbms_java`包来...

    Oracle用RMAN和DBMS_JOB包实现自动存储2

    Oracle数据库的管理和保护是数据库管理员(DBA)的关键任务,RMAN(Recovery Manager)和DBMS_JOB包提供了自动化和高效管理这些任务的工具。RMAN是Oracle提供的一个强大的备份和恢复工具,它允许DBA执行复杂的数据库备份...

    DBMS_SQL的使用

    ### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...

    oracle数据库定时任务dbms_job的用法详解

    Oracle数据库中的DBMS_JOB包是用于创建和管理定时任务的重要工具,它允许用户安排数据库执行特定的PL/SQL过程或存储过程。这个包提供了一系列的子程序,用于创建、修改、启动、停止以及监控数据库作业。下面将详细...

    DBMS_RANDOM.VALUE OR DBMS_RANDOM.STRING

    在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...

    DBMS_SQL.rar_dbms_oracle

    在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...

    ORACLE DBMS STATS ERROR

    然而,当出现错误“ORA-04063: package body 'SYS.DBMS_REGISTRY_SYS' has errors”时,表明`DBMS_STATS`包或与其相关的`SYS.DBMS_REGISTRY_SYS`包体存在错误,这可能对数据库性能和正常操作造成影响。 **问题症状*...

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    标题“DBMS_XPLAN: 显示Oracle执行计划”是一个关于Oracle数据库系统中用于分析SQL查询执行性能的重要工具的讨论。这个工具允许用户查看SQL语句的执行计划,从而理解数据库如何处理这些语句,以及哪些操作可能影响...

Global site tag (gtag.js) - Google Analytics