powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последний запрос текущей сессии в самой сесии
3 сообщений из 3, страница 1 из 1
Последний запрос текущей сессии в самой сесии
    #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
Последний запрос текущей сессии в самой сесии
    #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
Последний запрос текущей сессии в самой сесии
    #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
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последний запрос текущей сессии в самой сесии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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