procedure compile lock 0 2 3,382

by 퍼품디올 lock procedure [2017.08.11 13:34:36]


lock_1.jpg (88,256Bytes)

안녕하세요

oracle 9i를 사용하고 있는 시스템 입니다.

프로시져를 컴파일 할때 이런 lock이 걸립니다.

매번 걸리는건 아닙니다..컴파일이 잘 되다가 한번씩 걸립니다.

execute 할때도 아니고 컴파일 할때 락이 걸리니까.. 이해가 잘 안되기도 하고...

아무리 서치를 해봐도 해결법을 못찾겠어서 여쭤봅니다..

뭐를 좀 고쳐보면 될까요?? ㅜㅜㅜ

곧 운영서버에 적용을 해야하는데 이것때문에 불안해서...잠이 안옵니다.

 

 

by 백면서생 [2017.08.11 14:50:45]
-- 간략히 말씀드리면 
-- 해당 프로시저를 sql들이 실행하고 있다면 shared mode로 library cache pin을 점유하고 있읍니다.
-- 그 상황에서 프로시저를 컴파일하려고 하면 library cache pin을 exlusive mode로 획득해야 되는데
-- 서로 호환이 되지 않아 대기를 하는 것입니다.
-- 물론 sql실행이 없을때는 컴파일이 바로 됩니다.
-- 그리고 설령 프로시저가 컴파일이 되었다 하더라도 그 프로시저를 실행하던 sql들이
-- invalid가 되어 실행시  재컴파일을 하게 되는 비극이 생깁니다. 

-- 따라서 db서버가 트래픽이 많을때는 절대 하시면 안됩니다.(초다빈도 수행 프로시져면 was,job을 내리시고 - 야근종용?)

-- 그리고 프로시저 컴파일 후 sq이 재컴파일 되는 문제는 패키지내에 정의하시고 사용하시면 해결이 됩니다. 
-- p.s.) 프로시저,펑션 포함해서 이야기 했습니다. sql을 실행 커서라고 보시면 되겠습니다.

 


by jkson [2017.08.11 15:25:52]

설명이 멋져요~~!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입