사용자 이름으로 마지막 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
'programing' 카테고리의 다른 글
AngularJSng 클릭으로 두 번 불이 발생 (0) | 2023.09.24 |
---|---|
각도가 있어야 하는 것 아닌가요?Jsong 지시? (0) | 2023.09.24 |
mysqli - $result->close(); & $mysqli->close();를 꼭 해야 합니까? (0) | 2023.09.24 |
워드프레스 사용자 정의 게시글 유형에서 필드 유효성 검사 및 표시 오류 (0) | 2023.09.24 |
웹팩으로 전역 변수 정의 (0) | 2023.09.24 |