programing

Oracle에 대해 실행된 쿼리를 보려면 어떻게 해야 합니까?

lastmoon 2023. 7. 21. 21:52
반응형

Oracle에 대해 실행된 쿼리를 보려면 어떻게 해야 합니까?

실행하기 위해 Oracle로 전송되는 쿼리를 확인해야 합니다.누가 이것을 어떻게 하는지 구체적으로 자세히 알려줄 수 있습니까?

특정 사용자의 쿼리를 보려는 경우 이를 사용할 수 있습니다(쿼리 권한이 있다고 가정).v$session그리고.v$sqlarea(일반적으로 ~을 통해)SELECT_CATALOG_ROLE)

SELECT sess.sid,
       sess.username,
       sqla.optimizer_mode,
       sqla.hash_value,
       sqla.address,
       sqla.cpu_time,
       sqla.elapsed_time,
       sqla.sql_text
  FROM v$sqlarea sqla, v$session sess
 WHERE sess.sql_hash_value = sqla.hash_value
   AND sess.sql_address = sqla.address
   AND sess.username = 'SCOTT'

SCOT를 시스템의 적절한 사용자 이름으로 대체합니다.

출력:

 544 SCOTT      ALL_ROWS   2004330732 07000001064088E8         89391       131836 SELECT sess.sid,        sess.username,
                                                                                        sqla.optimizer_mode,        sqla.h
                                                                                  ash_value,        sqla.address,        s
                                                                                  qla.cpu_time,        sqla.elapsed_time,
                                                                                         sqla.sql_text   FROM v$sqlarea sq
                                                                                  la, v$session sess  WHERE sess.sql_hash_
                                                                                  value = sqla.hash_value    AND sess.sql_
                                                                                  address = sqla.address    AND sess.usern
                                                                                  ame = 'SCOTT'

이 쿼리는 현재 실행 중인 쿼리를 표시합니다.

select sql_text from v$sqlarea where users_executing > 0;

V$SQL AREA 설명서 참조

이 두 개의 오라클 테이블/뷰(v$sqlarea & v$sqltext)에 액세스할 수 있는 경우 데이터를 확인하고 가져올 수 있습니다. 또한 필요에 따라 쿼리를 수정하고 필요에 따라 A.cpu_time, A.elapsed_time을 추가할 수도 있습니다.

쿼리 -

 SELECT A.SQL_ID,
         A.FIRST_LOAD_TIME,
         A.SQL_TEXT,
         A.SQL_FULLTEXT
    FROM v$sqlarea A, v$sqltext B
   WHERE     A.PARSING_SCHEMA_NAME = 'TESTUSER'  --YOUR USERNAME
         AND A.SQL_ID = B.SQL_ID
         AND A.HASH_VALUE = B.HASH_VALUE
ORDER BY A.FIRST_LOAD_TIME DESC

출력 -

enter image description here

언급URL : https://stackoverflow.com/questions/3237916/how-can-i-see-queries-that-are-executed-against-oracle

반응형