ORA-00054: 리소스 사용량이 많고 NOWAIT가 지정된 상태에서 획득
테이블을 업데이트하는 중인 스크립트를 죽였습니다.이제 내가 받는 대본을 다시 실행하면,
ORA-00054: 리소스 사용량이 많고 NOWAIT가 지정된 상태에서 획득
테이블이 잠겨 있는 것 같은데요?테이블 잠금을 해제하려면 어떻게 해야 합니까?
1단계:
select object_name, s.sid, s.serial#, p.spid
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id and l.session_id = s.sid and s.paddr = p.addr;
2단계:
alter system kill session 'sid,serial#'; --`sid` and `serial#` get from step 1
더 많은 정보: http://www.oracle-base.com/articles/misc/killing-oracle-sessions.php
사용자 'user712934'에 대한 정보 감사합니다.
또한 sql, 사용자 이름, 시스템, 포트 정보를 검색하고 연결을 유지하는 실제 프로세스에 액세스할 수 있습니다.
SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S,
V$PROCESS P, V$SQL SQ
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR
AND S.SQL_ADDRESS = SQ.ADDRESS;
기다리셔야 합니다.살해된 세션은 거래 중이었고 많은 기록을 업데이트했습니다.이 기록들은 롤백되어야 하며 일부 백그라운드 프로세스가 이를 처리하고 있습니다.그동안 터치한 레코드는 수정할 수 없습니다.
세션을 종료하면 Oracle이 세션을 정리하는 동안 세션이 "KILD" 상태로 잠시 유지됩니다.
꼭 필요하다면 OS 프로세스도 죽일 수 있습니다(검색).v$process.spid), 이렇게 하면 고정되어 있던 잠금이 해제됩니다.
자세한 내용은 이 항목을 참조하십시오.
상황에 따라 테이블이 잠겨 있는 것은 정상적인 작업의 일부일 수 있으며 차단 트랜잭션을 종료하지 않으려는 것입니다.다른 리소스를 위해 문을 대기시킵니다.Oracle 11g에는 이 문제를 처리하도록 설정할 수 있는 DDL 시간 초과가 있습니다.
만약 당신이 10g를 다루고 있다면, 당신은 더 창의적이어야 하고 재시도를 처리하기 위해 PL/SQL을 작성해야 합니다.Oracle 10g에서 Getting around ORA-00054 보기 resource_busy 예외가 발생할 때 문을 다시 실행합니다.
언급URL : https://stackoverflow.com/questions/3075738/ora-00054-resource-busy-and-acquire-with-nowait-specified
'programing' 카테고리의 다른 글
| Python, 객체 생성 (0) | 2023.07.20 |
|---|---|
| ID()로 개체를 가져오시겠습니까? (0) | 2023.07.20 |
| Angular 2에서 앱 구성 요소로 경로 데이터를 가져오는 방법 (0) | 2023.07.20 |
| Firebase 호스팅:SPA의 index.html에 대한 캐싱을 방지하는 방법 (0) | 2023.07.20 |
| 다른 폴더의 git "log" 사용 (0) | 2023.07.20 |