alter system set events 相关知识

本文详细介绍了Oracle数据库中用于诊断和故障排查的各种Dump命令。包括内存Dump和文件Dump两大类,涉及SGA、PGA、数据文件、控制文件、重做日志等关键组件的Dump方法及其参数含义。
部署运行你感兴趣的模型镜像

 格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : …….’
通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。

格式说明:eventnumber指触发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以十六进制表示时,两个高位字节表示自由区间数目,两个低位字节表示表空间号,如0×00050000表示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′;

 

Oracle常用dump命令,记录一下备查。
一.Memory Dumps

1).Global Area
ALTER SESSION SET EVENTS ‘immediate trace name global_area level n';
1 包含PGA
2 包含SGA
4 包含UGA
8 包含indrect memory

2).Library Cache
ALTER SESSION SET EVENTS ‘immediate trace name library_cache level n';
1 library cache统计信息
2 包含hash table histogram
3 包含object handle
4 包含object结构(Heap 0)

3).Row Cache
ALTER SESSION SET EVENTS ‘immediate trace name row_cache level n';
1 row cache统计信息
2 包含hash table histogram
8 包含object结构

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为某个指定block的rdba,该命令可以转储某个block在buffer中的所有版本。

6).Heap
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';
若n为subheap的地址,转储的是subheap的摘要信息
若n为subheap的地址+1,转储的则是subheap的内容
Oracle 9.2.0版本之后
ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level n, addr m';
其中m为subheap的地址
n为1转储subheap的摘要,n为2转储subheap的内容

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
3 system

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取值为1~14

17).Background Messages
ALTER SESSION SET EVENTS ‘immediate trace name bg_messages level n';
n为pid+1

二.File Dumps

1).Block
Oracle 7之前
ALTER SESSION SET EVENTS ‘immediate trace name blockdump level n';
n为block的rdba
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';
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 xidsqn;

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 控制文件中的redo log信息
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 . BlockNumber;
其中time = (((((yyyy - 1988)) * 12 + mm - 1) * 31 + dd - 1) * 24 + hh) * 60 + mi) * 60 + ss;

9).Loghist
ALTER SESSION SET EVENTS ‘immediate trace name loghist level n';
1 dump控制文件中最早和最迟的日志历史项
1 dump 2^n个日志历史项

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>嗯,用户这次问的是一个非常专业的Oracle数据库事件设置语句,看起来是在调试或性能优化时遇到的特定场景。从用户提供的引用和问题表述看,ta应该是有一定Oracle基础的技术人员,但可能对10949这个特定事件不太熟悉。 用户特意引用了三条站内资料,其中引用[1]详细说明了ALTER SESSION SET EVENTS的语法结构,引用[2]展示了类似事件10046的设置方法,引用[3]则是审计日志样例。虽然这些引用不直接涉及10949事件,但说明用户已经查阅过相关文档,现在需要更精准的解释。 10949这个事件确实比较冷门。我记得这是Oracle用来禁用特定并行查询行为的调试事件,主要与12c之后引入的parallel_min_time_threshold机制有关。当设置level 1时,它会阻止自动并行度决策,通常在遇到并行查询相关性能异常时使用。用户可能遇到了CBO错误选择并行执行计划的情况,或者是在测试环境模拟串行执行。 需要特别注意用户查询语句里的拼写错误——"lter"应该是"alter",这个细节在回答时需要修正但不要刻意强调以免让用户尴尬。另外用户提到的"forever"参数在实际生产环境要慎用,这个应该作为注意事项重点提示。 关于报错可能性,除了权限问题外,特别要提醒用户检查Oracle版本,因为10949在11g和19c的行为可能有差异。如果用户是在RAC环境使用,还需要补充说明session级别设置不会影响其他节点这个特点。 用户没有明确是否在生产环境操作,但基于安全考虑,回答里应该包含"测试环境验证"的强烈建议。对于这种直接影响执行计划的调试命令,最后补充诊断路径(查trace文件、v$session视图)会很有帮助,用户下一步大概率需要这些信息。 </think>关于 `ALTER SESSION SET EVENTS &#39;10949 trace name context forever, level 1&#39;` 语句的用途及相关信息,结合 Oracle 内部事件机制分析如下: --- ### 一、语句作用与核心用途 1. **事件号 10949 的官方定义** 该事件用于**禁用自适应并行查询分布(Adaptive Parallel Distribution Method)**。当设置 `level 1` 时,会强制 Oracle 使用 `HASH` 分布方式替代优化器自适应的并行数据分发策略[^1]。 2. **典型应用场景** - 解决因优化器错误选择 `BROADCAST` 或 `RANDOM` 并行分发方式导致的性能下降 - 规避并行查询中因数据倾斜引发的负载不均衡问题 - 需要稳定执行计划时绕过自适应机制(常见于 12c 及以上版本) --- ### 二、执行影响与注意事项 | **维度** | **影响说明** | |----------------|-----------------------------------------------------------------------------| | **作用范围** | 仅当前会话生效(`ALTER SESSION`) | | **生效时间** | `forever` 参数使设置持续到会话结束 | | **性能影响** | 可能提升并行查询稳定性,但禁用优化器自适应能力可能导致某些场景性能下降 | | **风险警示** | 生产环境需谨慎使用,建议通过 SQL 补丁或参数文件调整替代会话级硬编码设置[^2] || --- ### 三、常见报错与解决方案 1. **ORA-01031: 权限不足** - **原因**:非 DBA 用户执行 - **解决**: ```sql GRANT ALTER SESSION TO <username>; ``` 2. **ORA-00097: 非法的 Oracle 事件规范** - **原因**: - 事件号无效(检查 Oracle 版本支持:10949 仅适用于 12.1 及以上) - 语法错误(如缺失 `trace name context`) - **验证**: ```sql SELECT * FROM v$event_name WHERE event# = 10949; ``` 3. **设置未生效** - **排查步骤**: ```sql -- 检查会话级事件状态 ALTER SESSION SET events &#39;immediate trace name controfile level 3&#39;; -- 查看跟踪文件获取事件激活状态[^2] ``` --- ### 四、诊断工具与操作建议 ```sql -- 1. 确认事件生效(需诊断跟踪文件) ALTER SESSION SET tracefile_identifier = &#39;10949_debug&#39;; -- 2. 执行目标并行查询 SELECT /*+ PARALLEL(4) */ ... FROM ...; -- 3. 关闭跟踪 ALTER SESSION SET events &#39;10949 trace name context off&#39;; -- 4. 检查跟踪文件(位于 diag/rdbms/<dbname>/<inst>/trace) grep "Parallel distribution" <tracefile>.trc ``` > 📌 **关键输出**:查找 `"Force PDML distribution: Hash"` 确认事件生效[^3] --- ### 五、替代优化方案 1. **参数文件调整**(全局生效) ```sql ALTER SYSTEM SET "_parallel_adaptive_dist_method" = HASH SCOPE=SPFILE; ``` 2. **SQL 补丁固定执行计划** ```sql EXEC DBMS_SQLDIAG.create_sql_patch( sql_text => &#39;SELECT /*+ PARALLEL(4) */ ...&#39;, hint_text => &#39;NO_ADAPTIVE_PLAN_DIST&#39; ); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值