`
844604778
  • 浏览: 558440 次
文章分类
社区版块
存档分类
最新评论

DBMS_SYSTEM包的使用

 
阅读更多

10g以前,对别的session做10046跟踪,sql_trace跟踪需要用到dbms_system这个包,可以我在10gR2官方文档上面没有找到这个包的解释,然而这个包很重要,下面收集一些有用的过程,有备无患。

dbms_system.get_env(var IN VARCHAR2, val OUT VARCHAR2)

这个过程返回ORACLE的环境变量

例如:

SQL> declare env varchar2(200);
2 begin
3 dbms_system.get_env('ORACLE_HOME',env);
4 dbms_output.put_line(env);
5 end;
6 /

C:/oracle/product/10.2.0/db_1 ------我的ORACLE_HOME
PL/SQL procedure successfully completed

SQL> declare sid varchar2(200);
2 begin
3 dbms_system.get_env('ORACLE_SID',sid);
4 dbms_output.put_line(sid);
5 end;
6 /

robinson-------我的ORACLE_SID

PL/SQL procedure successfully completed

dbms_system.read_ev (iev IN BINARY_INTEGER, oev OUT BINARY_INTEGER)

这个过程返回events level.

例如:

SQL> declare lev integer;
2 begin
3 dbms_system.read_ev(10046,lev);
4 dbms_output.put_line(lev);
5 end;
6 /


0---0表示没有设置10046跟踪级别,因为10046级别只有1,4,8,12

PL/SQL procedure successfully completed

dbms_system.set_sql_trace_in_session(
sidNUMBER,
serial# NUMBER,
sql_trace BOOLEAN);

这个过程就是我们最常用的给别的SESSION 设置sql_trace跟踪了。

例如:

exec dbms_system.set_sql_trace_in_session(159,15,true);---开启SQL_TRACE跟踪
exec dbms_system.set_sql_trace_in_session(159,15,false);---关闭SQL_TRACE跟踪

dbms_system.set_ev(
si IN BINARY_INTEGER, -- session id
se IN BINARY_INTEGER, -- session serial number
ev IN BINARY_INTEGER, -- event number between 10000 and 10999
le IN BINARY_INTEGER, -- event level
nm IN VARCHAR2);

这个过程就是我们常用的给别的session设置10046跟踪了

例如:

exec dbms_system.set_ev(159,15,10046,8,'robinson'); ----开启级别为8的跟踪
exec dbms_system.set_ev(159,15,10046,0,'robinson'); -----关闭跟踪

dbms_system.set_int_param_in_session(
sid IN NUMBER,
serial# IN NUMBER,
parnam IN VARCHAR2,
intval IN BINARY_INTEGER);

这个过程给任意session设置integer的参数

例如:

SQL> exec dbms_system.set_int_param_in_session(159,15,'db_file_multiblock_read_count',128);

PL/SQL procedure successfully completed

dbms_system.set_bool_param_in_session(
sid IN NUMBER,
serial# IN NUMBER,
parnam IN VARCHAR2,
bval IN BOOLEAN);

这个存储过程给任意的session设置boolean的参数

例如:

SQL> exec dbms_system.set_bool_param_in_session(159,15,'sql_trace',TRUE);

PL/SQL procedure successfully completed

SQL> exec dbms_system.set_bool_param_in_session(159,15,'sql_trace',FALSE);

PL/SQL procedure successfully completed

General
Source {ORACLE_HOME}/rdbms/admin/prvtutil.plb
First Available 7.3.4
Constants
Name Value

trace_file

1

alert_file

2

?

3
Dependencies SELECT name FROM dba_dependencies WHERE referenced_name = 'DBMS_SYSTEM'
UNION
SELECT referenced_name FROM dba_dependencies WHERE name = 'DBMS_SYSTEM';
Security Model Execute is granted to OEM_MONITOR
ADD_PARAMETER_VALUE (new in 11g)

Writes a listed parameter to the spfile following a call to ALTER SYSTEM SET.
dbms_system.add_parameter_value(
parname IN VARCHAR2,
value IN VARCHAR2,
scope IN VARCHAR2,
sid IN VARCHAR2,
position IN BINARY_INTEGER);
col value format a100

SELECT value
FROM gv$parameter
WHERE name = 'control_files';

exec dbms_system.add_parameter_value('control_files', 'c:/temp/control04.ctl', 'BOTH', 'orabase', 4);

SELECT value
FROM gv$parameter
WHERE name = 'control_files';
DIST_TXN_SYNC
Distributed transaction synchronization used in XA interfaces. Not intended for end-user usage. dbms_system.dist_txn_sync(inst_num IN NUMBER);
execdbms_system.dist_txn_sync(2);
GET_ENV

Returns the value of environment variables
dbms_system.get_env(var IN VARCHAR2, val OUT VARCHAR2);
set serveroutput on

DECLARE
RetVal VARCHAR2(4000);
BEGIN
dbms_system.get_env('ORACLE_SID', RetVal);
dbms_output.put_line(RetVal);
END;
/

DECLARE
RetVal VARCHAR2(100);
BEGIN
dbms_system.get_env('ORACLE_HOME', RetVal);
dbms_output.put_line(RetVal);
END;
/
KCFRMS

Resets the timers displayed by MAX_WAIT in GV$SESSION_EVENT and MAXIORTM and MAXIOWTM in GV$FILESTAT (X$KCFIO)
dbms_system.kcfrms;
SELECT max_wait FROM gv_$session_event;

SELECT maxiortm, maxiowtm FROM gv_$filestat;

execdbms_system.kcfrms;

SELECT max_wait FROM gv_$session_event;

SELECT maxiortm, maxiowtm FROM gv_$filestat;
KSDDDT
Prints the date stamp to the target file (alert log and/or trace file) dbms_system.ksdddt;
execdbms_system.ksdddt;
KSDFLS
Flushes any pending output to the target alert log or trace file dbms_system.ksdfls;
execdbms_system.ksdfls;
KSDIND
Does an 'indent' before the next write (ksdwrt) by printing that many colons (:) before the next write. dbms_system.ksdind(lvl IN BINARY_INTEGER);

Range ofvalid values from 0 to 30.
execdbms_system.ksdind(5);
exec dbms_system.ksdwrt(3, 'Test Message');
KSDWRT

Prints a message to the target file (alert log and/or trace file)
dbms_system.ksdwrt (dest IN BINARY_INTEGER,tst IN VARCHAR2);

1: Write to the standard trace file
2: Write to the alert log
3: Write to both files at once
execdbms_system.ksdwrt(3, '-- Start Message --');
execdbms_system.ksdwrt(3, 'Test Message');
execdbms_system.ksdwrt(3, '-- End Message --');
READ_EV

Get the level for events set in the current session
dbms_system.read_ev (iev IN BINARY_INTEGER, oev OUT BINARY_INTEGER);

lev: event numbers 10000 to 10999
event level: default is 0 if not set
ALTER SYSTEM SET SQL_TRACE=TRUE;

set serveroutput on

DECLARE
lev BINARY_INTEGER;
BEGIN
dbms_system.read_ev(10046, lev);
dbms_output.put_line(lev);
END;
/
REMOVE_PARAMETER_VALUE (new in 11g)

Removes a listed parameter to the spfile following a call to ALTER SYSTEM SET.

Overload 1
dbms_system.remove_parameter_value(
parname IN VARCHAR2,
value IN VARCHAR2,
scope IN VARCHAR2,
sid IN VARCHAR2);
TBD
Overload 2 dbms_system.remove_parameter_value(
parname IN VARCHAR2,
position IN BINARY_INTEGER,
scope IN VARCHAR2,
sid IN VARCHAR2);
TBD
SET_BOOL_PARAM_IN_SESSION
Sets boolean-type init.ora parameters in any session dbms_system.set_bool_param_in_session(
sid IN NUMBER,
serial# IN NUMBER,
parnam IN VARCHAR2,
bval IN BOOLEAN);
execdbms_system.set_bool_param_in_session(10, 161, 'sql_trace', TRUE);
SET_EV

Set event trace level
dbms_system.set_ev(
si IN BINARY_INTEGER, -- session id
se IN BINARY_INTEGER, -- session serial number
ev IN BINARY_INTEGER, -- event number between 10000 and 10999
le IN BINARY_INTEGER, -- event level
nm IN VARCHAR2);
Level Waits Binds
1 False False
4 False True
8 True False
12 True True
execdbms_system.set_ev(10, 1008, 10046, 12, NULL);
SET_INT_PARAM_IN_SESSION

Sets integer-type init.ora parameters in any session
dbms_system.set_int_param_in_session(
sid IN NUMBER,
serial# IN NUMBER,
parnam IN VARCHAR2,
intval IN BINARY_INTEGER);
execdbms_system.set_int_param_in_session(10, 161, 'sort_area_size', 1048576);
SET_SQL_TRACE_IN_SESSION

Turn tracing on or off in any session
dbms_system.set_sql_trace_in_session(
sidNUMBER,
serial# NUMBER,
sql_trace BOOLEAN);
execdbms_system.set_sql_trace_in_session(10, 1008, TRUE);

execdbms_system.set_sql_trace_in_session(10, 1008, FALSE);
WAIT_FOR_EVENT

Puts the current session into a wait state for any named wait event
dbms_system.wait_for_event(
event VARCHAR2,
extended_id BINARY_INTEGER,
timeout BINARY_INTEGER);

extended_id is placed into the P1 column of gv_$session_wait
execdbms_system.wait_for_event('rdbms ipc message', 50, 20);

SELECT sid, event, p1, seconds_in_wait, state
FROM gv_$session_wait
WHERE sid = 10;
分享到:
评论

相关推荐

    Oracle数据库管理员技术指南

    8.5.2 使用 DBMS_SYSTEM 设置用户 会话外的跟踪 8.5.3 生成系统跟踪 8.5.4 使用 tkprof 解释跟踪文件 8.5.5 使用 AUTOTRACE 获得 SQL 语句 执行计划和统计数据 8.6 优化回退段 8.6.1 最小化回退段争用 8.6.2...

    ORACLE日志丢失的恢复

    1.切换当前日志到新的日志组 alter system switch logfile; alter system switch logfile; ...方法一:使用alter database clear logfile group 1 1)正常关闭 2)del删除 3)startup …… …… ……

    orcale常用命令

    1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 ...su - oracle -c "exp system/manager full=y inctype=cumulative file=/oracle/export/db_cumu$rq.dmp...

    oracle坏块处理方法[归类].pdf

    (二)使用 DBMS_REPAIR 包,由 dbmsrpr.sql 与 prvtrpr.plb 生成该包在特定表中生成损坏块的信息。 1. DBMS_REPAIR.ADMIN_TABLES 用于创建与删除存储损坏块的表。其中 TABLE_TYPE 为:REPAIR_TABLE(表),ORPHAN_...

    阿里巴巴的Oracle DBA笔试题参考答案

    exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace); select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1); exec dbms_system.set_ev(&sid,&serial#,&...

    oracle实验报告

    1. 打开SQLDeveloper,建立system链接、bs+学号连接登录ORCL数据库。 2. 在SQLDeveloper中,用密码tiger解锁scott账号。 3. 触发器注意事项 (1)触发器可以声明为在对记录进行操作之前,在之前(检查约束之前和 ...

    Oracle 数据库 AWR 报告详解

    AWR 报告的核心组件是 dbms_workload_repository 包,位于 $ORACLE_HOME/rdbms/admin 目录下。AWR 报告可以通过运行 awrrpt.sql 脚本生成,该脚本位于 $ORACLE_HOME/rdbms/admin 目录下。 AWR 报告的主要组成部分...

    Oracle JOB 用法小结

     sql> alter system set job_queue_processes=n;(n>0)  job_queue_processes最大值为1000    查看job queue 后台进程  sql>select name,description from v$bgprocess;    二,dbms_job package 用法...

    oracle有用资料.docx

    9. 使用LogMiner分析重做日志文件:使用DBMS_LOGMNR包分析重做日志文件,从而可以追溯数据库的所有变化。 表空间管理 表空间是Oracle数据库中用于存储数据的逻辑存储单位。表空间管理包括创建表空间、管理表空间...

    Oracle8i_9i数据库基础

    第十七章 创建包和使用包 287 §17.1 引言 287 §17.2 包的定义 288 §17.3 包的开发步骤 289 §17.4 包的头部说明 289 §17.5 包体的说明 290 §17.6 删除过程、函数和包 293 §17.7 包的管理 293 §17.7.1 包有关...

    Oracle数据库DBA面试题及答案_经典.docx

    2. 使用DBMS_METADATA.GET_DDL包 6. 查看数据库引擎报错的方法: 查看alert log。 7. truncate和delete命令的区别: truncate是DDL操作,它移动HWK,不需要rollback segment。delete是DML操作,需要rollback ...

    我收集的oracle经典面试题.docx

    * 两种检查表结构的方法:DESCRIBE命令和DBMS_METADATA.GET_DDL包。 * 生成explain plan:可以使用utlxplan.sql和utlxplp.sql脚本。 * column可以用来区别V$视图和GV$视图:INST_ID指明集群环境中具体的某个instance...

    oracle恢复工具-FY_Recover_Data

    由于在System表空间中已经记录了新的信息, 因此用当前的System信息是不能恢复过来的,在AUL/MyDUL中可以当作没有System时的情况来处理,在下面的命令中, 我们用Truncate后的数据对象号就不能进行恢复, 而使用Truncate...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    mssql 微软 只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。 中型企业 Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,...

    Canteen-System:此仓库包含与SL和DBMS mini项目相关的所有文件

    食堂系统 此仓库包含与SL和DBMS mini项目相关的所有文件

    (完整版)计算机专业外文翻译+原文-数据库管理系统介绍.doc

    数据库管理系统(Database Management System,简称DBMS)是一种系统软件包,用于创建、访问和维护数据库记录。它提供了一个接口,连接数据库和数据库用户之间,包括应用程序员、经理和其他需要信息的人员、操作系统...

    oracle面试题集锦.pdf

    可以使用 DESCRIBE 命令或 DBMS_METADATA.GET_DDL 包来检查表结构。 6. 查看数据库引擎报错的方法: 可以查看 alert log 来查看数据库引擎的报错。 7. truncate 和 delete 命令的不同: truncate 是 DDL 操作,不...

    school-management-system:DBMS项目

    学校管理系统课程编号:CS254课程名称:DBMS实验室学期:B. Tech第四学期部分:S1或S2学年:2020-21课程讲师:博士Annappa B和Sharath Yaji先生团队成员: 詹曼什·阿加瓦尔(Janmansh Agarwal),191CS205 克鲁达卡...

    Oracle 50 道面试题及答案.docx

    2、使用 DBMS_METADATA.GET_DDL 包。 5.查看数据库引擎的报错alert log 可以使用 alert log 查看数据库引擎的报错信息。 6.truncate 和 delete 命令 truncate 和 delete 命令都可以用来删除表中所有的记录。区别...

Global site tag (gtag.js) - Google Analytics