데이터베이스 개체에 변경 사항을 배포 할 때마다 그에 따라 달라지는 코드가 무효화됩니다. 이는 트리거, 뷰 및 저장 프로 시저에 영향을 미칩니다. 그러나 다음에 무언가가 코드를 호출하면 데이터베이스가 자동으로 다시 컴파일합니다.
그래서 걱정할 필요가 없습니다. 맞습니까? 네, 요점까지. 문제는 트리거의 무효화 (또는 무엇이든)는 부작용이있을 수있는 트리거의 작동에 영향을 미칠 수있는 변경 사항이 있음을 나타내는 플래그입니다. 가장 확실한 부작용은 트리거가 컴파일되지 않는다는 것입니다. 더 미묘하게, 트리거가 컴파일되지만 작동 중에 실패합니다.
따라서 개발 환경에서 트리거를 강제로 다시 컴파일하여 변경 사항이 근본적으로 손상되지 않았는지 확인하는 것이 좋습니다. 그러나 우리는 변경 사항을 프로덕션 환경에 배치 할 때이 단계를 건너 뛸 수 있습니다. 모든 것이 필요에 따라 다시 컴파일 될 것이라고 확신하기 때문입니다. 우리의 신경에 달려있다.
오라클은 스키마의 모든 유효하지 않은 객체를 자동으로 다시 컴파일하는 메커니즘을 제공한다.
가장 직접적인 것은 DBMS_UTILITY.COMPILE_SCHEMA()
입니다. 그러나 이것은 8i (Java Stored Procedures에 대한 지원이 순환 의존성에 대한 잠재 성을 도입했기 때문에) 이후 처음부터 모든 객체를 성공적으로 컴파일 할 수 있다는 보장이 없으므로 현혹되어 왔습니다.
9i 오라클은 어떤 것을 다시 컴파일 한 스크립트 $ORACLE_HOME/rdbms/admin/utlrp.sql
을주었습니다. 불행히도 SYSDBA 액세스가 필요합니다.
10g에서 UTL_RECOMP 패키지가 추가되었습니다.이 패키지는 기본적으로 해당 스크립트가 수행하는 모든 작업을 수행합니다. 많은 수의 개체를 다시 컴파일 할 때 권장되는 방법입니다. 아쉽게도 SYSDBA 액세스가 필요합니다. Find out more.
11g에서 오라클은 세부 종속성 관리를 도입했습니다. 즉, 테이블에 대한 변경 사항은 세밀한 세분성 (기본적으로 테이블 수준이 아닌 열 수준)으로 평가되며 변경 사항에 의해 직접 영향을받는 개체 만 영향을받습니다. Find out more.
출처
2010-07-08 03:07:38
APC
고마워,이 설명은 아주 좋아 보인다. 위의 링크를 클릭하여 10g의 설명서를 읽었습니다. 이 스크립트를 실행하려면 AS SYSDBA에 연결되어 있어야합니다. 어쨌든 SYSDBA로 로그인해야합니다. – newguy
@Newguy - 네가 맞아. – APC