Secure View Merging - 10gR2 New Feature
오라클 2008.04.21 13:10Oracle의 권한 관리 기능이 강화됨에 따라 추가된 기능으로 이해할 수 있다. 단, 드물게 이 기능에 의해 실행 계획 이상이 생기는 경우가 종종 보고되고 있다.
즉, 10gR2 이전 버전에서는 View Merging이 이루어짐으로써 최적의 실행 계획을 갖추었던 쿼리가 10gR2에서 갑자기 View Merging을 포기함으로써 실행 계획의 이상이 생기는 현상이 발생할 수 있다.
이런 현상은 주로 특정 유저가 만든 View를 다른 유저가 참조하는 과정에서 많이 발생한다. 가령 SYS 유저가 생성한 Dictionary View를 다른 유저가 참조하고자 하는 경우 10gR2에서 갑자기 성능이 크게 저하되는 현상이 발생하게 된다. 이런 경우에는 다음과 같은 해결책을 적용할 수 있다.
optimizer_secure_view_merging = false;
2. Merge Any View 권한을 부여한다.
grant merge any view to [user];
자세한 내용은 Exem Wiki를 참조한다.
또 하나의 주의할 것은 10g Upgrade 이후 Dictionary View에 대한 조회가 느려지는 현상과의 관련이다. 10g Upgrade 후 Dictionary View 조회 성능이 극단적으로 저하되는 현상이 드둘게 보고되고 있다. 이 경우에는 다음과 같은 세가지를 점검해볼 필요가 있다.
10g에서는 주기적으로 Dictionary Stats와 Fixed Object Stats를 수집할 것이 권장된다.
exec dbms_stats.gather_dictionary_stats;
exec dbms_stats.gather_fixed_objects_stats;
2. Secure View Merging 기능이 활성화되어 있는가?(10gR2~)
위의 내용 참조
3. 재정의된 all_objects, all_synonym 때문인가?(10gR2~)
10gR2에서 all_objects, all_synonuym 뷰가 완전히 새로 정의되었다. 이전 버전이 여러 가지 문제를 가지고 있었기 때문이라고 한다. 이 덕분에 특정 상황에서 갑자기 조회 성능이 저하되는 현상이 보고되어 있다. 이 경우에는 1,2번의 조치를 하고 그래도 해결되지 않으면 이전 버전의 all_objects, all_synomym을 Private Synonym으로 새로 정의하는 방법을 사용한다.
한가지 정리한다면, 이런 사소한 결점들이 모여서 Oracle Upgrade의 악몽을 만든다는 것이다. 즉 Upgrade 이후 성능이 저하되는 현상은 불행하게도 매우 자주 발생한다. 언제나 Upgrade는 엄밀한 테스트 이후에 해야하는 이유가 되는 셈이다.
'오라클' 카테고리의 다른 글
Annoying _fix_control bug - 5548510 (0) | 2008.04.30 |
---|---|
Explain Plan과 Clustering Factor (0) | 2008.04.22 |
Secure View Merging - 10gR2 New Feature (3) | 2008.04.21 |
dbms_shared_pool.purge - 항상 꿈꿔오던 기능 (9) | 2008.04.14 |
gather_plan_statistics 힌트와 Parallel Query (0) | 2008.04.10 |