Oracle 잠금 테이블 상황은 다음과 같습니다. 1. 프로그램 A는 tableA에 대한 삽입을 수행하지만 커밋 전에 프로그램 B도 tableA에 대한 삽입을 수행합니다. 이 때 테이블 잠금인 리소스 사용 예외가 발생합니다. 잠금 테이블은 병렬 처리가 아닌 동시 실행으로 발생하는 경우가 많습니다. 병렬 처리에서는 한 스레드가 데이터베이스를 작동하면 다른 스레드는 CPU 및 I/O 할당 원칙을 작동할 수 없습니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 버전 19c, Dell G3 컴퓨터.
테이블을 잠그는 주요 이유는 다음과 같습니다.
1. 프로그램 A는 테이블 A에 삽입을 실행하고, 커밋 전에 프로그램 B도 테이블 A에 삽입합니다.
2. 테이블 잠금은 병렬이 아닌 동시성으로 발생하는 경우가 많습니다(병렬에서는 한 스레드가 데이터베이스를 작동할 때 다른 스레드는 데이터베이스, CPU 및 I/O 할당 원리를 작동할 수 없음)
확률을 줄이는 방법 테이블 잠금:
1. 삽입, 업데이트, 삭제 문 실행과 커밋 사이의 시간을 줄입니다. 구체적으로 일괄 실행을 단일 실행으로 변경하고, 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. 5, 해당 프로세스를 종료합니다
명령을 실행합니다: alter system kill session'1025,41';
여기서 1025는 sid이고 41은 serial#입니다.
2 Oracle 사용자가 자주 잠기는 이유
는 다음과 같은 경우에 프롬프트됩니다. 로그인: 테스트 사용자가 잠겼습니다
1. 잠금을 해제하려면 먼저 특정 시간 형식을 설정하세요.
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;
세션이 변경되었습니다.
2.
SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
3. 잠금 해제
SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE ------------------------------ ------------------- TEST 2021-03-10 08:51:03
사용자가 변경되었습니다.
위 내용은 Oracle은 언제 테이블을 잠그나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!