태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Secure View Merging - 10gR2 New Feature

오라클 2008.04.21 13:10
10gR2에 추가된 중요한 기능으로 Secure View Merging을 들 수  있다. 말 그대로 안전한(Secure) View Merge를 수행하겠다는 의미이다.

Oracle의 권한 관리 기능이 강화됨에 따라 추가된 기능으로 이해할 수 있다. 단, 드물게 이 기능에 의해 실행 계획 이상이 생기는 경우가 종종 보고되고 있다.

즉, 10gR2 이전 버전에서는 View Merging이 이루어짐으로써 최적의 실행 계획을 갖추었던 쿼리가 10gR2에서 갑자기 View Merging을 포기함으로써 실행 계획의 이상이 생기는 현상이 발생할 수 있다.

이런 현상은 주로 특정 유저가 만든 View를 다른 유저가 참조하는 과정에서 많이 발생한다. 가령 SYS 유저가 생성한 Dictionary View를 다른 유저가 참조하고자 하는 경우 10gR2에서 갑자기 성능이 크게 저하되는 현상이 발생하게 된다. 이런 경우에는 다음과 같은 해결책을 적용할 수 있다.

1. Secure View Merging기능을 비활성화한다
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 조회 성능이 극단적으로 저하되는 현상이 드둘게 보고되고 있다. 이 경우에는 다음과 같은 세가지를 점검해볼 필요가 있다.

1. Dictionary Stats, Fixed Object Stats를 수집했는가?(10gR1~)
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는 엄밀한 테스트 이후에 해야하는 이유가 되는 셈이다.







신고
Trackback 0 : Comments 3
  1. kildw 2008.04.21 18:03 신고 Modify/Delete Reply

    욱짜님 10째줄에 session레벨로 _optimizer_secure_view_merging disable시켜주셔는데 기능을 disable 시키실려면 히든이 아닌 초기화 파라미터 optimizer_secure_view_merging = false 세션레벨이 아닌 시스템레벨로 설정해주는 걸로 알고 있습니다.

  2. 욱짜 2008.04.21 18:07 신고 Modify/Delete Reply

    지적 감사합니다. 수정했습니다. 말씀하신대로 optimizer_secure_view_merging은 Session 레벨에서는 아예 수정이 안되고 System 레벨에서만 적용 가능한 파라미터입니다. 아마 권한 체크 모듈이 세션 레벨에서 적용하기 힘든 구조로 되어 있는 것으로 생각됩니다.

    UKJA@ukja10> @para optimizer_secure
    old 8: and i.ksppinm like '%&1%'
    new 8: and i.ksppinm like '%optimizer_secure%'

    NAME VALUE SES_MODIFIABLE SYS_MODIFIABLE
    ------------------------------ -------------------- --------------- ---------------------------
    DESCRIPTION
    ----------------------------------------------------------------------------------------------------
    --------------------------------------------------
    optimizer_secure_view_merging TRUE false immediate
    optimizer secure view merging and predicate pushdown/movearound

  3. 욱짜 2008.04.24 21:56 신고 Modify/Delete Reply

    Secure View Merging에 의한 실행 계획 이상 현상에 대한 간단한 데모 스크립트가 아래 URL에 있습니다.
    http://wiki.ex-em.com/index.php/Oracle_is_mad#Script.28Secure_View_Merging_.EC.9D.B4.EC.83.81_.ED.98.84.EC.83.81.29

Write a comment

티스토리 툴바