เพราะจริงแล้ว 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
SETORAPID
SETORAPNAME
SHORT_STACK Get abridged OS stack
CURRENT_SQL Get current SQL
DUMP
DUMPSGA [bytes] Dump fixed SGA
DUMPLIST Print a list of available dumps
EVENT
SESSION_EVENT
DUMPVAR
DUMPTYPE
SETVAR
PEEK
POKE
WAKEUP
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
-R
SETINST
SGATOFILE
DMPCOWSGA
MAPCOWSGA
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
WATCH
DELETE
SHOW
DIRECT_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]
เริ่มจับ 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.