2014-02-07 1 views
1

프로 시저 1을 사용하는보기를 다시 만든 후 프로 시저 1을 사용하는 프로 시저 2를 다시 컴파일하면 프로 시저 1이 충돌하는 경우가 있습니다.ORACLE 프로 시저가 다시 생성 된 후 충돌합니다. 사용중인 뷰

절차가 변경되지 않은 상태로 다시 컴파일 한 후 (잘게 다듬 었음) 모두 정상적으로 작동합니다.

5000 명의 사용자가있는 .NET 웹 응용 프로그램 (MVC 3, 프레임 워크 4.5, EF 4.0, ODAC 11.2.0, IIS 7.5 응용 프로그램 풀)은이 절차를 사용합니다.

제 질문은 왜 이런 일이 일어나고 어떻게 대응합니까?

답변 해 주셔서 감사합니다.

+0

"충돌"의 의미는 무엇입니까? – OldProgrammer

+0

프로 시저에 sql 개발자가 빨간색 x가 있고 다시 컴파일하지 않으면 웹 응용 프로그램에서 호출 할 수 없습니다. – Azoro

+0

"붉은 X"가 무엇을 의미하는지 모르겠습니다. 죄송합니다. 이 절차를 클릭하면 오른쪽의 세부 정보 창에 "오류"탭이 표시됩니다. 일부 오류가 표시되어야합니다. – OldProgrammer

답변

1

걱정할 필요가 없습니다.

SQL Developer의 빨간색 "X"는 오라클이 프로 시저를 "Invalid"로 표시했다는 것을 나타냅니다. 아무것도 "추락했다". 잘못된 절차는 다음 두 가지 중 하나를 의미 할 수 있습니다.

(1) 마지막으로 프로 시저를 컴파일 할 때 컴파일 오류가 발생했습니다.이 문제는 구문을 수정하여 해결해야하는 문제입니다.

(2) 프로 시저가 의존하는 부분 (예 :보기)이 변경되어 프로 시저를 다시 컴파일해야합니다.

귀하의 경우 (2)가 가장 큰 원인입니다. 좋은 소식은, 오라클은 가 자동으로 절차를 다시 컴파일하므로 아무 것도 할 필요가 없다는 것입니다.

그러나 확실하게 알고 싶으면 절차를 마우스 오른쪽 버튼으로 클릭하고 "컴파일"을 선택하십시오. 당신이 '돈 때문에, 은 "오라클은 자동으로 절차 그것을 처음 실행을 다시 컴파일합니다 : 나는 제프리 켐프의 답변이 있다는 것을 알아 냈다

ALTER PROCEDURE myprocname COMPILE; 
+0

답변 해 주셔서 감사합니다.하지만 필자의 경우 오라클은 프로 시저를 자동으로 다시 컴파일하지 않으므로 애플리케이션에서 프로 시저를 실행할 수 없습니다. 이 기능을 활성화해야합니까? 나는 프로 시저에 오류가 없으며 수동으로 다시 컴파일 할 때 컴파일이 잘되고 응용 프로그램에서 프로 시저를 다시 호출 할 수 있습니다. – Azoro

+0

아무 것도 활성화 할 필요가 없습니다. 프로 시저를 실행하려고하면 어떤 오류가보고됩니까? –

0

:

또는, SQL 창에서 다음 명령을 실행 아무것도 할 필요가 없다. "

일반적으로 사실입니다. Oracle에서 오라클 프로 시저를 호출하면 (예 : 다른 프로 시저 또는 SQL 문) 컴파일되므로 일반적으로 말합니다. 하지만 내 경우에는 .net 응용 프로그램에서 프로 시저가 호출되었으며이 상황에서 무효 오라클 프로 시저는 프로 시저에 의존하는 무언가가 변경되면 자동으로 재 컴파일되지 않습니다. 프로 시저를 패키지에 포함 시키면 종속 객체가 변경 되더라도 oracle의 패키지가 상태를 변경하지 않기 때문에 문제가 해결됩니다.

다른 해결책은 init.ora 매개 변수 remote_dependencies_mode를 값 타임 스탬프에서 값 시그니처로 변경하는 것입니다. (시도하지 않음)하지만 프로 시저에 매개 변수를 추가하고 .net 앱에서 처음 호출하는 경우 프로 시저가 유효하지 않게됩니다 ... 그래서 단점이 있습니다.

관련 문제