컴파일 저장 프로세스가ddl 자물쇠에 부딪히다
다음은 스토리지 프로세스 PROC를 먼저 실행하는 시뮬레이션입니다.TEST,
먼저 스토리지 프로세스 PROCTEST,
session s1:
begin
-- Call the procedure
proc_test;
end;/
sessions2에서 컴파일하기
session s2:
1 create or replace procedure proc_test is
2 n_num number :=0;
3 n_cnt number;
4 start_time number;
5 end_time number;
6 begi
7 .......... 。
이 때 대기 (언제 끝날지 알 수 없음) 데이터베이스에 있는 세션의 상태가 표시됩니다.
select sid,command,blocking_Session,event from v$session where status='ACTIVE' and module='PL/SQL Developer';
SID
COMMAND
BLOCKING_SESSION
EVENT
1
45
3
db file scattered read
2
434
24
45
library cache pin
분명히sid가 45인 세션은sid가 434인 코드를 컴파일하려는 세션을 막았다
dba 확인ddl_locks 보기가 더 잘 보여요.
SESSION_ID
OWNER
NAME
TYPE
MODE_HELD
MODE_REQUESTED
1
45
MHISKFDATA
PROC_TEST
Table/Procedure/Type
Null
None
2
434
MHISKFDATA
PROC_TEST
Table/Procedure/Type
Exclusive
None
v$lock은 다음과 같이 표시됩니다.
select * from v$lock where sid in ('45','434') order by sid;
ADDR
KADDR
SID
TYPE
ID1
ID2
LMODE
REQUEST
CTIME
BLOCK
00002B0774D9C4D8
00002B0774D9C538
45
TM
96902
0
3
0
2754
0
00000000FA47BE08
00000000FA47BE60
45
AE
100
0
4
0
2757
0
00000000F6FC7258
00000000F6FC72D0
45
TX
720925
365753
6
0
2753
0
00000000FA47D320
00000000FA47D378
434
AE
100
0
4
0
2085
0
00000000FA479120
00000000FA479178
434
AE
0
1
4
0
226
0
이때 할 건 45 세션을 죽이면 돼요.
select 'alter system kill session '''||sid||','||serial#||''' immediate;' from v$session where sid='45';
1
alter system kill session '45,39175' immediate;
재편역은 문제 없을 거예요.
만약 또 문제가 있다면 진행을 죽일 수밖에 없다
select p.spid from v$process p, v$session s where p.addr = s.paddr and s.sid='45';
linux에서
kill -9 &spid.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.