Oracle的重要诊断工具events_如10046事件来进行SQL跟踪
oracle 监控指标 sql

oracle 监控指标 sqlOracle监控指标SQL是用于监控Oracle数据库性能的一种方法,通过收集和分析SQL语句的执行Oracle监控指标SQL是用于监控Oracle数据库性能的一种方法,通过收集和分析SQL语句的执行信息,可以帮助我们了解数据库的性能状况,找出性能瓶颈,优化SQL 语句,提高数据库的运行效率。
以下是一些常用的Oracle监控指标SQL:1. 查询SQL执行计划:通过查看SQL语句的执行计划,可以了解数据库如何执行这条SQL语句,从而找出可能存在的性能问题。
例如:sqlEXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10;2. 查询SQL执行时间:通过查看SQL语句的执行时间,可以了解数据库执行这条SQL语句所需的时间。
例如:sqlSELECT elapsed_time, executions, sql_text FROM v$sqlareaWHERE sql_text LIKE '%department_id%';3. 查询SQL缓冲区命中率:通过查看SQL缓冲区的命中率,可以了解数据库缓存的效率。
例如:sqlSELECT name, buffer_gets, buffer_hits, round(buffer_hits / buffer_gets, 2) * 100 AS buffer_hit_percentage FROM v$db_cache_advice;4. 查询SQL排序操作次数:通过查看SQL排序操作的次数,可以了解数据库在执行排序操作时的性能。
例如:sqlSELECT operation, count(*) AS sort_operations FROM v$sqlstats WHERE operation = 'SORT' AND child_number = 0 GROUP BY operation;5. 查询SQL物理读次数:通过查看SQL物理读的次数,可以了解数据库在执行读取操作时的性能。
小y黄远邦技术人生(28)——小CASE见大问题之足以摧毁整个应用的数据库设计

