programing

사용자 이름으로 마지막 10개의 오라클 쿼리를 찾는 방법은?

instargram 2023. 9. 24. 12:20
반응형

사용자 이름으로 마지막 10개의 오라클 쿼리를 찾는 방법은?

이것이 가능한지 확실하지 않습니다.10g 먹고 있어요.최종 결과는 다음과 같습니다.

Username      | Date/Time            | sqltext 
jdoe          | 3/21/11 10:32:27     | select sum(total) from sales where in_date > '08-JAN-11' 
jdoe          | 3/21/11 10:32:21     | delete from products_old 
jdoe          | 3/21/11 10:32:18     | select item, description from products where item = 'blah' 
jdoe          | 3/21/11 10:32:06     | select count(item) from products 
jdoe          | 3/21/11 10:31:44     | describe products

v$sql은 지금까지 전송된 거의 모든 sql 쿼리를 저장하는 것처럼 보이지만 사용자 이름과 날짜를 얻으려면 무엇에 가입해야 합니까?

엔터프라이즈 에디션과 성능 및 튜닝 팩이 있는 경우(그렇지 않으면 AWR 테이블을 쿼리하는 것이 라이센스에 위반됨),V$ACTIVE_SESSION_HISTORY가장 가까운 곳에서 볼 수 있습니다.이렇게 하면 각 활성 세션이 실행 중인 내용을 매초마다 캡처합니다.그러나 초당 많은 SQL 문을 실행하는 사용자가 있거나 SQL 문이 특정 두 번째 경계에서 활성화되지 않을 정도로 빠르면 모든 쿼리가 캡처되지 않습니다.특정 사용자가 수행한 마지막 10가지 작업에 대한 일반적인 샘플링을 시도하는 경우(실행 중인 쿼리를 더 오래 잡는 것에 대한 편견으로) AWR이면 충분합니다.그러나 사용자가 세션에서 수행하는 작업을 추적하는 것과 같은 작업을 시도하는 경우 AWR은 적절하지 않습니다.

사용자가 수행하는 모든 작업을 캡처하려면 세션을 추적해야 합니다.그러면 서버에 다소 볼륨 있는 추적 파일이 생성됩니다. 이 파일은 사용하여 요약할 수 있습니다.tkprof효용.그러나 이를 위해서는 관심 SQL이 실행되기 전에 특정 세션에 대한 추적을 활성화해야 합니다. 이는 소급적으로 수행할 수 있는 작업이 아닙니다.

세션의 변경 내용에만 관심이 있는 경우 LogMiner를 사용하여 redo 로그를 확인하여 사용자가 수행하는 작업을 확인할 수 있습니다.이 작업은 소급하여 수행할 수 있지만 SELECT 문은 REDO를 생성하지 않으므로 REDO 로그에 기록되지 않고 LogMiner에 보이지 않습니다.

JDBC를 사용하는 경우 Log4jdbc 래퍼 라이브러리를 항상 사용할 수 있습니다.모든 jdbc 활동을 log4j에 기록합니다.

여러 이벤트 유형에 대한 로그 수준을 구성할 수 있으며, sql이 발행(바인드 변수가 해당 값으로 대체됨)되고 타이밍 정보가 표시됩니다.항상 사용합니다.

언급URL : https://stackoverflow.com/questions/5383381/how-to-find-last-10-oracle-queries-by-username

반응형