툴에서 빨간색으로 엑스표시하고 그런식으로 표시 해 주니까 깨진다 에러났다 이렇게 받아들이시는 분들이 많은데, 그냥 그건 "유효하지 않은" 상태를 나타내는 의미입니다. 실제로 문법 오류로 잘못 컴파일 되어서 유효하지 않을수도 있지만 위 상황처럼 참조 오브젝트의 변경이 일어나서 프로시저를 다시 컴파일 해서 오류가 있는지 없는지 검증하기 전 까지는 유효한지 아닌지 알지 못하는 상태일 경우에도 마찬가지로 유효하지 않은 상태죠.
테이블에 변경이 일어났을 때 바로 컴파일이 된다고 했을 때, 만일 연관 plsql 오브젝트끼리 의존성이 복잡하게 얽혀 있으면 그게 모두 일시에 재 컴파일 되는거고 이로 인한 발생할 수 있는 라이브러리 캐시 내 경합을 방지하기 위해서 일부러 바로 컴파일 되지 않도록 되어 있는걸로 기억합니다(오래전에 본거라 정확하지 않습니다).
어플리케이션에서 항상 사용하는 PL/SQL 이라고 하면 INVALIDATION 후 재 컴파일 시 라이브러리캐시 핀 경합으로 컴파일이 되지 않는 경우도 있습니다. 패키지일 경우는 스펙은 내버려 두고 바디만 컴파일이 되는 경우에는 핀 경합이 발생하지 않는다고 예전에 읽었던 것 같습니다. 라이브러리 캐시 오브젝트는 패키지 스펙을 바라보고 있는거고, 실제 변경은 바디에서 발생하니까요. 그래서 패키지 사용을 권장한다는 내용이었는데 마찬가지로 기억이 정확하지 않고 이론은 이론일 뿐이라..
아무튼 이런저런 이유로 인해 테이블 변경을 아무나 아무때나 막 하는건 좋은 관리방법은 아니라고 봅니다 특히 운영시스템일 경우에는요