วันอาทิตย์ที่ 12 ตุลาคม พ.ศ. 2551

การใช้ oradebug เพื่อ enable trace file

ก่อนอื่นต้องอธิบาย event# 10046
เพราะจริงแล้ว event# 10046 มีความหมายเท่ากับ SQL_TRACE=TRUE
Event# 10046 นั้น มีหลาย level ด้วยกัน

1 - Enable standard SQL_TRACE functionality (Default)
4 - Level 1 + trace bind values
8 - Level 1 + trace waits
This is especially useful for spotting latch wait etc.
but can also be used to spot full table scans and index scans.
12 – Level both trace bind values and waits


ตัวอย่าง:

$ sqlplus / as sysdba

ต้อง การ os process ใน Username ที่ต้องการ

SQL> select p.spid,s.username from v$process p, v$session s where p.ADDR = s.PADDR and s.username = 'SCOTT';

SPID USERNAME
------------------------ ------------------------------
12925 SCOTT

$ ps -ef | grep 12925
oracle 12925 12924 0 15:07 ? 00:00:00 oracleSID (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

หลังจากได้ os process ก็เริ่ม ใช้ Oradebug (อย่างไรก็ตาม เราจะหาtrace file PATH ที่เกิดขึ้น -> show parameter user_dump_dest )


SQL> oradebug help
HELP [command] Describe one or all commands
SETMYPID Debug current process
SETOSPID Set OS pid of process to debug
SETORAPID ['force'] Set Oracle pid of process to debug
SETORAPNAME Set Oracle process name to debug
SHORT_STACK Get abridged OS stack
CURRENT_SQL Get current SQL
DUMP [addr] Invoke named dump
DUMPSGA [bytes] Dump fixed SGA
DUMPLIST Print a list of available dumps
EVENT Set trace event in process
SESSION_EVENT Set trace event in session
DUMPVAR

[level] Print/dump a fixed PGA/SGA/UGA variable
DUMPTYPE
Print/dump an address with type info
SETVAR
Modify a fixed PGA/SGA/UGA variable
PEEK [level] Print/Dump memory
POKE Modify memory
WAKEUP Wake up Oracle process
SUSPEND Suspend execution
RESUME Resume execution
FLUSH Flush pending writes to trace file
CLOSE_TRACE Close trace file
TRACEFILE_NAME Get name of trace file
LKDEBUG Invoke global enqueue service debugger
NSDBX Invoke CGS name-service debugger
-G Parallel oradebug command prefix
-R Parallel oradebug prefix (return output
SETINST Set instance list in double quotes
SGATOFILE Dump SGA to file; dirname in double quotes
DMPCOWSGA Dump & map SGA as COW; dirname in double quotes
MAPCOWSGA Map SGA as COW; dirname in double quotes
HANGANALYZE [level] [syslevel] Analyze system hang
FFBEGIN Flash Freeze the Instance
FFDEREGISTER FF deregister instance from cluster
FFTERMINST Call exit and terminate instance
FFRESUMEINST Resume the flash frozen instance
FFSTATUS Flash freeze status of instance
SKDSTTPCS Helps translate PCs to names
WATCH
Watch a region of memory
DELETE watchpoint Delete a watchpoint
SHOW watchpoints Show watchpoints
DIRECT_ACCESS Fixed table access
CORE Dump core without crashing process
IPC Dump ipc information
UNLIMIT Unlimit the size of the trace file
PROCSTAT Dump process statistics
CALL [-t count] [arg1]...[argn] Invoke function with arguments


เริ่มจับ process ที่ต้องการ

SQL> oradebug setospid 12925
Oracle pid: 29, Unix process pid: 12925, image: oracle@testhost (TNS V1-V3)

เริ่ม enable trace file

SQL> oradebug event 10046 trace name context forever, level 12
Statement processed.


เราจะพบไฟล์ SID_ora_12925.trc, หลัง จากนั้นเราสามารถใช้ tkprof command ในการ analyze SQL statement ใน session นี้ได้

หากต้องการยกเลิก trace ใน event# 10046 นี้

SQL> oradebug setospid 12925
Oracle pid: 29, Unix process pid: 12925, image: oracle@testhost (TNS V1-V3)

ยกเลิก enable trace file

SQL> oradebug event 10046 trace name context off
Statement processed.

ไม่มีความคิดเห็น: