oracle高级工具的应用
DUMP工具的实际应用
常见的EVENTS事件
10053事件的应用
10064事件的应用
SQL及应用分析
* 分析会话中SQL执行情况(10046)
* 分析会话中的主要等待事件(10046)
* 优化器决策过程(10053)
* 断语分析(10060)
* HASH JOIN统计信息(10104)
* 远程SQL执行情况(10241)
* 位图索引访问(10710)
* 位图索引操作(10711-10717)
PL/SQL的执行情况(10928,10938)
* 锁相关
* 锁(10704)和全局锁(10706)
* 段分析
* 分析段中数据的组成(BLOCK DUMP)
* 分析索引的分裂情况(TREE DUMP)
* 索引分裂情况(10224)
* 引起位图索引改变的DML操作(10719)
* 系统分析/会话分析
* SYSTEMSTATE DUMP/PROCESSSTATE DUMP
* 数据库启动时跟踪事务恢复分析(10013)
* DUMP UNDO段头(10015)
* library cache(10049)
* 系统行为分析
* 排序行为分析(10032/10033)
* FREELISTS管理(10045)
* HWM活动(10081)
* 跟踪PMON(10246)
* 跟踪共享CURSOR(10270)
* 改变系统行为
* 刷新DB CACHE(FLUSH_CACHE)
* 清理临时段(DROP_SEGMENTS)
* 跳过坏块(10231)
BLOCK DUMP的应用
* 分析数据块的存储结构
* 分析段中碎片情况
* 分析索引分裂情况
* 分析行迁移情况
* 分析oracle的存储机制
加深对Oracle内部机制的理解,故障排除
1、dump工具
1.1、用dump工具验证dbwr写的机制
1.2、验证segment space management auto管理机制
1.3、验证行迁移现象
***** 某个事物修改了数据块,没有提交,所修改的数据块也会被写入数据文件
1、查找数据块位置,dba_extents;
SQL> select file_id,block_id,blockS from dba_extents where owner='SCOTT' AND seg
ment_name='EMP';
FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
4 144 8
alter system dump datafile 4 block min 144 max 150;
分析总结,前4个块用于可insert操作的块ID,freelist列表信息,解决并发insert操作。
手工管理的freelist至存放子在段头块中,有并发insert操作,容易造成冲突。--热快
3.验证行迁移
alter table ** pctfree 0;
update
alter 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同用。
levelnumber表示事件级别号,一般从1、4、8、12,1表示只dump结构头部信息,12表
示dump结构的所有信息。
2.1、dump控制文件结构
alter session set events 'immediate trace name controlf level 12';
2.2、dump数据文件头:
alter session set events 'immediate trace name file_hdrs
level 12';
2.3、打开10046事件跟踪:
alter session set events '10046 trace name context
forever,level 12';
2.3、关闭10046事件跟踪:
alter session set events '10046 trace name context off';
2.4、打开10053事件跟踪,优化器输入、计算和输出的协议,把决策过程
日志写入跟踪文件,可以看出优化器的工作原理,选择最佳执行计划的原因:
alter session set events '10053 trace name context
forever,level 1';
*****
var loc varchar2(30)
exec :loc:='South San Francisco'
ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT FOREVER, LEVEL 1';
SELECT
emp.last_name,emp.first_name,j.job_title,d.department_name,l.city,l.state_provin
ce,l.postal_code,l.street_address,
emp.email,emp.phone_number,emp.hire_date,emp.salary,mgr.last_name
from hr.employees emp,hr.employees mgr,hr.departments d,hr.locations l,hr.jobs j
where l.city=:loc
and emp.manager_id=mgr.employee_id
and emp.department_id=d.department_id
and d.location_id=l.location_id
and emp.job_id=j.job_id;
ALTER SESSION SET EVENTS '10053 TRACE NAME CONTEXT OFF';
可以看到部分优化器考虑到的参数环境:
select name,value from v$sql_optimizer_env where sql_id='cd87u1dgqgnyr';
2.5、打开10079事件跟踪,将Oracle网络流量转储到跟踪文件,用于快速确定哪些
SQL语句、PL/SQL调用或SQL*PLUS命令发送了敏感数据,比如未加密的密码:
alter session set events '10079 trace name context
forever,level 2';
查看tracefile的路径:
SQL> oradebug setmypid
SQL> oradebug tracefile_name
2.6、dump系统状态,假如怀疑实例被挂起:
alter session set events 'immediate trace name systemstate level 10';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/500314/viewspace-1066100/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/500314/viewspace-1066100/