> 일반적인 문제 > 오라클에서 테이블 잠금 이유를 확인하는 방법

오라클에서 테이블 잠금 이유를 확인하는 방법

小老鼠
풀어 주다: 2023-07-05 15:09:45
원래의
2957명이 탐색했습니다.

oracle이 테이블을 잠그는 이유는 프로그램이 테이블에 삽입을 수행하고 아직 커밋되지 않은 경우 다른 프로그램도 동일한 테이블에 삽입을 수행하며 이때 리소스 사용 예외가 발생하기 때문입니다. 테이블 잠금.

오라클에서 테이블 잠금 이유를 확인하는 방법

이 튜토리얼의 운영 체제: Windows 10 시스템, Oracle 버전 19c, Dell G3 컴퓨터.

오라클이 테이블을 잠그는 이유는 무엇인가요?

테이블을 잠그는 주요 이유는 다음과 같습니다.

(1) 프로그램 A는 tableA의 삽입을 실행하고, 프로그램 B는 커밋 전에도 tableA를 삽입합니다. time 리소스가 바쁠 때 발생하는 예외는 잠금 테이블입니다

(2) 잠금 테이블은 병렬이 아닌 동시성으로 자주 발생합니다(병렬에서는 한 스레드가 데이터베이스를 작동하면 다른 스레드는 데이터베이스, CPU 및 I/O를 작동할 수 없음) 할당 원칙 )

테이블 잠금 확률을 줄이는 방법:

(1) insert, update, delete 문 실행과 커밋 사이의 시간을 줄입니다. 구체적으로 일괄 실행을 단일 실행으로 변경하고 SQL 자체의 비실행 속도를 최적화합니다

(2) 트랜잭션이 비정상적으로 롤백되는 경우

테이블을 잠그는 이유는 행 데이터가 수정되었기 때문일 수 있습니다. 제출하는 것을 잊어버리면 테이블도 잠길 수 있습니다.

1. 결정하기 전에 시계를 잠그는 이유를 확인하는 것이 좋습니다.

1 테이블 잠금 쿼리의 코드 형식은 다음과 같습니다.

select count(*) from v$locked_object;
select * from v$locked_object;
로그인 후 복사

2. 어떤 테이블이 잠겼는지 확인하세요

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
로그인 후 복사

3 어떤 세션이 잠겼는지 확인하세요

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
로그인 후 복사

4 어떤 SQL이 잠겼는지 확인하세요

select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;
로그인 후 복사

5. Kill Drop 해당 프로세스

명령 실행: alter system kill session'1025,41';

여기서 1025는 sid이고 41은 serial#입니다.

2 Oracle 사용자가 로그인할 때 자주 잠기는 이유

. , 메시지가 표시됩니다. Lock

1. 잠금을 해제하려면 dba 역할을 가진 사용자로 로그인하세요. 먼저 특정 시간 형식을 설정하여 변경된 특정 시간

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
로그인 후 복사

Session을 확인하세요.

2. time

SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE
------------------------------ -------------------
TEST 2021-03-10 08:51:03
로그인 후 복사

3. 잠금해제

SQL> alter user test account unlock;
로그인 후 복사

사용자가 변경되었습니다.

위 내용은 오라클에서 테이블 잠금 이유를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