关键的是,找不到头绪?而且,生产环境的问题,容不得大家随意测试!各位看官,到这里,如果是你, 你会如何判断,或者如何走向下一步呢?不如我们来思考思考。。。
似乎又进一步验证了相关安全策略的问题, 难道安全策略中还允许只能调用 function,不
能调用 procedure ?脑子里一团浆糊!
5、好大一锅浑水 各位看官似乎也要看乱了,问题到了这里,我们不妨来归纳总结一些,现在我们到底遇到了什么问题: 1.desc dbms_output/desc sys.dbms_output 都是没有问题的 2.exec dbms_output.disable 是没有问题的(不带 sys. 前缀) 3.exec sys.dbms_output.disable 是有问题的(procedure,带 sys. 前缀) 4. 调用 sys.dbms_transaction.local_transaction 是没有问题的(function,带 sys. 前缀) 5.iptXXX 用户权限没有看到明显的漏洞(对于一个 package 来说,权限还会分 procedure 和
然 而, 事 情 总 没 有 我 们 想 象 的 那 么 顺 利, 给 你 一 个 trace 文 件, 能 一 眼 看 到 问 题 所 在 吗? 并 不 能! errorstack 的事件大家似乎都会设置, 那能不能读就是另外一回事了,像上 面的 errorstack 的设置,显然,只是 在 报 错 的 时 候 做 一 个 processdump 而已,dump 出来的内容非常之多, 要从中精确提取我们所需要的信息, 很难!特别是在问题方向都没有的情 况下;
oracle sql 跟踪方法

oracle sql 跟踪方法Oracle SQL是一种强大的关系型数据库管理系统,它提供了一套丰富的工具和功能来跟踪和分析SQL语句的执行过程。
在开发和调试过程中,跟踪SQL语句的执行可以帮助我们快速定位问题并进行优化。
本文将介绍几种常用的Oracle SQL跟踪方法。
一、使用SQL Trace跟踪方法SQL Trace是Oracle提供的一种跟踪SQL语句执行过程的方法。
通过在会话级别启用SQL Trace,我们可以收集SQL语句的执行计划、消耗的资源以及其他相关信息。
启用SQL Trace的方法如下:1. 使用ALTER SESSION语句启用SQL Trace:ALTER SESSION SET SQL_TRACE = TRUE;2. 使用DBMS_SESSION包启用SQL Trace:EXEC DBMS_SESSION.SET_SQL_TRACE(TRUE);启用SQL Trace后,Oracle将会将跟踪信息写入跟踪文件中。
我们可以使用以下方法查找跟踪文件的位置:1. 查询V$DIAG_INFO视图获取跟踪文件的位置:SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';2. 查询USER_DUMP_DEST或BACKGROUND_DUMP_DEST参数获取跟踪文件的位置:SELECT VALUE FROM V$PARAMETER WHERE NAME = 'user_dump_dest';跟踪文件的命名方式为ORA_SID_PID.trc,其中SID为会话ID,PID为进程ID。
二、使用10046事件跟踪方法除了SQL Trace,Oracle还提供了10046事件跟踪方法。
通过在会话级别启用10046事件跟踪,我们可以获得比SQL Trace更详细的跟踪信息。
启用10046事件跟踪的方法如下:1. 使用ALTER SESSION语句启用10046事件跟踪:ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';2. 使用DBMS_SYSTEM包启用10046事件跟踪:EXEC DBMS_SYSTEM.SET_EV(12345, 10046, 12, '');启用10046事件跟踪后,Oracle将会将跟踪信息写入跟踪文件中,跟踪文件的位置和命名方式与SQL Trace相同。
oracle_sql操作日志_概述及解释说明

oracle sql操作日志概述及解释说明1. 引言1.1 概述Oracle SQL操作日志是一种记录数据库系统中执行的SQL语句细节和相关信息的功能。
通过启用和配置SQL操作日志,我们可以跟踪和监控数据库的操作行为,包括查询、更新和删除等操作。
这对于系统维护人员和开发人员来说非常重要,因为它们可以帮助我们理解数据库系统中发生的事情,并且在故障排查和性能优化方面提供有价值的信息。
1.2 文章结构本文将从多个方面详细介绍Oracle SQL操作日志。
首先,我们将解释SQL操作日志的含义,并阐明其在数据库系统中的作用。
接着,我们将讨论开启和配置SQL操作日志功能的方法。
然后,我们将深入探讨SQL操作日志中涉及的关键要点,如记录SQL语句执行细节的作用、日志文件保存路径和格式说明,以及使用SQL操作日志进行故障排查和性能优化的方法。
最后,在结论部分,我们将总结文章主要内容及观点,并对Oracle SQL操作日志未来的发展趋势进行展望。
1.3 目的本文旨在向读者提供关于Oracle SQL操作日志的全面概述及解释说明。
通过阅读本文,读者将了解到SQL操作日志的重要性和作用,以及如何开启和配置该功能。
此外,读者还将熟悉SQL操作日志中涉及的关键要点,并学习到使用SQL 操作日志进行故障排查和性能优化的方法。
最终,读者将对Oracle SQL操作日志有一个清晰的认识,并能够在实际工作中灵活应用该功能。
2. 正文正文部分将深入探讨Oracle SQL操作日志的概念、功能以及使用方法。
本节将具体介绍SQL操作日志的基本原理和应用场景。
2.1 Oracle SQL操作日志的基本原理在Oracle数据库中,SQL操作日志被用于记录对数据库进行的每个操作。
这些操作包括查询、更新、插入和删除等。
当用户执行一个SQL语句时,Oracle会自动将该SQL语句以及其执行结果等相关信息记录到日志文件中。
2.2 Oracle SQL操作日志的主要作用SQL操作日志起着重要的作用,尤其在故障排查和性能优化方面。
Oracle数据库常见异常的诊断方法

Oracle数据库常见异常的诊断方法对于系统级异常,可以采取以下诊断方法:1. 检查日志文件:Oracle数据库记录了大量的日志信息,包括错误日志(alert log)、故障诊断日志(trace files)等。
通过查看这些日志文件,可以了解系统执行过程中的异常情况,定位问题发生的时间和位置。
2. 查看系统表和视图:Oracle数据库提供了一系列用于监控系统的表和视图,包括v$session、v$session_event、v$session_wait等。
通过查询这些系统表和视图,可以获取当前会话的状态和等待事件,从而确定系统出现异常的原因。
3. 检查系统资源使用情况:Oracle数据库提供了一系列用于监控系统资源使用情况的视图,包括v$sysstat、v$sesstat、v$system_event 等。
通过查询这些视图,可以了解数据库的活动会话数、CPU利用率、I/O等待等情况,从而评估系统资源的使用情况。
对于SQL级异常,可以采取以下诊断方法:1. 分析执行计划:Oracle数据库可以生成SQL执行计划,用于指导优化器选择最优的执行方案。
通过分析执行计划,可以了解SQL查询的执行顺序、操作方式和数据访问路径等信息,进而确定是否存在性能问题。
2. 使用SQL Trace:Oracle数据库提供了SQL Trace功能,可以详细记录SQL语句的执行过程,包括SQL的执行时间、CPU消耗、I/O操作等。
通过分析SQL Trace文件,可以找到SQL执行过程中的异常情况,如高CPU使用率、大量的物理读写等。
3. 检查索引使用情况:索引是提高SQL查询性能的重要手段,但是过多或者过少的索引都可能引起性能问题。
通过查询v$segment_statistics视图,可以了解各个表和索引的物理I/O操作次数和等待次数,从而判断是否存在索引使用不当的问题。
4. 检查锁定和等待:Oracle数据库提供了一系列用于监控数据库锁定和等待的视图,包括v$lock、v$lock_wait、v$session等。
Oracle六种方法查看执行计划

Oracle六种⽅法查看执⾏计划⽬录:(⼀)六种执⾏计划(1)explain plan for(2)set autotrace on(3)statistics_level=all(4)dbms_xplan.display_cursor获取(5)事件10046 trace跟踪(6)awrsqrpt.sqlOracle提供了6种执⾏计划获取⽅法,各种⽅法侧重点不同。
第⼀种:explain for步骤⼀:explain for 查询sql语句步骤⼆:select * from table(dbms_xplan.display());/*优点:⽆需真正执⾏,快捷⽅便;缺点:1.没有输出相关统计信息,例如产⽣了多少逻辑读,多少次物理读,多少次递归调⽤的情况;2.⽆法判断处理了多少⾏;3.⽆法判断表执⾏了多少次*/第⼆种:set autotrace on步骤⼀:sql> set autotrace on traceonly;步骤⼆:sql>执⾏查询Sql语句步骤三:sql> set autotrace off;/*优点:1.可以输出运⾏时的相关统计信息(产⽣多少逻辑读、多少次递归调⽤、多少次物理读等);2.虽然要等语句执⾏完才能输出执⾏计划,但是可以有traceonly开关来控制返回结果不打屏输出;缺点:1.必须要等SQL语句执⾏完,才出结果;2.⽆法看到表被访问了多少次;*/第三种:(3)statistics_level=all步骤⼀:ALTER SESSION SET STATISTICS_LEVEL=ALL;步骤⼆:执⾏待分析的SQL步骤三:select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));/*关键字解读:1.starts:SQL执⾏的次数;2.E-Rows:执⾏计划预计返回的⾏数;3.R-Rows:执⾏计划实际返回的⾏数;4.A-Time:每⼀步执⾏的时间(HH:MM:SS.FF),根据这⼀⾏可知SQL耗时在哪些地⽅;5.Buffers:每⼀步实际执⾏的逻辑读或⼀致性读;6.Reads:物理读;7.OMem:OMem为最优执⾏模式所需的内存评估值,这个数据是由优化器统计数据以及前⼀次执⾏的性能数据估算得出的;8.1Mem:1Mem为one-pass模式所需的内存评估值,当⼯作区⼤⼩⽆法满⾜操作所需的⼤⼩时,需要将部分数据写⼊临时磁盘空间中(如果仅需要写⼊⼀次就可以完成操作,就称⼀次通过,One-Pass;否则为多次通过,Multi-Pass).该列数据为语句最后⼀次执⾏中,单次写磁盘所需要的内存⼤⼩,这个由优化器统计数据以及前⼀次执⾏的性能数据估算得出的ed_Mem:Used-Mem则为当前操作实际执⾏时消耗的内存,括号⾥⾯为(发⽣磁盘交换的次数,1次即为One-Pass,⼤于1次则为Multi_Pass,如果没有使⽤磁盘,则显⽰0)*//*优点:1.可以清晰的从starts得出表被访问多少次;2.可以从E-Rows和A-Rows得到预测的⾏数和真实的⾏数,从⽽可以准确判断Oracle评估是否准确;3.虽然没有准确的输出运⾏时的相关统计信息,但是执⾏计划中的Buffers就是真实的逻辑读的数值;缺点:1.必须要等执⾏完后才能输出结果;2.⽆法控制结果打屏输出,不像autotrace可以设置traceonly保证不输出结果;3.看不出递归调⽤,看不出物理读的数值*/第四种:dbms_xplan.display_cursor获取步骤1:select * from table( dbms_xplan.display_cursor('&sql_id') ); --该⽅法是从共享池得到,如果SQL已被age out出share pool,则查找不到注释:1.还有1种⽅法,select * from table( dbms_xplan.display_awr('&sql_id') ); --该⽅法是从awr性能视图⾥⾯获取2.如果有多个执⾏计划,可⽤以下⽅法查出:select * from table(dbms_xplan.display_cursor('&sql_id',0));select * from table(dbms_xplan.display_cursor('&s ql_id',1));/*优点:1.知道sql_id即可得到执⾏计划,与explain plan for⼀样⽆需执⾏;2.可得到真实的执⾏计划缺点:1.没有输出运⾏的统计相关信息;2.⽆法判断处理了多少⾏;3.⽆法判断表被访问了多少次;*/第五种:事件10046 trace跟踪/*步骤1:alter session set events '10046 trace name context forever,level 12'; --开启追踪步骤2:执⾏sql语句;步骤3:alter session set events '10046 trace name context off'; --关闭追踪步骤4:select tracefile from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum<=1)); --找到跟踪后产⽣的⽂件步骤5:tkprof trc⽂件⽣成⽬标⽂件 sys=no sort=prsela,exeela,fchela --格式化命令*/第六种:awrsqrpt.sql/*步骤1:@?/rdbms/admin/awrsqrpt.sql步骤2:选择你要的断点(begin snap和end snap)步骤3:输⼊要查看的sql_id*/例⼦:见:(⼆)如何选择选择时⼀般遵循以下规则:1.如果sql执⾏很长时间才出结果或返回不了结果,⽤⽅法1:explain plan for2.跟踪某条sql最简单的⽅法是⽅法1:explain plan for,其次是⽅法2:set autotrace on3.如果相关查询某个sql多个执⾏计划的情况,只能⽤⽅法4:dbms_xplan.display_cursor或⽅法6:awrsqrpt.sql4.如果sql中含有函数,函数中有含有sql,即存在多层调⽤,想准确分析只能⽤⽅法5:10046追踪5.想法看到真实的执⾏计划,不能⽤⽅法1:explain plan for和⽅法2:set autotrace on6.想要获取表被访问的次数,只能⽤⽅法3:statistics_level = all。
EBS_问题诊断方法
Trace file analyze (TKProf Interpretation )
Search for “BINDS” statement
values
How To Get Level 12 Trace?
Raw Trace+Understanding=Root Cause
• – – In the prior example: The form threw an ORA-01403 no data found Cursor #198 was the last statement executed prior to rollback and returned no rows (cause of ORA1403 error) SQL belonging to #198 identified the select statement ID belonging to transaction that failed was listed as a bind Next steps: – – Drill down to the code level to investigate the issue TAR related, upload the RAW and TKProf trace 12 Trace?
oracle sql tracker 使用方法
Oracle SQL Tracker 是一个强大的数据库性能优化工具,能够帮助用户追踪和诊断数据库中的 SQL 语句执行情况,帮助用户找到潜在的性能瓶颈并优化 SQL 查询语句。
在本篇文章中,我们将介绍 Oracle SQL Tracker 的使用方法,包括如何启用、配置和分析 SQL 追踪数据。
一、启用 SQL 追踪要启用 SQL 追踪,您需要有 DBA 权限或者相应的权限。
您需要登入到数据库中,并确保您有足够的权限来执行以下操作。
您需要确认SQL 追踪已经被启用。
您可以通过以下 SQL 语句检查是否已经启用SQL 追踪:```SELECT value FROM v$parameter WHERE name = 'sql_trace';```如果查询结果为 TRUE,则表示 SQL 追踪已经被启用。
如果查询结果为 FALSE,则表示 SQL 追踪尚未被启用。
在这种情况下,您可以使用以下 SQL 语句来启用 SQL 追踪:```ALTER SESSION SET sql_trace = true;```您也可以使用以下 SQL 语句来禁用 SQL 追踪:```ALTER SESSION SET sql_trace = false;```二、配置 SQL 追踪一旦启用了SQL 追踪,您可以对其进行配置,以便捕获更详细的信息。
您可以使用以下 SQL 语句来配置 SQL 追踪:```EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE;```该语句将启用 SQL 追踪,并开始捕获 SQL 语句的执行信息。
您还可以通过指定参数来配置 SQL 追踪,例如指定要追踪的会话 ID、模块名、服务名等等。
这样可以更精细地控制追踪的范围。
三、分析 SQL 追踪数据一旦SQL 追踪已经启用并配置好,您可以开始分析SQL 追踪数据了。
您可以使用 Oracle 提供的一些工具来分析这些数据,例如 SQL Developer、Enterprise Manager 等。
oracle ebs 收集 trace 方法
oracle ebs 收集trace 方法Oracle EBS 是一款常用的企业资源规划(ERP)系统,用于管理企业的财务、物流、供应链和人力资源等方面的业务。
在使用Oracle EBS 进行故障排查时,收集trace 信息是一种常见的方法。
本文将详细介绍如何收集trace,以及如何分析和利用这些trace 数据解决问题。
一、什么是trace?Trace 是Oracle 数据库中用于跟踪和记录执行过程的一种机制。
通过启用trace 功能,Oracle 数据库可以在执行过程中生成详细的日志,包括SQL 语句、程序调用、执行计划等信息。
这些信息对于分析和解决性能问题非常有帮助。
二、为什么需要收集trace?在Oracle EBS 中,性能问题是常见的挑战之一。
当用户反馈系统运行缓慢或者出现异常时,我们通常需要通过收集trace 数据来了解执行过程中的细节,定位问题的根本原因。
通过收集trace,我们可以获得SQL 语句的执行计划,了解SQL 语句执行时的资源消耗情况,进而分析和优化SQL 语句,提升系统性能。
三、如何收集trace?1. 确定跟踪级别:根据问题的性质,选择合适的跟踪级别。
Oracle 提供了多种级别的trace,如最详细的10046 级别,用于跟踪单个SQL 语句的执行过程;还有更高级别的10053 级别,用于跟踪SQL 语句执行计划的生成过程。
2. 开启trace:可以通过以下方法启用trace 功能:a. 对于单个会话的trace,可以使用ALTER SESSION 命令。
例如,执行`ALTER SESSION SET SQL_TRACE=TRUE;` 开启跟踪,执行`ALTER SESSION SET SQL_TRACE=FALSE;` 关闭跟踪。
b. 对于整个系统的trace,可以在数据库的初始化参数文件中设置`SQL_TRACE=TRUE;` 来开启所有会话的跟踪。
3. 收集trace 文件:在启用trace 后,Oracle 将在指定的位置生成跟踪文件。
Oracle跟踪文件分析工具TKPROF使用简介
explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
print=integer List only the first 'integer' SQL statements. //只列出输出文件中的第一个INTEGER的SQL语句,若忽略,则TKPROF将列出所有跟踪的SQL语句。
exedsk number of disk reads during execute //语句执行期间,从磁盘进行物理读取的数目。
exeqry number of buffers for consistent read during execute //语句执行期间,一致模式块读取(CONSISTENT MODE BLOCK READ)的数目。
aggregate=yes|no //若用户指定AGGREGATE=NO,TKPROF将不会对相同SQL文本的多个用户进行汇总。
insert=filename List SQL statements and data inside INSERT statements. //SQL脚本的一种,用于将跟踪文件的动机信息存储到数据库中。
prscu number of buffers for current read during parse //语句解析期间,当前模式读取(CURRENT MODE BLOCK READ)的数目。
prsmis number of misses in library cache during parse// 语句解析期间,库缓存失败的数目。
sys=no TKPROF does not list SQL statements run as user SYS. //于启动或禁止将用户SYS所发布的SQL语句列表到输出文件之中,也包括递归SQL(为执行用户的SQL语句,ORACLE还必须执行一些附加语句)语句在内。默认为YES.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle的重要诊断工具events海量oracle资料下载,请收藏2011-1-4摘要:我们经常在论坛上看到用10046事件来进行SQL跟踪,那么到底是什么回事呢?这篇文章就可以很好的从零开始,告诉你是什么和怎样用。
这篇文章由【数据库吧】原创,如果转载请注明出处。
/【数据库吧】很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些信息记录在trace 文件里以后分析。
一般情况下我们可以通过初始化参数SQL_TRACE=TRUE来设置SQL跟踪。
我们也可以通过设置10046事件来进行SQL跟踪,并且可以设置不同的跟踪级别,比使用SQL_TRACE获得更多的信息。
Level 0 停用SQL跟踪,相当于SQL_TRACE=FALSELevel 1 标准SQL跟踪,相当于SQL_TRACE=TRUELevel 4 在level 1的基础上增加绑定变量的信息level 8 在level 1的基础上增加等待事件的信息Level 12 在level 1的基础上增加绑定变量和等待事件的信息10046事件不但可以跟踪用户会话(trace文件位于USER_DUMP_DEST),也可以跟踪background进程(trace文件位于BACKGROUND_DUMP_DEST)。
trace文件的大小决定于4个因素:跟踪级别,跟踪时长,会话的活动级别和MAX_DUMP_FILE_SIZE参数让我们从头说起:一、Oracle跟踪文件Oracle跟踪文件分为三种类型:一种是后台报警日志文件:记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。
在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。
后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG。
另一种类型是DBWR、LGWR、SMON等后台进程创建的后台跟踪文件:后台跟踪文件根据后台进程运行情况产生,后台跟踪文件也保存在BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为siddbwr.trc、sidsmon.trc等。
还有一种类型是由连接到Oracle的用户进程(Server Processes)生成的用户跟踪文件。
这些文件仅在用户会话期间遇到错误时产生。
此外,用户可以通过执行oracle跟踪事件(见后面)来生成该类文件,用户跟踪文件保存在USER_DUMP_DEST参数指定的目录中,文件格式为oraxxxxx.trc,xxxxx为创建文件的进程号(或线程号)。
二、Oracle跟踪事件Oracle提供了一类命令,可以将Oracle各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。
设置跟踪事件有两种方法:一种是在init.ora文件中设置事件。
这样open数据库后,将影响到所有的会话。
设置格式如下:EVENT="eventnumber trace name eventname [forever,] [level levelnumber] : ......."通过:符号,可以连续设置多个事件,也可以通过连续使用event来设置多个事件。
另一种方法是在会话过程中使用alter session set events命令。
只对当前会话有影响。
设置格式如下:alter session set events '[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : .......'通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events 来设置多个事件。
格式说明:event number指触发dump的事件号,事件号可以是Oracle错误号(出现相应错误时跟踪指定的事件)或oralce内部事件号,内部事件号在10000到10999之间,不能与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结构的所有信息。
1、buffers事件:dump SGA缓冲区中的db buffer结构alter session set events 'immediate trace name buffers level 1'; --表示dump缓冲区的头部。
2、blockdump事件:dump数据文件、索引文件、回滚段文件结构alter session set events 'immediate trace name blockdump level 66666'; --表示dump块地址为6666的数据块。
在Oracle 8以后该命令已改为:alter system dump datafile 11 block 9; --表示dump数据文件号为11中的第9个数据块。
3、controlf事件:dump控制文件结构alter session set events 'immediate trace name controlf level 10'; --表示dump控制文件的所有内容。
4、locks事件:dump LCK进程的锁信息alter session set events 'immediate trace name locks level 5';5、redohdr事件:dump redo日志的头部信息alter session set events 'immediate trace name redohdr level 1'; --表示dump redo日志头部的控制文件项。
alter session set events 'immediate trace name redohdr level 2'; --表示dump redo日志的通用文件头。
alter session set events 'immediate trace name redohdr level 10'; --表示dump redo日志的完整文件头。
注意:redo日志的内容dump可以采用下面的语句:alter system dump logfile 'logfilename';6、loghist事件:dump控制文件中的日志历史项alter session set events 'immediate trace name loghist level 1'; --表示只dump最早和最迟的日志历史项。
levelnumber大于等于2时,表示2的levelnumber次方个日志历史项。
alter session set events 'immediate trace name loghist level 4'; --表示dump 16个日志历史项。
7、file_hdrs事件:dump 所有数据文件的头部信息alter session set events 'immediate trace name file_hdrs level 1'; --表示dump 所有数据文件头部的控制文件项。
alter session set events 'immediate trace name file_hdrs level 2'; --表示dump 所有数据文件的通用文件头。
alter session set events 'immediate trace name file_hdrs level 10'; --表示dump 所有数据文件的完整文件头。
8、errorstack事件:dump 错误栈信息,通常Oracle发生错误时前台进程将得到一条错误信息,但某些情况下得不到错误信息,可以采用这种方式得到Oracle错误。
alter session set events '604 trace name errorstack forever'; --表示当出现604错误时,dump 错误栈和进程栈。
9、systemstate事件:dump所有系统状态和进程状态alter session set events 'immediate trace name systemstate level 10'; --表示dump 所有系统状态和进程状态。
10、coalesec事件:dump指定表空间中的自由区间levelnumber以十六进制表示时,两个高位字节表示自由区间数目,两个低位字节表示表空间号,如0x00050000表示dump系统表空间中的5个自由区间,转换成十进制就是327680,即:alter session set events 'immediate trace name coalesec level 327680';11、processsate事件:dump进程状态alter session set events 'immediate trace name processsate level 10';12、library_cache事件:dump library cache信息alter session set events 'immediate trace name library_cache level 10';13、heapdump事件:dump PGA、SGA、UGA中的信息alter session set events 'immediate trace name heapdump level 1';14、row_cache事件:dump数据字典缓冲区中的信息alter session set events 'immediate trace name row_cache level 1';三、内部事件号1、10013:用于监视事务恢复2、10015:转储UNDO SEGMENT头部event = "10015 trace name context forever"3、10029:用于给出会话期间的登陆信息4、10030:用于给出会话期间的注销信息5、10032:转储排序的统计信息6、10033:转储排序增长的统计信息7、10045:跟踪Freelist管理操作8、10046:跟踪SQL语句alter session set events '10046 trace name context forever, level 4'; --跟踪SQL语句并显示绑定变量alter session set events '10046 trace name context forever, level 8'; --跟踪SQL语句并显示等待事件9、10053:转储优化策略10、10059:模拟redo日志中的创建和清除错误11、10061:阻止SMON进程在启动时清除临时段12、10079:转储SQL*NET统计信息13、10081:转储高水标记变化14、10104:转储Hash连接统计信息15、10128:转储分区休整信息16、10200:转储一致性读信息17、10201:转储一致性读中Undo应用18、10209:允许在控制文件中模拟错误19、10210:触发数据块检查事件event = "10210 trace name context forever, level 10"20、10211:触发索引检查事件21、10213:模拟在写控制文件后崩溃22、10214:模拟在控制文件中的写错误levelnumber从1-9表示产生错误的块号,大于等于10则每个控制文件将出错23、10215:模拟在控制文件中的读错误24、10220:转储Undo头部变化25、10221;转储Undo变化26、10224:转储索引的分隔与删除27、10225:转储基于字典管理的区间的变化28、10229:模拟在数据文件上的I/O错误29、10231:设置在全表扫描时忽略损坏的数据块alter session set events '10231 trace name context off'; -- 关闭会话期间的数据块检查event = "10231 trace name context forever, level 10" -- 对任何进程读入SGA的数据块进行检查30、10232:将设置为软损坏(DBMS_REPAIR包设置或DB_BLOCK_CHECKING为TRUE时设置)的数据块dump到跟踪文件31、10235:用于内存堆检查alter session set events '10235 trace name context forever, level 1';32、10241:转储远程SQL执行33、10246:跟踪PMON进程34、10248:跟踪dispatch进程35、10249:跟踪MTS进程36、10252:模拟写数据文件头部错误37、10253:模拟写redo日志文件错误38、10262:允许连接时存在内存泄漏alter session set events '10262 trace name context forever, level 300'; -- 允许存在300个字节的内存泄漏39、10270:转储共享游标40、10285:模拟控制文件头部损坏41、10286:模拟控制文件打开错误42、10287:模拟归档出错43、10357:调试直接路径机制44、10500:跟踪SMON进程45、10608:跟踪位图索引的创建46、10704:跟踪enqueues47、10706:跟踪全局enqueues48、10708:跟踪RAC的buffer cache49、10710:跟踪对位图索引的访问50、10711:跟踪位图索引合并操作51、10712:跟踪位图索引OR操作52、10713:跟踪位图索引AND操作53、10714:跟踪位图索引MINUS操作54、10715:跟踪位图索引向ROWID的转化55、10716:跟踪位图索引的压缩与解压56、10719:跟踪位图索引的修改57、10731:跟踪游标声明58、10928:跟踪PL/SQL执行59、10938:转储PL/SQL执行统计信息最后要说明的是,由于版本不同以上语法可能有些变化,但大多数还是可用的。