본문 바로가기
728x90

분류 전체보기1378

[ORACLE] ALL_OUTLINES 완전 가이드 : 개념 활용 예제 SPM 전환 전략 1. 개요ALL_OUTLINES 뷰는 Oracle Database의 SQL 성능 안정성을 유지하기 위한 핵심 데이터 사전 뷰로, Optimizer가 생성한 실행 계획을 Stored Outline 형태로 저장하여 동일한 SQL 문이 동일한 실행 계획으로 수행되도록 보장하는 기능을 제공합니다. 이 뷰는 SQL 실행 계획의 일관성을 유지하고, 시스템 업그레이드나 통계 변경 이후에도 예측 가능한 성능을 확보하기 위한 필수 요소입니다.2. 등장 배경Oracle Optimizer는 통계 정보, 인덱스 구성, 파라미터 설정 등에 따라 실행 계획이 변동될 수 있습니다. 이러한 변화를 제어하기 위해 Oracle은 Stored Outline 기능을 도입했으며, 그 정보가 바로 ALL_OUTLINES 뷰에 저장됩니다. 따라.. 2025. 10. 10.
[ORACLE] ALL_HISTOGRAMS 완전 정복 : 옵티마이저를 움직이는 히스토그램 이해와 실전 튜닝 ALL_HISTOGRAMS는 컬럼 값의 분포를 버킷(bucket) 단위로 저장해 옵티마이저(Optimizer)의 선택도(Selectivity) 추정에 직접적인 근거를 제공하는 핵심 딕셔너리 뷰입니다. 스큐(Skew) 여부, 상·하위 빈도값, 경계값 변화폭을 정밀하게 파악해 조인 순서, 접근 경로, 인덱스 사용 여부 등 실행계획의 품질을 가르는 지점에서 결정적인 인사이트를 줍니다.왜 ALL_HISTOGRAMS를 봐야 하는가?실제 분포 파악: 평균치 기반 카디널리티 착시를 방지(특히 편향 데이터).계획 재현·비교: 통계 스냅샷 간 버킷 경계 변화로 계획 변화 원인 추적.힌트 최소화: 통계만 바로잡아도 힌트 없는 안정적 실행계획 유도.핵심 개념 요약버킷(bucket): 값 구간을 뜻합니다. 각 버킷의 끝점(E.. 2025. 10. 10.
[ORACLE] TABLE_PRIVILEGES 완전 정복 : 실무 중심 GRANT/REVOKE 점검 쿼리 보안 모범 사례 이 글은 Oracle의 테이블 객체 권한(Table Object Privileges)을 실무 관점에서 깊이 있게 정리합니다. 권한의 의미와 부작용, 안전한 부여/회수 패턴, 그리고 DBA_TAB_PRIVS·ALL_TAB_PRIVS·USER_TAB_PRIVS 계열 뷰를 활용한 점검 쿼리까지 한 번에 확인할 수 있습니다. Oracle 공식 문서를 교차 확인하여 최신 동작을 반영했습니다. 1) 왜 지금 TABLE_PRIVILEGES를 점검해야 할까?보안·감사 요구 강화: 최소권한 원칙을 위반한 광범위 GRANT는 곧바로 리스크로 이어집니다.운영 안정성: 불필요한 WITH GRANT OPTION은 권한 전염(chain grant)을 유발하여 회수(REVOKE)를 복잡하게 만듭니다.버전 변화: 12c부터 도입된 .. 2025. 10. 9.
[ORACLE] SESSION_ROLES 완벽 가이드: 현재 세션에 활성화된 역할을 정확히 읽고, 점검하고, 통제하는 방법 SESSION_ROLES는 “지금 이 세션에서 실제로 쓰이고 있는 역할(role)”을 정확히 보여주는 가장 단순하면서도 강력한 뷰입니다. 권한 감사, 최소 권한 원칙(Least Privilege) 점검, 애플리케이션 세션 검증, 운영 이슈 재현 등에서 첫 번째로 확인해야 할 객체죠. 이 글은 오늘 바로 적용할 수 있는 점검 절차와 예제, 그리고 관련 뷰와의 정확한 비교표까지 담았습니다.핵심 요약: SESSION_ROLES는 “활성화된 역할 목록”을 한 줄에 한 개씩 반환합니다(열: ROLE). 부여는 되었지만 현재 세션에서 꺼져 있는 역할은 보이지 않습니다.1) 왜 SESSION_ROLES부터 봐야 할까?현재 영향 범위: 지금 실행되는 SQL/PLSQL이 어떤 역할의 시스템/객체 권한에 의해 허용되는지 .. 2025. 10. 9.
[ORACLE] SESSION_PRIVS 뷰 완벽 해설 : 현재 세션이 가진 권한 확인 방법 Oracle Database에서는 보안과 권한 관리가 매우 중요합니다. 특히 DBA나 개발자가 자신의 세션이 어떤 시스템 권한(System Privileges)을 가지고 있는지 확인해야 하는 경우가 자주 발생합니다. 이때 활용되는 핵심 데이터 딕셔너리 뷰가 바로 SESSION_PRIVS입니다. 본 글에서는 SESSION_PRIVS의 구조, 주요 컬럼, 활용 예시, 실무에서의 응용 방법, 그리고 유사 뷰들과의 비교를 통해 이 뷰를 완벽하게 이해할 수 있도록 설명하겠습니다.1. SESSION_PRIVS 개요SESSION_PRIVS 뷰는 현재 세션이 보유한 시스템 권한 목록을 보여줍니다. 즉, 어떤 권한을 통해 현재 사용자가 특정 DDL 또는 DML을 수행할 수 있는지를 한눈에 확인할 수 있습니다. 이 뷰는 .. 2025. 10. 9.
[ORACLE] ROLE_TAB_PRIVS 뷰 완벽 해설 – 사용자별 테이블 권한 확인 가이드 Oracle Database에서 ROLE_TAB_PRIVS 뷰는 “Role(역할)”을 통해 부여된 테이블 수준의 권한 정보를 확인할 수 있는 중요한 데이터 딕셔너리 뷰입니다. 데이터베이스 관리자는 이 뷰를 통해 특정 Role이 어떤 테이블에 접근 권한을 가지고 있는지, 그리고 해당 권한이 직접 또는 간접적으로 어떤 사용자에게 영향을 주는지를 체계적으로 파악할 수 있습니다.1. ROLE_TAB_PRIVS 개요ROLE_TAB_PRIVS는 “Role 기반 테이블 권한 관리”의 핵심 뷰로서, Role이 소유한 테이블, 뷰, 시퀀스 등의 객체에 대한 권한 정보를 제공합니다. 즉, DBA_TAB_PRIVS나 USER_TAB_PRIVS와 달리, “사용자”가 아닌 “역할(Role)” 중심으로 정리되어 있는 것이 가장 .. 2025. 10. 9.
728x90