CUUG ORACLE高階工具的使用

murkey發表於2013-12-31

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章