>  기사  >  데이터 베이스  >  Oracle에서 교착 상태를 쿼리하는 방법

Oracle에서 교착 상태를 쿼리하는 방법

WBOY
WBOY원래의
2022-02-17 17:13:1832534검색

Oracle에서는 dba 사용자를 사용하여 "select username, lockwait, status, machine, program from v$session where sid in" 문을 실행하여 교착 상태를 쿼리할 수 있습니다. 결과가 있으면 교착 상태가 표시됩니다. .

Oracle에서 교착 상태를 쿼리하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle에서 교착 상태를 쿼리하는 방법

1. 교착 상태 확인

1) dba 사용자를 사용하여 다음 명령문을 실행합니다.

select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)

출력 결과가 있으면 교착 상태가 있음을 의미하며 어떤 시스템에서 이를 볼 수 있는지 교착상태? 필드 설명:

Username: 교착 상태 문에 사용된 데이터베이스 사용자

Lockwait: 교착 상태 상태, 콘텐츠가 있으면 교착 상태임을 의미합니다.

상태: 상태, 활성은 교착 상태를 의미합니다.

머신: 교착 상태 문이 있는 머신입니다.

프로그램: 교착 상태 문은 주로 어떤 응용 프로그램에서 나오나요?

2) 교착 상태 문을 보려면 dba 사용자를 사용하여 다음 문을 실행하세요.

select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

2. 교착 상태 해결

1) 교착 상태 프로세스 찾기:

SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

2) 교착 상태 프로세스 종료: 시스템 종료 세션 'sid,serial#' 변경(여기서 sid=l.session_id)

3) 여전히 해결되지 않는 경우:

select pro.spid from v$session ses,
v$process pro
where
ses.sid=XX
and ses.paddr=pro.addr;

sid를 교착 상태 sid로 바꾸십시오:

권장 튜토리얼: "Oracle Video Tutorial"

위 내용은 Oracle에서 교착 상태를 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.