컬럼추가등 alter 구문을 사용하여 테이블을 변경하게되면...
LAST DDL TIME이 변하게 됩니다. 그러면 뭔가 의존관계가 깨어진 것이므로...
그 테이블에 부속된 패키지나 프로시져, 트리거들이 invalid 상태로 빠집니다. 그러나 대개는 실행시 자동으로 컴파일이 됩니다.(오류가 없는 이상, 오류가 있다면 컴파일이 안되고 에러가 나겠죠.)
그러나 프로시져등에서 DB Link등을 사용한다면 자동 컴파일이 되지 않더군요. (수동으로 다시 컴파일하여 valid 상태로 만들어주여야함.)
보통 업무적으로 아주 중요한 테이블 이를 테면 주문 같은 테이블은 엄청나게 트랜잭션도 많고 의존된 프로시져등이 많으므로 잘못 변경 작업을 하게 되면 바로 의존관계에 있는 객체들이 invalid 로 빠지게 되면서 장애의 원인을 제공하기도 합니다. 다시 컴파일이 되려면 내부적으로 lock 등으로 처리가 되므로 (수행과 컴파일은 동시에 진행되지 못함) 잘못하면 internal dead lock 상황에 빠집니다.
따라서 High Transaction 테이블의 경우 주의가 요망되고 작업시 테이블의 업무성격이나 트랜잭션 빈도, 작업을 해도 안전한 시간대 등을 검토하여야 합니다. 업무 중에는 이러한 변경작업을 하지 않는게 원칙이구요.
LAST DDL TIME이 변하게 됩니다. 그러면 뭔가 의존관계가 깨어진 것이므로...
그 테이블에 부속된 패키지나 프로시져, 트리거들이 invalid 상태로 빠집니다. 그러나 대개는 실행시 자동으로 컴파일이 됩니다.(오류가 없는 이상, 오류가 있다면 컴파일이 안되고 에러가 나겠죠.)
그러나 프로시져등에서 DB Link등을 사용한다면 자동 컴파일이 되지 않더군요. (수동으로 다시 컴파일하여 valid 상태로 만들어주여야함.)
보통 업무적으로 아주 중요한 테이블 이를 테면 주문 같은 테이블은 엄청나게 트랜잭션도 많고 의존된 프로시져등이 많으므로 잘못 변경 작업을 하게 되면 바로 의존관계에 있는 객체들이 invalid 로 빠지게 되면서 장애의 원인을 제공하기도 합니다. 다시 컴파일이 되려면 내부적으로 lock 등으로 처리가 되므로 (수행과 컴파일은 동시에 진행되지 못함) 잘못하면 internal dead lock 상황에 빠집니다.
따라서 High Transaction 테이블의 경우 주의가 요망되고 작업시 테이블의 업무성격이나 트랜잭션 빈도, 작업을 해도 안전한 시간대 등을 검토하여야 합니다. 업무 중에는 이러한 변경작업을 하지 않는게 원칙이구요.
$ORACLE_HOME/rdbms/admin/utlirp.sql -> $ORACLE_HOME/rdbms/admin/utlrp.sql
실행방법은
os 상에서
cd $ORACLE_HOME/rdbms/admin
sqlplus "/as sysdba"
SQL> @utlrp
하시면 Invalid Object 를 일괄 Recompile 하실 수 있습니다.
인발리드 확인
SELECT
object_type, object_name,
decode
(object_type,'VIEW','A','FUNCTION','B',
'TRIGGER','C','PROCEDURE','D',
'PACKAGE','E','PACKAGE BODY','F','SYNONYM','G')
FROM dba_objects
WHERE object_type in
('VIEW','FUNCTION','TRIGGER','PROCEDURE','PACKAGE',
'PACKAGE BODY','SYNONYM')
AND status='INVALID'
order by 3
'알아두면 좋은 정보 > 유용한 IT 정보' 카테고리의 다른 글
Firebase 소개 03 구글로그인 연동 (0) | 2016.12.19 |
---|---|
Firebase 소개 02 키생성 어플리케이션아이디 신규프로젝트 앱추가 (0) | 2016.12.17 |
Firebase 소개 01 (0) | 2016.12.17 |
오라클 서브쿼리 스칼라서브쿼리 인라인뷰 (0) | 2016.12.16 |
데이타베이스 설계 (0) | 2016.09.02 |