Проследяването е важна част за настройката на базата данни на Oracle. Това ще помогне за заснемането на цялото изявление на проблема, събитие за чакане, които са отговорни за бавното протичане на сесията.
Базата данни на Oracle е предоставила много най-бързи начини за проследяване на локалната сесия, друга потребителска сесия и форматиране на проследяването, за да стане четливо
Нека да разгледаме малко как да включим SQL трасиране, събитие 10046 в Oracle база данни и trcsess, помощна програма tkprof
Съдържание
SQL Trace ,100046 събитие
Ако искате да проследявате в локална сесия, ето стъпките за включване на SQL проследяване
Нормална следа променете сесия set sql_trace =true; -- За да поставите trace onalter session set sql_trace =false; -- За изключване на трасиранетоПълно ниво с събитие за изчакване и свързване на трасиране alter session set events =‘10046 контекст на името на трасето завинаги, ниво 12’;За да се изключат събитията от набора от сесии за проследяване на offalter =‘изключен контекст на името на проследяване на 10046’;Същото като нормалното проследяване exec DBMS_SESSION.set_sql_trace(sql_trace => TRUE);exec DBMS_SESSION.set_sql_trace(sql_trace => FALSE);
Ако искате да проследите в друга работеща сесия, ето стъпките
Нормална следа изпълнете dbms_system.set_sql_trace_in_session (‘sid’, ‘serial’, true); -- За да поставите трасиране onexecute dbms_system.set_sql_trace_in_session (‘sid’, ‘serial’,true); -- За изключване на проследяванетоПълно ниво с събитие за изчакване и свързване на трасиране изпълнете dbms_system.set_ev(‘sid’,’serial’,10046,12,’’);За изключване на проследяване изпълнете dbms_system.set_ev(‘sid’,‘serial’,10046,0,’’);
Трябва да сте виждали използването на 12,0 в различни изявления по-горе. Те са нива на проследяване. Oracle Tracing има нива на проследяване. Ето валидните стойности
0 | Няма следа. Като изключване на sql_trace. |
2 | Еквивалент на обикновен sql_trace Осигурява път на изпълнение, брой редове, най-малкия плосък файл Предимства Предоставя път на изпълнение Предоставя броя на редовете Произвежда най-малкия плосък файл Недостатъци Не мога да кажа какви стойности са били предоставени по време на изпълнение към SQL Ако статистическите данни за заявката са ниски, но времето за изпълнение е дълго, не може да се каже какви събития са причинили дългото чакане |
4 | Същото като 2, но с добавяне на стойности на променлива за свързване Предимства Предоставя път на изпълнение Предоставя броя на редовете Може да каже за какви стойности е изпълнен изразът Недостатъци Отново, ако времето за изпълнение е дълго и статистическите данни са ниски, ще бъде трудно да се каже защо в този тип проследяване. Произвежда по-голям плосък файл от обикновената трасировка, тъй като информацията за променливата за свързване трябва да се съхранява. |
8 | Същото като 2, но с добавяне на изчакващи събития Регулярно проследяване плюс времеви интервали за работа на базата данни, които SQL чакаше да извърши, за да завърши. Например:времена за достъп до диск. Предимства Предоставя път на изпълнение Предоставя броя на редовете Може да определя времена за всички събития, свързани с SQL. Недостатъци Файлът за проследяване може лесно да се увеличи, тъй като цялата информация, която Oracle трябва да запише във файла за проследяване, и тогава във файла за проследяване е налична само частична информация. Информацията за променлива за свързване не е налична |
12 | Същото като 2, но както със стойности на променливата за свързване, така и със събития за изчакване. Съдържа най-пълната информация и ще създаде най-големия файл за проследяване. Предоставя пътека на изпълнение Предоставя броя на редовете Може да определи времето за всички събития, свързани с SQL. Може да определи какви стойности SQL беше стартиран с Предимства Предоставя път на изпълнение Предоставя броя на редовете Може да определя времена за всички събития, свързани с SQL. Може да каже с какви стойности е бил стартиран SQL Недостатъци Файлът за проследяване може лесно да се увеличи, тъй като цялата информация, която Oracle трябва да запише във файла за проследяване, и след това само частична информация е налична във файла за проследяване. |
Има и други начини за проследяване. Ето някои от тези
(1) ORADEBUG
Това изисква влизане като sysdba
oradebug setospid 1111 -- Сесия за отстраняване на грешки с посочения Oracle process idoradebug setorapid 1111 --- Сесия за отстраняване на грешки с указаното събитие на ОС processoradebug 10046 контекст име на проследяване завинаги, ниво 4; oradebug събитие име извън контекста 10046 проследяване; --- Това деактивира traceoradebug close_trace --- Това затваря файла за проследяванеOradebug TRACEFILE_NAME;
(2) С Oracle 10g опциите за проследяване на SQL са разширени с помощта на пакета DBMS_MONITOR
ИЗПЪЛНЯВАНЕ на dbms_monitor.session_trace_enableКоето е подобно ALTER SESSION SET EVENTS '10046 контекст на името на трасето завинаги, ниво 2';ИЗПЪЛНЯВАНЕ на dbms_monitor.session_trace_enable (binds=>true);Което е подобно ALTER SESSION SET EVENTS, ЗАДАВАНЕ НА СЕССИЯ 10 ALTER SESSION ниво'1 ниво на trace'1;ИЗПЪЛНЕТЕ dbms_monitor.session_trace_enable (waits=>true);Което е подобно ALTER SESSION SET EVENTS '10046 контекст на името на трасето завинаги, ниво 8';ИЗПЪЛНЕТЕ dbms_monitor.session_trace_enable('sid','serial is similar_cuteev)Whb_system.exe. 'sid','serial',10046,2,'');ИЗПЪЛНЕТЕ dbms_monitor.session_trace_enable ('sid','serial#',binds=>true);Което е подобно,изпълни dbms_system.set_ev('sid','serial' ,10046,4,'');ИЗПЪЛНЯВАНЕ на dbms_monitor.session_trace_enable ('sid','serial#',waits=>true);Което е подобно,изпълни dbms_system.set_ev('sid','serial',10046,8,'' );
Има много други функции, налични в dbms_monitor. Можем да активираме проследяване въз основа на клиентски идентификатор и по различни начини
Как да идентифицираме Trace файловете
Можем да идентифицираме проследяващите файлове с помощта на spid на сесията. Освен това файлът за проследяване ще съдържа двойка sid,serial# в началото на файла за проследяване.
Заявката по-долу може да се използва за намиране на файла за проследяване на локалната сесия
изберете c.стойност || '/' || d.instance_name ||'_ora_' || a.spid || '.trc' tracefrom v$process a, v$session b, v$parameter c, v$instance d, където a.addr =b.paddrand b.audsid =userenv('sessionid')и c.name ='user_dump_dest'/
Има друг лесен начин за идентифициране на файла за проследяване , който се нарича идентификатор на проследяване
промени набора от сесии tracefile_identifer=’ORAC’; Това е идентификатор
Примерен файл за проследяване
Проследяващ файл /app/oracle/TEST/diag/rdbms/test/TEST/trace/TEST_ora_13025_IDEN.trcOracle Database 11g Enterprise Edition, издание 11.2.0.4.0 – 64-битово производство с разделяне, реални клъстери от приложения, копаене на данни и OLAP Опции за тестване на реално приложениеORACLE_HOME =/app/oracle/TEST/11.2.0/dbИме на системата: SunOS12Име на възел:sun12Release: 5.10Версия: Generic_144488-11Machine: sun4uInstance name:TESTRedo mount process:TESTRedo 2 процес:TESTRedo , изображение:[email protected] SunOS12*** 2013-10-21 12:28:56.461*** ИД НА СЕСИЯ:(3875.17341) 2013-10-21 12:28:56.461*** КЛИЕНТЕН ИД:() 2013 -10-21 12:28:56.461*** ИМЕ НА УСЛУГАТА:(ТЕСТ) 2013-10-21 12:28:56.461*** ИМЕ НА МОДУЛ:([email protected](TNS V1-V3)) 2013-10 -21 12:28:56.461*** ИМЕ НА ДЕЙСТВИЕТО:() 2013-10-21 12:28:56.461 CLOSE #4:c=0,e=11,dep=1,type=1,tim=8866891135825=====================РАЗБИРАНЕ В КУРСОР #5 len=356 dep=1 uid=173 oct=3 lid=173 tim=8866891136821 hv=2468783182 ad='4c70e4398' sqlid='0wmwsjy9kd92f'SELECT PROFILE_OPTION_ID, APPLICATION_ID, SITE_ENABLED_FLAG , APP_ENABLED_FLAG , RESP_ENABLED_FLAG , USER_ENABLED_FLAG, ORG_ENABLED_FLAG , SERVER_ENABLED_FLAG, SERVERRESP_ENABLED_FLAG, HIERARCHY_TYPE, USER_CHANGEABLE_FLAG FROM FND_PROFILE_OPTIONS WHERE PROFILE_OPTION_NAME =:B1 AND START_DATE_ACTIVE <=SYSDATE AND NVL(END_DATE_ACTIVE, SYSDATE)>=SYSDATEEND OF STMTBINDS # 5:Bind#0oacdty=01 mxl=128(80) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=01 csi=871 siz=128 off=0kxsbbf47d=0kxsbbf47d=0kxsbbf47d=28ffb7 flg=0value="PER_BUSINESS_GROUP_ID"EXEC #5:c=0,e=1474,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=1374985481 ,tim=8866891138224FETCH #5:c=0,e=61,p=0,cr=3,cu=0,mis=0,r=1,dep=1,og=1,plh=1374985481,tim=8866891138429CLOSE #5:c=0,e=5,dep=1,type=3,tim=8866891138503======================РАЗБИРАНЕ В КУРСОР #4 len=230 dep=1 uid=173 oct=3 lid=173 tim=8866891138634 hv=3575592451 ad='3aeea3da0' sqlid='55dc767ajydh3'ИЗБЕРЕТЕ ПРОФИЛ_ОПЦИЯ_СТОЙНОСТ ОТ ПРОФИЛ_ОПЦИЯ_ЗНАЧНОСТ ОТ FND_ ERE PROFILE_OPTION_ID =:B4 AND APPLICATION_ID =:B3 AND LEVEL_ID =10003 AND LEVEL_VALUE =:B2 И LEVEL_VALUE_APPLICATION_ID =:B1 И PROFILE_OPTION_VALUE IS NOT NULLEND OF STMAC2xl=STMacb2nd=02xmb2nd 00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=96 off=0kxsbbbfp=ffffffff7d677b68 bln=22 avl=03 flg=05value=03 flg=05value=02Bi=120m mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=24kxsbbbfp=ffffffff7d677b80 bln=22 avl=02 flg=01B2nd=820x =00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=48kxsbbbfp=ffffffff7d677b98 bln=22 avl=04 flg=01value=033o20B ) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1206001 frm=00 csi=00 siz=0 off=72kxsbbbfp=ffffffff7d677bb0 bln=22 avl=01 EC # ue=01 val:e=377,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=2802907561,tim=8866891138978FETCH #4:c=0,e=26, p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=1,plh=2802907561,tim=886689113 9050 ЗАТВОРИ #4:c=0,e=2,dep=1,type=3,tim=8866891139116=====================РАЗБИРАНЕ В КУРСОР #5 len =191 dep=1 uid=173 oct=3 lid=173 tim=8866891139308 hv=303338305 ad='3bedf0e48' sqlid='7qs7fx89194u1'SELECT PROFILE_OPTION_VALUE FROM FND_PROFILE_OPTION_VALUES WHERE PROFILE_OPTION_ID =:B4 AND APPLICATION_ID =:B3 AND LEVEL_ID =:B2 AND НИВО_СТОЙНОСТ =:B1 И ПРОФИЛ_ОПЦИЯ_СТОЙНОСТ НЕ Е NULLEND ОТ STMTBINDS #5:Bind#0oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00oacflg=03 fl2=1 frm=siz=1206 96 off=0kxsbbbfp=ffffffff7d673b78 bln=22 avl=03 flg=05value=1204Bind#1oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=0acfl0=si=01fr=0acfl0g0 siz=0 off=24kxsbbbfp=ffffffff7d673b90 bln=22 avl=02 flg=01value=800Bind#2oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=0f00 =00 siz=0 off=48kxsbbbfp=ffffffff7d673ba8 bln=22 avl=04 flg=01value=10001
как да проверя дали трасирането е активирано в oracle
Ако сте активирали проследяването с помощта на пакета DBMS_MONITOR, можем да проверим дали проследяването е активирано с помощта на заявката по-долу
задайте редове 180col модул за a45col sql_trace_waits за a20col sql_trace_binds за a20col sql_trace за a20select потребителско име,модул,sid,sql_trace,sql_trace_waits,sql_trace_waits,sql_trace_waits,sql_trace_binds за a20col sql_trace за a20select потребителско име,module,sid,sql_trace,sql_trace_waits,sql_trace_waits,sql_trace_waits,sql_trace_sql от qENAl_traceses'=v$Btraceses'Ако е активиран чрез други методи, тогава единственият начин да проверите е да погледнете местоположението на проследяването и да разберете последните файлове за проследяване, след което да намерите sid и serial# в него и след това можете да потърсите v$session, за да намерите сесия и можете да деактивирате проследяването, ако желаете
Помощна програма Oracle tkprof
Файловете за проследяване, получени от горния метод, са в необработен вид, който може да бъде преобразуван в по-четлив формат с помощта на tkprof помощна програма (Transient Kernel PROFile помощна програма)
tkprofUsage:tkprof tracefile изходен файл [explain=] [table=][print=] [insert=] [sys=] [sort=]table=schema.tablename Използвайте 'schema.tablename' с опцията 'explain='. objasni=user/password Свържете се с ORACLE и издайте EXPLAIN PLAN.print=integer Избройте само първите „целочислени“ SQL изрази.aggregate=yes|noinsert=filename Избройте SQL изрази и данни вътре в INSERT statements.sys=no не изброява TKPROF операторите се изпълняват като потребител SYS.record=filename Записване на нерекурсивни изрази, намерени в проследяващия файл.waits=yes|no Записване на обобщение за всички събития на изчакване, открити в проследяващия файл.sort=option Набор от нула или повече от следните опции за сортиране :prscnt брой пъти, когато синтактичният анализ е извикан prscpu време на процесора parsingprsela изминало време анализиране prsdsk брой четения на диска по време на синтактичен анализ prsqry брой буфери за последователно четене по време на parseprscu брой буфери за текущо четене по време на parseprsmis брой пропуски в ex parse библиотека c cache ecute се наричаше execpu време на процесора, прекарано в изпълнение на exeela изминало време за изпълнение на exedsk брой четения на диск по време на изпълнение exeqry брой буфери за последователно четене по време на executeexecu брой буфери за текущо четене по време на executeexerow брой редове, обработени по време на изпълнение на библиотека execute от пъти, когато извличането е било извиканоfchcpu време на процесора, прекарано в извличанеfchela изминало време извличанеfchdsk брой четения на диска по време на fetchfchqry брой буфери за последователно четене по време на fetchfchcu брой буфери за текущо четене по време на fetchfchrow брой редове извличане на потребителя, предварително извлечен потребител>Някои примери
tkprof file.trc file.txt sys=no objasni=идентификатор на потребител/парола sort=prsela,exeela,fchelatkprof file.trc file.txt sys=no objašnjen=идентификатор на потребител/парола sort=prsela,exeela,fchelatkprof file.trc файл .txt sys=notkprof file.trc file.txt sys=no objasni=идентификатор на потребител/парола sort=prsela,exeela,fchelaТози печат само 10 sql tkprof .trc elaps.prf sys=no objasni=apps/ sort=(prsela,exeela,fchela) print=10Това отпечатва целия sql tkprof .trc elaps.prf sys=no objasni=apps/apps sort=prsela,exeela,fchelaПримерно съдържание на tkprof файл
TKPROF:Издание 11.2.0.4.0 – Производство на вторник, 17 януари 14:12:41 2013 Авторски права (c) 1982, 2007, Oracle. Всички права запазени. Файл за проследяване:TEST_ora_15941.trc Опции за сортиране:execpu fchcpu***************************************** *********************************************брой =брой пъти OCI процедурата беше изпълненаCPU =CPU време в секунди executingelapsed =изминало време в секунди executingdisk =брой физически четения на буфери от diskquery =брой буфери, получени за последователен ток на четене =брой буфери, получени в текущ режим (обикновено брой редове за актуализация) обработено от извличане или изпълнение на повикване************************************************** *************************************SQL ID:6w82ggrtysxPlan Hash:2325776775SELECT FUNCTION_NAME ОТ FND_USER_DESKTOP_OBJECTS КЪДЕ USER_ID =:b1 AND APPLICATION_ID =:b2 AND RESPONSIBILITY_ID =:b3 AND TYPE ='FUNCTION' AND ROWNUM <=10 ORDER BY SEQUENCEcall count cpu elapsed disk query current rows------- ------ ---- ---- ---------- ---------- ---------- ---------- ---------- Парс 1 0,00 0,00 0 0 0 0 0,00 0,00 0,00 0 0 0 0fetch 2 0,00 0,00 0 4 0 1 ------- ------ ----- --- ---------- ---------- ---------- ---------- ------- --- Общо 4 0,00 0,00 0 4 0 1Миси в кеша на библиотеката по време на разбор:0оптимизатор режим:All_RowSparsing User ID:173 (приложения) Брой статистика на плана, заснети:1Rows (1-во) редове (AVG) Редове (MAX) Източник на редици Източник- работа- операция- --------- ---------- ---------- --------------------- ------------------------------1 1 1 СОРТИРАНЕ ПО (cr=4 pr=0 pw=0 time=0 us cost=6 size=41 card=1)1 1 1 COUNT STOPKEY (cr=4 pr=0 pw=0 time=0 us)1 1 1 ДОСТЪП ДО ТАБЛИЦА ПО ИНДЕКС 0 ИНДЕКС. =0 US cost=5 size=41 card=1)1 1 1 ИНДЕКС ДИАПАЗОН S МОЖЕ FND_USER_DESKTOP_OBJECTS_N1 (cr=3 pr=0 pw=0 време=0 разходи за нас=3 размер=0 карта=3)(идентификатор на обект 33596) Редове План за изпълнение------- --------- ------------------------------------------0 ИЗБЕРЕТЕ ИЗЯВЛЕНИЕ РЕЖИМ:ALL_ROWS1 СОРТИРАНЕ ( ПОРЪЧАЙ ПО)1 БРОЙ (STOPKEY)1 ДОСТЪП ДО ТАБЛИЦА РЕЖИМ:АНАЛИЗИРАНО (ПО ИНДЕКС РЕД) НА 'FND_USER_DESKTOP_OBJECTS' (ТАБЛИЦА)1 ИНДЕКС РЕЖИМ:АНАЛИЗИРАНО (ДИАПАЗОН'ИНДЕКС СКАНИРАНЕ НА ИЗЧАКВАНЕ НА ДИАПАЗОН 'ИНДЕКС СКАНИРАНЕ) на изчакване на 1 пъти на ИНДЕКС. Събитието е изчаквало пъти Макс. Изчакайте Общо чакано--------------------------------------- Изчакайте ------ ---- ------------SQL*Мрежово съобщение до клиента 5 0.00 0.00SQL*Нетно съобщение от клиента 5 0.00 0.00SQL*Нетно съобщение от клиента 5 ***** ***** ************************************************** ***************SQL ID:276ut2ywquxPlan Hash:3856112528select object_name, icon_namefromfnd_desktop_objectscall count процесор ---------- ---------- ---------- ---------- -------- -Парка 1 0,00 0,00 0 0 0 0 0,00 0,00 0,00 0 0 0 0fetch 3 0,00 0,00 0 6 0 47 ------- ------------ ----- ----- ---------- ---------- ---------- ---------общо 5 0,00 0,00 0 6 0 47 Пропуски в кеша на библиотеката d при синтактичен анализ:0Режим на оптимизатор:ALL_ROWSРазбиране на потребителски идентификатор:173 (APPS)Брой заснети статистики на плана:1редове (1-ви) редове (ср.) Редове (макс.) Операция с източник на ред---- ----- ----- ---------- ---------------------------------- ----------------47 47 47 ДОСТЪП ДО ТАБЛИЦА ПЪЛЕН FND_DESKTOP_OBJECTS (cr=6 pr=0 pw=0 time=0 us cost=2 size=1175 card=47) Редове План за изпълнение ------- ------------------------------------------- --------0 ИЗБЕРЕТЕ ИЗЯВЛЕНИЕ РЕЖИМ:ALL_ROWS47 ДОСТЪП ДО ТАБЛИЦА РЕЖИМ:АНАЛИЗИРАН (ПЪЛЕН) НА 'FND_DESKTOP_OBJECTS'(ТАБЛИЦА)Oracle trcsess полезност
При използване на споделени сървърни сесии се включват много процеси. Проследяването, отнасящо се до потребителската сесия, е разпръснато в различни файлове за проследяване, принадлежащи на различни процеси. Това затруднява получаването на пълна картина на жизнения цикъл на сесията.
Помощната програма trcsess консолидира изхода за проследяване от избрани файлове за проследяване въз основа на няколко критерияtrcsess [output=output_file_name] [session=session_id] [clientid=client_id] [service=service_name] [action=action_name] [module=module_name] [trace_files]trcsess output=main.trc service=TEST *trc . предварително>След като консолидираният файл за проследяване е генериран, можете да изпълните tkprof върху него.
Повече информация
В 11g и по-високи, sql_trace също е събитие и може да бъде зададено със синтаксис на събитие:
SQL> oradebug doc име на събитие sql_tracesql_trace:събитие за sql traceUsage-------sql_tracewait,bind ,plan_stat <никога | първо_изпълнение | всички_изпълнения | адаптивен>,ниво Така че можете да го използвате, както следва, за да активирате SQL_TRACE да изисква информация за свързване:
променете събития от набор от сесии 'sql_trace bind=true';или информация за свързване и изчакване (забележете, разделени със запетая):
променете събития от набор от сесии 'sql_trace bind=true, wait=true';Допълнителното проследяване може да бъде ограничено до набор от SQL_ID, ако включите филтър за него. Напр.
променете събития от набор от сесии 'sql_trace [sql:sql_id=g3yc1js3g2689 | sql_id=7ujay4u33g337]bind=true, wait=true';10046 нива на СЪБИТИЯ:(новите стойности на sql_trace са включени в [..])
Това са битови стойности, така че могат да бъдат събрани, за да се получат различни миксове
1 – Активиране на стандартна SQL_TRACE функционалност (по подразбиране)
4 – Като ниво 1 PLUS стойности за свързване на проследяване [ bind=true ]
8 – Тъй като Level 1 PLUS изчаква проследяване [ wait=true ]
Това е особено полезно за забелязване на изчакване на ключалката и т.н.
но може да се използва и за забелязване на пълни сканирания на таблицата и сканиране на индекси.От 11g са налични тези допълнителни битови нива:
16 – Генерирайте изхвърляния на STAT ред за всяко изпълнение [ plan_stat=all_executions ]
32 – Никога не изхвърляйте статистически данни за изпълнение [ plan_stat=never ]От 11.2.0.2 е налично това допълнително ниво на битове:
64 – Адаптивно изхвърляне на STAT линии. [ plan_stat=adaptive ]
Това изхвърля STAT информацията, ако SQL е отнел повече от около 1 минута, като по този начин
дава информация за по-скъпите SQL и за различни изпълнения на такива
SQL.например:Често срещано ниво на събитие е 12, което включва стандартен SQL_TRACE изход, обвързвания, изчаквания и
проследяване на STAT ред по подразбиране.Бележки:
Изхвърлянето на STAT е променено в 11g, така че те не се обобщават във всички изпълнения, а се изхвърлят след изпълнение. Това е направено за справяне със случаите, при които курсорът не е затворен и поради това STAT информацията не се изхвърля.
Сега гарантираме, че ще уловим STAT информацията след изпълнението. Вижте горните битови нива, за да имате по-фин контрол върху STAT линиите.Също чете
v$active_session_history
обяснете плана в Oracle
sql tuning Advisor