Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последний запрос текущей сессии в самой сесии / 3 сообщений из 3, страница 1 из 1
20.04.2017, 23:12
    #39441928
Последний запрос текущей сессии в самой сесии
Что-то типа такого предпятничного бреда
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare
   v_n        number;
   v_sid      number;
   v_sql_text varchar2(4000);

   procedure log_sql(p_sid number)
   is
      pragma autonomous_transaction;      
   begin
     select sql_text
       into v_sql_text
       from v$sql
      where sql_id = (select sql_id 
                        from v$session
                       where sid = p_sid);
      dbms_output.put_line(v_sql_text);                        
   end;
begin
   select sid 
     into v_sid
     from v$mystat where rownum<2;
     
   select 1 into v_n from dual;
   log_sql(v_sid);   
   select 2 into v_n from dual;
   log_sql(v_sid);   
   select 3 into v_n from dual;
   log_sql(v_sid);   
end;


Но надежда не оправдалась и естественно запрос достает сам себя, а не
select1 into v_n from dual )
То есть надо достать предыдущий запрос, а не сам запрос, который достает последний запрос ) вопрос как.
...
Рейтинг: 0 / 0
20.04.2017, 23:31
    #39441934
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последний запрос текущей сессии в самой сесии
Велосипедист,

v$session.prev_sql_id

PS. Если когда-то встречал
Код: plaintext
select * from table(dbms_xplan.display_cursor(null,null));
то не сложно догадаться включить SQL trace и глянуть что там вызывается.

PPS. v$mystat уже старо как говно мамонта.
Можно юзать userenv('sid'), хотя и оно вроде deprecated, но я его не брошу. :)
...
Рейтинг: 0 / 0
21.04.2017, 04:27
    #39441957
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последний запрос текущей сессии в самой сесии
dbms_photoshopМожно юзать userenv('sid'), хотя и оно вроде deprecated, но я его не брошу. :)
sys_context('userenv', 'sid') .
Если что-то сильно критичное к времени отклика, то sid в переменную, чтобы fixed table fixed index в плане получить :)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> explain plan for
  2  select * from v$session where sid=sys_context( 'userenv', 'sid');

Explained.

SQL> 
SQL> select plan_table_output from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 2422122865

---------------------------------------------------------------------------------------------
| Id  | Operation		  | Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT	  |		    |	  1 |	432 |	  0   (0)| 00:00:01 |
|   1 |  MERGE JOIN CARTESIAN	  |		    |	  1 |	432 |	  0   (0)| 00:00:01 |
|   2 |   NESTED LOOPS		  |		    |	  1 |	188 |	  0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FULL	  | X$KSLWT	    |	  1 |	123 |	  0   (0)| 00:00:01 |
|*  4 |    FIXED TABLE FIXED INDEX| X$KSLED (ind:2) |	  1 |	 65 |	  0   (0)| 00:00:01 |
|   5 |   BUFFER SORT		  |		    |	  1 |	244 |	  0   (0)| 00:00:01 |
|*  6 |    FIXED TABLE FULL	  | X$KSUSE	    |	  1 |	244 |	  0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------


PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
   3 - filter("W"."KSLWTSID"=TO_NUMBER(SYS_CONTEXT('userenv','sid')))
   4 - filter("W"."KSLWTEVT"="E"."INDX")
   6 - filter("S"."INST_ID"=USERENV('INSTANCE') AND BITAND("S"."KSSPAFLG",1)<>0 AND
	      BITAND("S"."KSUSEFLG",1)<>0 AND "S"."INDX"=TO_NUMBER(SYS_CONTEXT('userenv','sid')))

21 rows selected.

SQL> 
SQL> var sid number
SQL> 
SQL> explain plan for
  2  select * from v$session where sid=:sid;

Explained.

SQL> 
SQL> select plan_table_output from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 1627146547

---------------------------------------------------------------------------------------------
| Id  | Operation		  | Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT	  |		    |	  1 |	432 |	  0   (0)| 00:00:01 |
|   1 |  MERGE JOIN CARTESIAN	  |		    |	  1 |	432 |	  0   (0)| 00:00:01 |
|   2 |   NESTED LOOPS		  |		    |	  1 |	188 |	  0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FIXED INDEX| X$KSLWT (ind:1) |	  1 |	123 |	  0   (0)| 00:00:01 |
|*  4 |    FIXED TABLE FIXED INDEX| X$KSLED (ind:2) |	  1 |	 65 |	  0   (0)| 00:00:01 |
|   5 |   BUFFER SORT		  |		    |	  1 |	244 |	  0   (0)| 00:00:01 |
|*  6 |    FIXED TABLE FIXED INDEX| X$KSUSE (ind:1) |	  1 |	244 |	  0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------


PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
   3 - filter("W"."KSLWTSID"=TO_NUMBER(:SID))
   4 - filter("W"."KSLWTEVT"="E"."INDX")
   6 - filter("S"."INDX"=TO_NUMBER(:SID) AND "S"."INST_ID"=USERENV('INSTANCE') AND
	      BITAND("S"."KSSPAFLG",1)<>0 AND BITAND("S"."KSUSEFLG",1)<>0)

21 rows selected.

...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последний запрос текущей сессии в самой сесии / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]