该网页试图无法显示数据您试图从目录中执行cgi、isapi活其他可执行程序,但该目录不允许执行程序,大神教

1208人阅读
Oracle Events(8)
& & & & Oracle跟踪文件分为三种类型:
& & & & 1:警告日志文件。记录了数据库启动、运行、关闭时的活动情况。当数据库出现问题时,首先要查看该文件,文件名为alert_sid.log
& & & & 2:后台跟踪文件。记录了oracle后台进程的运行状况,名称为sid_processname_processid.trc,存储目录为BACKGROUND_dump_dest
& & & & 3:用户跟踪文件。记录了连接到数据库的用户进程的运行信息,名称为SID_ORA_PROCESSID.TRC,存储目录为USER_DUMP_DEST.
& & & & 在oracle11g中,这三种文件位于同一目录下:
& & & &设置跟踪事件,会导致oracle将与该事件有关的信息转储到跟踪文件中。依据设置事件的方式,可以将跟踪事件分为2类:PROCESS-EVENT(通过初始化参数文件设置的事件)、SESSION-EVENT(通过alter session set events或者alter system set events设置的时间)。要使PROCESS-EVENT事件生效,必须重新启动数据库实例,PROCESS-EVENT事件会影响连接到数据库的每一个用户进程。在参数文件中设置多个事件可以采用“:”分隔符,如event=&event1:event2:event3&。也可以依次设置多个event,如:
event=&event1&
event=&event2& (注意,在event1和event2之间不要存在其他参数,否则只有最后的event即event2生效)。
& & & & 对不同的跟踪事件,oracle会产生不同的行为,根据行为的不同,我们大致可以将跟踪事件分为4类:
& & & & 1.转储oracle中的某部分内容,如数据块、控制文件内容等。转储活动会在收到跟踪事件命令的同时执行。这类事件不可以通过参数文件进行设置。
& & & & 2.跟踪错误信息。设置这类事件,oracle会将特定错误的堆栈信息转储到跟踪文件中。
& & & & 3.更改oracle的执行路径。这类事件会影响oracle代码段的执行路径,例如10269事件,会促使smon进程停止对free-space的合并操作。
& & & & 4.跟踪进程的相关信息。例如10046事件和10053事件。该类事件会将进程上下文中的特定信息转储到跟踪文件中。
语法格式
& & & &&alter&system|session&set&events&‘[eventnumber|immediate]&trace&name&eventname&[forever]&[,&level&levelnumber]&:&&…….’
& & 通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。
& & 格式说明:eventnumber指触发dump的事件号,事件号可以是Oracle错误号或oralce内部事件号,内部事件号在1之间,不能与immediate关键字同用;immediate关键字表示命令发出后,立即将指定的结构dump到跟踪文件中,这个关键字只用在alter
session语句中,并且不能与eventnumber、forever关键字同用。trace name是关键字。eventname指事件名称(见后面),即要进行dump的实际结构名。若eventname为context,则指根据内部事件号进行跟踪。forever关键字表示事件在实例或会话的周期内保持有效状态,不能与immediate同用。level为事件级别关键字。但在dump错误栈(errorstack)时不存在级别。levelnumber表示事件级别号,一般从1到10,1表示只dump结构头部信息,10表示dump结构的所有信息。
& & 对于alter session设置的事件,仅仅只对当前session有效。对于alter system 设置的事件,除对当前session有效外,对新登录的session同样有效,但是对于alter system命令执行之前打开的session是无效的。
IMMEDIATE相关的事件
1).Global&Area&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&global_area&level&n';&
2).Library&Cache&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&library_cache&level&n';&
1&library&cache统计信息&
4&包含结构()
3).Row&Cache&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&row_cache&level&n';&
1&row&cache统计信息&
8&包含结构
4).Buffers&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&buffers&level&n';&
1&buffer&header&
2&level&1&+&block&header&
3&level&2&+&block&contents&
4&level&1&+&hash&chain&
5&level&2&+&hash&chain&
6&level&3&+&hash&chain&
8&level&4&+&users/waiters&
9&level&5&+&users/waiters&
10&level&6&+&users/waiters
5).Buffer&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&buffer&level&n';&
n为某个指定的,该命令可以转储某个在中的所有版本。
Alter&SESSION&SET&EVENTS&'immediate&trace&name&heapdump&level&level';&
1&PGA摘要&
2&SGA摘要&
4&UGA摘要&
8&Current&call(CGA)摘要&
16&User&call(CGA)摘要&
32&Large&call(LGA)摘要&
1025&PGA内容&
2050&SGA内容&
4100&UGA内容&
8200&Current&call内容&
16400&User&call内容&
32800&Large&call内容
7).Sub&Heap&
oracle&9.0.1版本之前&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&heapdump_addr&level&n';&
若为的地址,转储的是的摘要信息&
若为的地址,转储的则是的内容&
oracle&9.2.0版本之后&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&heapdump_addr&level&n,&addr&m';&
其中为的地址&
n为转储的摘要,为转储的内容
8).Process&State&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&processstate&level&n';
9).System&State&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&systemstate&level&n';
10).Error&State&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&errorstack&level&n';&
0&Error&stack&
1&level&0&+&function&call&stack&
2&level&1&+&process&state&
3&level&2&+&context&area
11).Hang&Analysis&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&hanganalyze&level&n';
12).Work&Area&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&workareatab_dump&level&n';&
1&SGA信息&
2&Workarea&Table摘要信息&
3&Workarea&Table详细信息
13).Latches&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&latches&level&n';&
1&latch信息&
2&统计信息
14).Events&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&events&level&n';&
1&session&
2&process&
15).Locks&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&locks&level&n';
16).Shared&Server&Process&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&shared_server_state&level&n';&
n取值为
17).Background&Messages&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&bg_messages&level&n';&
oracle&7之前&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&blockdump&level&n';&
oracle8以后&
Alter&SYSTEM&DUMP&DATAFILE&file#&BLOCK&block#;&
Alter&SYSTEM&DUMP&DATAFILE&file#&
BLOCK&MIN&minimum_block#&
BLOCK&MAX&maximum_block#&
2).Tree&Dump&&&查看索引的结构
Alter&SESSION&SET&EVENTS&'immediate&trace&name&treedump&level&n';&
object_id可以从索引的名字得到。
3).Undo&Segment&Header&&查看回滚段头部信息
Alter&SYSTEM&DUMP&UNDO_HEADER&'segment_name';
4).Undo&for&a&Transaction&
Alter&SYSTEM&DUMP&UNDO&BLOCK&'segment_name'&XID&xidusn&xidslot&
5).File&Header&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&file_hdrs&level&n';&
1 控制文件中的文件头信息
2&level&1&+ 通用文件头信息&
3&level&2&+&数据完整文件头信息&
10&level&3
6).Control&file&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&controlf&level&n';&
1&&控制文件中的文件头信息
2&level&1&+&数据库信息&检查点信息&
3&level&2&+&可重用节信息&
10&level&3
7).Redo&log&Header&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&redohdr&level&n';&
1&控制文件中的信息&
2&level&1&+ 通用文件头信息&
3&level&2&+ 完整日志文件头信息&
10&level&3
8).Redo&log&
Alter&SYSTEM&DUMP&LOGFILE&'FileName';&
Alter&SYSTEM&DUMP&LOGFILE&'FileName'&
SCN&MIN&MinimumSCN&
SCN&MAX&MaximumSCN&
TIME&MIN&MinimumTime&
TIME&MAX&MaximumTime&
LAYER&Layer&
OPCODE&Opcode&
DBA&MIN&FileNumber&.&BlockNumber&
DBA&MAX&FileNumber&.&BlockNumber&
RBA&MIN&LogFileSequenceNumber&.&BlockNumber&
RBA&MAX&LogFileSequenceNumber&.&BlockN&
&详细内容请看:
9).Loghist&
Alter&SESSION&SET&EVENTS&'immediate&trace&name&loghist&level&n';&
n=1&dump控制文件中最早和最迟的日志历史项&
n&1 dump 2^n个日志历史项
获取诊断事件号
& & & & 大部分的诊断事件的数值都是在至范围内,使用如下的脚本可以查看到所有的诊断事件:
SET SERVEROUTPUT ON
err_msg VARCHAR2(120);
dbms_output.enable (1000000);
FOR err_num IN 1
err_msg := SQLERRM (-err_num);
IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN
dbms_output.put_line (err_msg);
相关的PLSQL包
& & & & DBMS_MONITOR包
与该包相关的还包括几个视图:v$client_stats\&V$SERV_MOD_ACT_STATS。
client_id 可以通过DBMS_SESSION.SET_IDENTIFIER来设置。
& & & & DBMS_SYSTEM包
& &关于该包的详细信息,请参照:
另外,我们还可以使用ORADEBUG工具。如
对一个进程设置诊断事件:
ORADEBUG&EVENT&event&TRACE&NAME&CONTEXT&FOREVER,&LEVEL&level
禁用设置的诊断事件:
ORADEBUG&EVENT&event&TRACE&NAME&CONTEXT&OFF
对一个会话设置诊断事件:
ORADEBUG&SESSION_EVENT&event&TRACE&NAME&CONTEXT&FOREVER,&LEVEL&level
禁用设置的诊断事件:
ORADEBUG&SESSION_EVENT&event&TRACE&NAME&CONTEXT&OFF
查看当前SESSION设置的事件
SET SERVEROUTPUT ON
l_level NUMBER;
FOR l_event IN 1
dbms_system.read_ev (l_event,l_level);
IF l_level & 0 THEN
dbms_output.put_line ('Event '||TO_CHAR (l_event)||
' is set at level '||TO_CHAR (l_level));
其他注意事项
确定使用的诊断事件对于当前的Oracle数据库版本是合法的:因为对于不同版本的Oracle数据库来说,诊断事件的含义和用法都有所不同。
确定使用的诊断事件允许设定的级别,在很多时候设定的级别不同是会影响到诊断事件所代表的行为的。
在INITSID.ORA文件中设置的任何诊断事件,如果Oracle数据库需要升级,一定要提前注释或者取消。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:170106次
积分:3018
积分:3018
排名:第10585名
原创:115篇
转载:11篇
评论:25条
阅读:2758
阅读:14200Tracing Enhancements Using DBMS_MONITOR | Oracle
这篇文章主要介绍dbms_monitor包中新增加的跟踪方法。新增加的跟踪过程可以基于特定的客户端标识或服务名,模块名与操作名的组合来启用诊断与工作量管理。跟踪也可以在会话级别启用。在有些情况下可以产生多个跟踪文件(例如,当对一个模块跟踪服务级别时)。trcsess工具可以用来扫描所有跟踪文件并将它们合并成一个跟踪文件。在合并之后可以使用标准跟踪文件分析方法比如tkprof。对客户端标识或服务/模块/操作的跟踪状态是永久的可以跨会话的断开与数据库的关闭,并且可以应用于所有实例。跟踪直到使用dbms_monitor禁用之前都是启用状态。
如何查看是否启用跟踪
当客户端与服务/模块/操作跨会话断开与数据库关闭永久存在时,有一种方法来判断是否启用了跟踪。当启用跟踪时,跟踪信息会被记录到dba_enabled_traces中。
SQL> select trace_type, primary_id, qualifier_id1, waits, binds from dba_enabled_
TRACE_TYPE
PRIMARY_ID
QUALIFIER_ID1
WAITS BINDS
--------------------- --------------------------------------- ------------------------------- ----- -----
SERVICE_MODULE
可以看到三个不同的跟踪被启用。
第一行:跟踪所有由SQL*Plus所执行的SQL语句
第二行:跟踪所有客户端标识符为’HUGO’的所有会话
第三行:跟踪通过服务&#_DGB’连接到数据库的所有程序
session_trace_enable函数
session_trace_enable对本地实例的指定会话启用SQL跟踪,语法如下:
dbms_monitor.session_trace_enable(session_id=>x,serial_num=>y,waits=>(TRUE|FALSE),binds=>(TRUE|FALSE));
dbms_monitor.session_trace_disable(session_id=>x,serial_num=>y);
缺省情况下跟踪对于等待为true,而绑定变量为false
通过查询v$session得到会话与serial号
SQL> select sid, serial#,username from
SERIAL# USERNAME
---------- ---------- ------------------------------
3257 INSUR_CHANGDE
20923 INSUR_CHANGDE
19225 INSUR_CHANGDE
2191 CARD_DB
47221 YBCX
25173 INSUR_CHANGDE
执行下面的命令开始跟踪
SQL> execute dbms_monitor.session_trace_enable(157,25173);
PL/SQL procedure successfully completed.
需要注意的是在dba_enabled_traces视图中没有记录,因为跟踪并没有经历数据库关闭。
可以通过查询v$session得到被跟踪会话列表:
SQL> select sid,serial#,username,sql_trace_waits,sql_trace_binds,sql_trace_plan_stats
sql_trace = 'enabled';
no rows selected
当会话断羡慕或执行以下命令可以停止跟踪
SQL> execute dbms_monitor.session_trace_disable(157,25173);
PL/SQL procedure successfully completed.
client_id_trace_enable函数
在多层架构环境中,来自终端用户的一个请求将会通过中间层被路由到不同的数据库会话。这意味着在终端客户端与数据库会话之间不存在静态关联。10g之前的版本,没有一种简单方法来跨不同数据库会话对客户端进行跟踪。通过引入新的属性client_identifier使用端对端的跟踪成为可能,它用来唯一标识一个指定的终端。客户端标识被记录在v$session视图的client_identifier列中。还可以通过系统上下文来查看。语法如下:
execute dbms_monitor.client_id_trace_enable ( client_id =>'client_id', waits => (TRUE|FALSE), binds => (TRUE|FALSE) );
execute dbms_monitor.client_id_trace_disable ( client_id =>'client_id');
缺省情况下跟踪对于等待为true,绑定变量为false
下面通过使用dbms_session.set_identifier过程来设置client_identifier
SQL> execute dbms_session.set_identifier('JY');
PL/SQL procedure successfully completed.
可以通过两种方法来找到客户端标识
1.在实际会话中
SQL> select sys_context('USERENV','CLIENT_IDENTIFIER') client_
--------------------------------------------------------------------------------
2.从不同的会话中
SQL> select client_identifier client_id from v$session where sid =18;
----------------------------------------------------------------
对客户端标识为’JY’的所有会话启用跟踪
SQL> execute dbms_monitor.client_id_trace_enable('JY');
PL/SQL procedure successfully completed.
现在这个跟踪可以跨越数据库的关闭
select trace_type, primary_id, qualifier_id1, waits, binds from dba_enabled_
TRACE_TYPE
PRIMARY_ID
QUALIFIER_ID1
WAITS BINDS
--------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----- -----
为了禁用跟踪,执行以下命令:
SQL> execute dbms_monitor.client_id_trace_disable('JY');
PL/SQL procedure successfully completed.
select trace_type, primary_id, qualifier_id1, waits, binds from dba_enabled_
TRACE_TYPE
PRIMARY_ID
QUALIFIER_ID1
WAITS BINDS
--------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----- -----
这可能造成有时生成多个跟踪文件。例如,当使用共享服务器时,不同的共享服务器进程可以执行SQL语句。这将导致生成多个跟踪文件。对于RAC来说也同样会生成多个跟踪文件。后面将介绍如何使用trcsess工具将多个跟踪文件合并成一个跟踪文件。
SERV_MOD_ACT_TRACE_ENABLE函数
端到端的跟踪对于有效管理与使用services,module与action来计算应用程序工作量很有用。可以使用serv_mod_act_trace_enable函数来对服务名,模块名与操作名特定的组合对全局或特定实例启用SQL跟踪。
通过查询v$session视图的service_name,module和action列可以查看服务名,模块与操作名。语法如下:
execute dbms_monitor.serv_mod_act_trace_enable('Service1', 'Module1', 'Action1', waits => (TRUE|FALSE), binds => (TRUE|FALSE), instance_name => 'ORCL' );
execute dbms_monitor.serv_mod_act_trace_disable('Service1', 'Module1', 'Action1');
缺省情况下跟踪对于等待为true,对于绑变量为false。缺省实例名为null。
下面跟踪通过SQL*Plus与缺省服务SYS$USERS所执行的所有SQL语句
SQL> execute dbms_monitor.serv_mod_act_trace_enable('SYS$USERS', 'SQL*Plus' );
PL/SQL procedure successfully completed.
检查是否启用跟踪
SQL> select primary_id, qualifier_id1, waits, binds from
dba_enabled_traces where trace_type = 'SERVICE_MODULE';
PRIMARY_ID
QUALIFIER_ID1
WAITS BINDS
---------------------------------------------------------------- ---------------------------------------------------------------- ----- -----
SQL> execute dbms_monitor.serv_mod_act_trace_disable('SYS$USERS', 'SQL*Plus');
PL/SQL procedure successfully completed.
SQL> select primary_id, qualifier_id1, waits, binds from
dba_enabled_traces where trace_type = 'SERVICE_MODULE';
PRIMARY_ID
QUALIFIER_ID1
WAITS BINDS
---------------------------------------------------------------- ---------------------------------------------------------------- ----- -----
使用trcsess合并跟踪文件
有些跟踪操作会生成多个跟踪文件。 trcsess可以根据特定会话或客户端标识来合并跟踪文件。
trcsess [output=] [session=] [clientid=] [service=] [action=] [module=]
SQL> execute dbms_session.set_identifier('JY');
PL/SQL procedure successfully completed.
SQL> execute dbms_monitor.client_id_trace_enable('JY');
PL/SQL procedure successfully completed.
SQL> select 'session 1'
SQL> execute dbms_monitor.client_id_trace_disable('JY');
PL/SQL procedure successfully completed.
SQL> execute dbms_session.set_identifier('JY');
PL/SQL procedure successfully completed.
SQL> execute dbms_monitor.client_id_trace_enable('JY');
PL/SQL procedure successfully completed.
SQL> select 'session 2'
SQL> execute dbms_monitor.client_id_trace_disable('JY');
PL/SQL procedure successfully completed.
使用trcsess合并跟踪文件
[oracle@jyrac1 trace]$ trcsess output=trcsess_Jy_Trace.txt clientid='JY'
[oracle@jyrac1 trace]$ ls -lrt *Jy*.txt
-rw-r--r-- 1 oracle oinstall 97786 Mar
2 15:17 trcsess_Jy_Trace.txt
dbms_application_info
dbms_application_info.set_x_info过程在会话开始前调用可以用来注册并命名事务/客户端信息/模块为以后的性能检查所使用。
dbms_application_info包含以下过程:
set_client_info(client_info in varchar2)
set_action(action_name in varchar2)
set_module(module_name in varchar2,action_name in varchar2)
SQL> begin
dbms_application_info.set_module(module_name => 'add_employee',action_name => 'insert into emp');
insert into scott.emp (ename, empno, sal, mgr, job, hiredate, comm, deptno )
values ( 'scott', , 7698,'clerk', sysdate,0, 10);
dbms_application_info.set_module(null,null);
PL/SQL procedure successfully completed.
下面通过使用module与action列作为查询条件来查询v$sqlarea视图来获得上面执行的SQL语句
SQL> select sql_text from v$sqlarea where module = 'add_employee' and action = 'insert into emp';
--------------------------------------------------------------------------------
INSERT INTO SCOTT.EMP (ENAME, EMPNO, SAL, MGR, JOB, HIREDATE, COMM, DEPTNO ) VAL
UES ( 'scott', , 7698,'clerk', SYSDATE,0, 10)
也可以执行以下过程来获得信息
SQL> set serveroutput on
SQL> declare
l_clinent varchar2(100);
l_mod_name varchar2(100);
l_act_name varchar2(100);
dbms_application_info.set_client_info('my client');
dbms_application_info.read_client_info(l_clinent);
dbms_output.put_line('client='||l_clinent);
dbms_application_info.set_module('my mod','inserting');
dbms_application_info.read_module(l_mod_name,l_act_name);
dbms_output.put_line('mod_name='||l_mod_name);
dbms_output.put_line('act_name='||l_act_name);
client=my client
mod_name=my mod
act_name=inserting
PL/SQL procedure successfully completed
本条目发布于。属于分类。作者是。
敬勇 (网络ID:eric0435)
系统架构师
Mail:yongjing.君,已阅读到文档的结尾了呢~~
oracle8i高级数据库管理
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
oracle8i高级数据库管理
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口孟硕_DTrace动态追踪技术解析Oracle原理_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
孟硕_DTrace动态追踪技术解析Oracle原理
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩33页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 ftp无法显示文件目录 的文章

 

随机推荐