Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Трасировка при выборе blob  [new]
Трасировка
Guest
Необходимо в процессе выбора данных из поля Blob выполнить трасировку, делаю так


connection.Open();
oracleCommand = new OracleCommand("alter session set events 'immediate trace name flush_cache'", connection);
oracleCommand.ExecuteNonQuery();
oracleCommand = new OracleCommand("alter session set events '10046 trace name context forever, level 1'", connection);
oracleCommand.ExecuteNonQuery();
 //читаем данные из БЛОБ поля
OracleCommand ReadOracleCommand = new OracleCommand("select BODY from test_2 where id=99", connection);
using (OracleDataReader reader = ReadOracleCommand.ExecuteReader(CommandBehavior.SequentialAccess))
                {
                    reader.Read();
                    byte[] ByteBody = new byte[SizeRow];
                    reader.GetBytes(0, 0, ByteBody, 0, ByteBody.Length - 1);
                    reader.Close();
                }
oracleCommand = new OracleCommand("alter session set events '10046 trace name context off'", connection);
oracleCommand.ExecuteNonQuery();
connection.Close();

трайс файл создаеться, например

TKPROF: Release 9.2.0.7.0 - Production on Втн Янв 13 13:21:28 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Trace file: test_ora_1432_9900000_2_r.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

alter session set events '10046 trace name context forever, level 1'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 48  
********************************************************************************

select BODY 
from
 test_2 where id=99


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0         19          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          0         19          0           1

Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 48  

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS FULL TEST_2 

********************************************************************************

alter session set events '10046 trace name context off'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 48  



********************************************************************************

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        2      0.00       0.00          0          0          0           0
Execute      3      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0         19          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        6      0.00       0.00          0         19          0           1

Misses in library cache during parse: 0


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      0      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        0      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0

    3  user  SQL statements in session.
    0  internal SQL statements in session.
    3  SQL statements in session.
********************************************************************************
Trace file: test_ora_1432_9900000_2_r.trc
Trace file compatibility: 9.02.00
Sort options: default

       0  session in tracefile.
       3  user  SQL statements in trace file.
       0  internal SQL statements in trace file.
       3  SQL statements in trace file.
       3  unique SQL statements in trace file.
      24  lines in trace file.

но он пустоват, файл размером порядка 10мб,
при чтении файла размером в 100кб будут аналогичные данные
существуют ли какието особености при трасировке когда работают с blob полями?
13 янв 09, 13:31    [6677892]     Ответить | Цитировать Сообщить модератору
 Re: Трасировка при выборе blob  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
LOB'ы - они особенные. Читать доку. И FAQ по трассировке.
При трассировке операций с лобами, соответствующие ожидания записываются на уже закрытый курсор, типа того:
drop table t;
create table t(x clob);
insert into t values (empty_clob());
alter session set events '10046 trace name context forever, level 8';
declare
    l_clob clob;
begin
    select x into l_clob from t for update;
    dbms_lob.open(l_clob, dbms_lob.lob_readwrite);
    for i in 1..100 loop
        dbms_lob.writeappend(l_clob, 32000, lpad('x', 32000, 'x'));
    end loop;
    dbms_lob.close(l_clob);
end;
/
alter session set events '10046 trace name context off'; 

PARSING IN CURSOR #12 len=331 dep=1 uid=0 oct=6 lid=0 tim=1193177485606195 hv=4151580176 ad='f9825428'
update obj$ set obj#=:6,type#=:7,ctime=:8,mtime=:9,<поскипано>
END OF STMT
PARSE #12:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=1193177485606195
EXEC #12:c=0,e=0,p=0,cr=2,cu=1,mis=0,r=1,dep=1,og=4,tim=1193177485606195
STAT #12 id=1 cnt=0 pid=0 pos=1 obj=0 op='UPDATE  '
STAT #12 id=2 cnt=1 pid=1 pos=1 obj=37 op='INDEX RANGE SCAN I_OBJ2 '
=====================
PARSING IN CURSOR #1 len=268 dep=0 uid=65 oct=47 lid=65 tim=1193177485606195 hv=4132541087 ad='f29aa360'
declare
    l_clob clob;
begin
    select x into l_clob from t for update;
    dbms_lob.open(l_clob, dbms_lob.lob_readwrite);
    for i in 1..100 loop
        dbms_lob.writeappend(l_clob, 32000, lpad('x', 32000, 'x'));
    end loop;
    dbms_lob.close(l_clob);
end;
END OF STMT
PARSE #1:c=20000,e=9766,p=0,cr=23,cu=21,mis=1,r=0,dep=0,og=4,tim=1193177485606195
...
WAIT #12: nam='direct path write (lob)' ela= 0 p1=3 p2=942252 p3=4
Увидеть их мона в конце обработанного трейса (естественно, когда трассировка уровня 8 или 12).
Кроме этого, насколько я понимаю, эти операции асинхронные (?), и поэтому фактические ожидания такого рода обычно очень малы (в сравнении с db file sequential read например). Возможно это баг 9-ки.
13 янв 09, 13:49    [6678098]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить