[오라클] Oracle® Database Concepts 챕터 6 한글 번역

torch·2024년 7월 18일
0

Oracle

목록 보기
5/13
post-thumbnail

Reference : Database Concepts - 6. Data Dictionary and Dynamic Performance Views

*GPT 번역 기반으로 내용이 정확하지 않을 수 있습니다.


Data Dictionary and Dynamic Performance Views

각 Oracle 데이터베이스의 read-only 참조 테이블 및 view의 중앙 집합은 총칭하여 Data Dictionary라고 합니다. Dynamic performance view는 데이터베이스가 열리고 사용 중일 때 지속적으로 업데이트되는 특별한 view입니다.

이 장에는 다음 섹션이 포함되어 있습니다:

  • Data Dictionary 개요
  • Dynamic Performance View 개요
  • 데이터베이스 객체 메타데이터

Overview of the Data Dictionary

Oracle 데이터베이스의 중요한 부분인 data dictionary는 데이터베이스에 대한 관리 메타데이터를 제공하는 읽기 전용 테이블 집합입니다.

Data dictionary에는 다음과 같은 정보가 포함됩니다:

  • 데이터베이스의 모든 스키마 객체의 정의, 열의 기본값 및 무결성 제약 조건 정보
  • 스키마 객체에 할당된 공간의 양 및 현재 사용 중인 공간
  • Oracle Database 사용자 이름, 사용자에게 부여된 권한 및 역할, 사용자와 관련된 auditing information

Data dictionary는 모든 Oracle Database의 데이터 관리의 중심 부분입니다. 예를 들어 데이터베이스는 다음 작업을 수행합니다:

  • 사용자, 스키마 객체 및 저장소 구조에 대한 정보를 찾기 위해 data dictionary에 접근
  • DDL 문이 발행될 때마다 data dictionary 수정

Oracle Database는 data dictionary 데이터를 다른 데이터와 마찬가지로 테이블에 저장하므로 사용자는 SQL로 데이터를 쿼리할 수 있습니다. 예를 들어 사용자는 SELECT 문을 실행하여 자신의 권한, 스키마에 있는 테이블, 이러한 테이블의 열, 이러한 열에 인덱스가 생성되었는지 등을 확인할 수 있습니다.

참고 자료:

  • "스키마 객체 소개"
  • "사용자 계정"
  • "Data Definition Language (DDL) 문"

Contents of the Data Dictionary

Data dictionary는 base table과 View로 구성됩니다.

이 객체들은 다음과 같이 정의됩니다:

  • Base table
    데이터베이스에 대한 정보를 저장합니다. 오직 Oracle Database만이 이 테이블들을 읽고 쓸 수 있습니다. 기본 테이블은 정규화되어 있고 대부분의 데이터가 암호화된 형식으로 저장되어 있기 때문에 사용자가 직접 액세스하는 경우는 드뭅니다.
  • View
    Base table 데이터를 사용자에게 유용한 정보로 디코딩합니다. 예를 들어 사용자 이름이나 테이블 이름을 표시합니다. View는 data dictionary의 모든 객체 이름과 설명을 포함합니다. 일부 view는 모든 데이터베이스 사용자가 액세스할 수 있고, 다른 view는 관리자 전용입니다.

보통 data dictionary view는 세트로 그룹화됩니다. 많은 경우 세트는 유사한 정보를 포함한 세 개의 view로 구성되며 접두사에 따라 구별됩니다. 적절한 뷰를 쿼리하여 자신에게 관련된 정보만 액세스할 수 있습니다.

표 6-1 Data Dictionary View Sets

접두사사용자 액세스내용비고
DBA_데이터베이스 관리자모든 객체일부 DBA_ view는 관리자에게 유용한 추가 정보를 포함하는 열이 있습니다.
ALL_모든 사용자사용자가 권한을 가진 객체사용자가 소유한 객체를 포함합니다. 이러한 view는 현재 설정된 역할 집합을 준수합니다.
USER_모든 사용자사용자가 소유한 객체USER_ 접두사가 붙은 view는 보통 OWNER 열을 제외합니다. 이 열은 USER_ view에서 쿼리를 실행하는 사용자를 나타내는 것으로 암시됩니다.

모든 view 세트가 세 개의 구성원을 갖는 것은 아닙니다. 예를 들어 data dictionary에는 DBA_LOCK 뷰가 있지만 ALL_LOCK 뷰는 없습니다.

시스템에서 제공하는 DICTIONARY view는 모든 data dictionary 뷰의 이름과 요약 설명을 포함합니다. 다음은 이 뷰를 쿼리한 예제입니다:

SQL> SELECT * FROM DICTIONARY
     ORDER BY TABLE_NAME;
TABLE_NAME                     COMMENTS
------------------------------ ----------------------------------------
ALL_ALL_TABLES                 Description of all object and relational
                               tables accessible to the user

ALL_APPLY                      Details about each apply process that
                               dequeues from the queue visible to the
                               current user
.
.
.

참고 자료:

  • "View 개요"
  • Database dictionary view 및 해당 열의 전체 목록은 Oracle Database Reference를 참조하십시오.

Views with the Prefix DBA_

DBA_ 접두사가 붙은 view는 데이터베이스 전체의 관련 정보를 보여줍니다. DBA_ view는 관리자 전용입니다.

다음 예제 쿼리는 데이터베이스의 모든 객체에 대한 정보를 보여줍니다:

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM   DBA_OBJECTS
ORDER BY OWNER, OBJECT_NAME;

참고 자료:

  • 관리자 권한에 대한 자세한 정보는 Oracle Database Administrator’s Guide를 참조하십시오.

Views with the Prefix ALL_

ALL_ 접두사가 붙은 view는 사용자의 전체 데이터베이스 관점을 나타냅니다.

이러한 뷰는 사용자가 소유한 스키마 객체 외에도 공용 또는 명시적으로 부여된 권한 및 역할을 통해 사용자가 액세스할 수 있는 스키마 객체에 대한 정보를 반환합니다.

예를 들어 다음 쿼리는 사용자가 액세스할 수 있는 모든 객체에 대한 정보를 반환합니다:

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE 
FROM   ALL_OBJECTS
ORDER BY OWNER, OBJECT_NAME;

ALL_ 뷰는 현재 설정된 역할 집합을 준수하기 때문에 쿼리 결과는 설정된 역할에 따라 다릅니다. 다음 예제를 참조하십시오:

SQL> SET ROLE ALL;
 
Role set.
 
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
 
COUNT(*)
----------
68295
 
SQL> SET ROLE NONE;
 
Role set.
 
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
 
COUNT(*)
----------
53771

애플리케이션 개발자는 ALL_ 뷰를 저장 프로시저에서 사용할 때, 역할이 기본적으로 활성화되지 않기 때문에 역할의 영향을 인지해야 합니다.

Views with the Prefix USER_

일반 사용자에게 가장 관심이 있을 view는 USER_ 접두사가 붙은 view입니다.

이러한 view는 다음을 나타냅니다:

  • 사용자의 데이터베이스 개인 환경, 사용자가 생성한 스키마 객체에 대한 메타데이터, 사용자가 만든 권한 등
  • 사용자와 관련된 정보만 표시하여 ALL_ 뷰의 정보 일부를 반환합니다.
  • 다른 view와 동일한 열을 가지고 있으나 OWNER 열이 암시됩니다.
  • 편의를 위해 약어 PUBLIC synonym을 가질 수 있습니다.

다음 예제는 사용자의 스키마에 포함된 모든 객체를 반환합니다:

SELECT OBJECT_NAME, OBJECT_TYPE 
FROM   USER_OBJECTS
ORDER BY OBJECT_NAME;

The DUAL Table

DUAL은 Oracle Database와 사용자 작성 프로그램이 알려진 결과를 보장하기 위해 참조할 수 있는 작은 테이블입니다.

Dual 테이블은 한 번만 반환되어야 하는 값을 반환할 때 유용합니다. 예를 들어 현재 날짜와 시간을 반환하는 경우입니다. 모든 데이터베이스 사용자는 DUAL에 액세스할 수 있습니다.

DUAL 테이블에는 DUMMY라는 하나의 열이 있고 X 값을 포함하는 한 행이 있습니다. 다음 예제는 DUAL을 쿼리하여 산술 연산을 수행합니다:

SQL> SELECT ((3*4)+5)/3 FROM DUAL;
 
((3*4)+5)/3
-----------
 5.66666667

참고 자료:

  • DUAL 테이블에 대한 자세한 정보는 Oracle Database SQL Language Reference를 참조하십시오.

Storage of the Data Dictionary

Data dictionary 기본 테이블은 모든 Oracle 데이터베이스에서 처음으로 생성되는 객체입니다.

모든 데이터 사전 테이블과 view는 SYSTEM 테이블스페이스에 저장됩니다. SYSTEM 테이블스페이스가 데이터베이스가 열려 있을 때 항상 온라인 상태이므로 data dictionary는 데이터베이스가 열려 있을 때 항상 사용 가능합니다.

참고 자료:

  • SYSTEM 테이블스페이스에 대한 자세한 정보는 "The SYSTEM Tablespace"를 참조하십시오.

How Oracle Database Uses the Data Dictionary

Oracle 데이터베이스 사용자 계정 SYS는 모든 데이터 사전 기본 테이블과 사용자 액세스 가능한 view를 소유합니다.

데이터베이스 작동 중 Oracle 데이터베이스는 스키마 객체가 존재하고 사용자가 적절한 액세스 권한을 가지고 있는지 확인하기 위해 data dictionary를 읽습니다. Oracle 데이터베이스는 데이터베이스 구조, 감시, 권한 부여 및 데이터의 변경을 반영하기 위해 data dictionary을 지속적으로 업데이트합니다.

예를 들어, hr 사용자가 interns라는 테이블을 생성하면 데이터베이스는 새로운 테이블, 열, 세그먼트, extent 및 hr이 테이블에 가지고 있는 권한을 반영하는 새 행을 data dictionary에 추가합니다. 이 새로운 정보는 다음 번에 data dictionary view를 쿼리할 때 표시됩니다.

Data dictionary base table의 데이터는 Oracle Database가 작동하는 데 필요합니다. 오직 Oracle Database만이 data dictionary 정보를 작성하거나 변경해야 합니다. 어떤 Oracle 데이터베이스 사용자도 SYS 스키마에 포함된 행이나 스키마 객체를 수정해서는 안 됩니다. 이러한 활동은 데이터 무결성을 손상시킬 수 있습니다. 보안 관리자는 이 중앙 계정을 엄격히 관리해야 합니다.

경고: 데이터 사전 테이블의 데이터를 변경하거나 조작하면 데이터베이스 작동에 영구적이고 치명적인 영향을 미칠 수 있습니다.

참고 자료:

  • SYSSYSTEM 스키마에 대한 자세한 정보는 "SYS and SYSTEM Schemas"를 참조하십시오.

Public Synonyms for Data Dictionary Views

Oracle 데이터베이스는 많은 data dictionary view에 대한 public synonym을 생성하여 사용자가 쉽게 액세스할 수 있도록 합니다.

보안 관리자는 시스템 전반에서 사용되는 스키마 객체에 대해 추가 public synonym을 생성할 수도 있습니다. Oracle은 public synonym과 동일한 이름을 가진 개인 스키마 객체를 사용하는 것을 권장하지 않습니다.

참고 자료:

  • 동의어에 대한 개요는 "Overview of Synonyms"를 참조하십시오.

Data Dictionary Cache

데이터베이스는 사용자 액세스를 검증하고 스키마 객체 상태를 확인하기 위해 지속적으로 data dictionary 정보를 필요로 하기 때문에 많은 데이터 사전 정보가 data dictionary 캐시에 저장됩니다.

캐시는 보통 구문 분석 정보를 포함합니다. 테이블 및 열을 설명하는 COMMENTS 열은 data dictionary 캐시에 캐시되지 않지만 데이터베이스 버퍼 캐시에 캐시될 수 있습니다.

참고 자료:

  • 데이터 사전 캐시에 대한 자세한 정보는 "Data Dictionary Cache"를 참조하십시오.

Other Programs and the Data Dictionary

기타 Oracle 데이터베이스 제품은 기존 view를 참조하고 추가 data dictionary 테이블이나 view를 생성할 수 있습니다.

Oracle은 data dictionary를 참조하는 프로그램을 작성하는 애플리케이션 개발자가 기본 테이블보다는 public synonym을 사용할 것을 권장합니다. Synonym은 릴리즈 간 변경 가능성이 적습니다.

Overview of the Dynamic Performance Views

Oracle 데이터베이스는 운영 중에 현재 데이터베이스 활동을 기록하는 가상 테이블 세트를 유지합니다.

이러한 view는 데이터베이스가 열리고 사용 중일 때 지속적으로 업데이트되기 때문에 동적입니다. View의 이름이 V$로 시작되기 때문에 이러한 뷰는 때때로 V$ view라고도 합니다.

Dynamic performance view에는 다음과 같은 정보가 포함됩니다:

  • 시스템 및 세션 파라미터
  • 메모리 사용 및 할당
  • 파일 상태 (RMAN 백업 파일 포함)
  • 작업 및 작업 진행 상황
  • SQL execution
  • 통계 및 메트릭

Dynamic performance view의 주요 사용 용도는 다음과 같습니다:

  • Oracle Enterprise Manager는 데이터베이스에 대한 정보를 얻기 위해 view를 사용합니다.
  • 관리자는 성능 모니터링 및 디버깅을 위해 view를 사용할 수 있습니다.

참고 자료:

  • Oracle Enterprise Manager에 대한 정보는 "Oracle Enterprise Manager"를 참조하십시오.
  • Dynamic performance view의 전체 목록은 Oracle Database Reference를 참조하십시오.

Contents of the Dynamic Performance Views

Dynamic performance view는 fixed view라고도 불리며 데이터베이스 관리자가 변경하거나 제거할 수 없습니다. 그러나 데이터베이스 관리자는 이 view를 쿼리하고 테이블에 view를 생성하여 다른 사용자에게 접근 권한을 부여할 수 있습니다.

SYS는 dynamic performance 테이블을 소유하며, 이 테이블들의 이름은 V_$로 시작됩니다. 테이블에 view가 생성되고, V$로 시작하는 public synonym이 생성됩니다. 예를 들어, V$DATAFILE view는 데이터 파일에 대한 정보를 포함합니다. V$FIXED_TABLE view는 모든 dynamic performance 테이블과 view에 대한 정보를 포함합니다.

대부분의 V$ view에는 해당하는 GV$ view가 있습니다. Oracle Real Application Clusters (Oracle RAC)에서는 GV$ view를 쿼리하면 모든 적격 데이터베이스 인스턴스에서 V$ view 정보를 검색합니다.

Database Configuration Assistant (DBCA)를 사용하여 데이터베이스를 생성할 때 Oracle은 자동으로 데이터 사전을 생성합니다. Oracle 데이터베이스는 자동으로 catalog.sql 스크립트를 실행하여 dynamic performance view에 대한 정의와 public synonym을 포함합니다. 이러한 view와 synonym을 생성하려면 catalog.sql을 수동으로 실행해야 합니다.

참고 자료:

  • "데이터베이스 서버 그리드(Database Server Grid)"
  • 데이터베이스 설치 및 구성 도구에 대한 자세한 정보는 "Tools for Database Installation and Configuration"를 참조하십시오.
  • Oracle Database Administrator’s Guide를 참조하여 catalog.sql을 수동으로 실행하는 방법을 배우십시오.
  • Oracle RAC에서 성능 뷰를 사용하는 방법에 대한 정보는 Oracle Real Application Clusters Administration and Deployment Guide를 참조하십시오.

Storage of the Dynamic Performance Views

Dynamic performance view는 데이터베이스 메모리 구조에서 빌드된 가상 테이블을 기반으로 합니다.

View는 데이터베이스에 저장된 일반 테이블이 아닙니다. View에 대한 읽기 일관성은 보장되지 않습니다. 데이터가 동적으로 업데이트되기 때문입니다.

Dynamic performance view는 실제 테이블이 아니기 때문에 데이터는 데이터베이스 및 데이터베이스 인스턴스 상태에 따라 달라집니다. 예를 들어 데이터베이스가 시작되었지만 마운트되지 않은 경우 V$INSTANCEV$BGPROCESS를 쿼리할 수 있습니다. 그러나 데이터베이스가 마운트될 때까지 V$DATAFILE을 쿼리할 수 없습니다.

참고 자료:

  • 데이터 일관성에 대한 자세한 정보는 "Data Concurrency and Consistency"를 참조하십시오.

Database Object Metadata

DBMS_METADATA 패키지는 데이터베이스 객체의 전체 정의를 추출하기 위한 인터페이스를 제공합니다.

정의는 XML 또는 SQL DDL로 표현될 수 있습니다. Oracle 데이터베이스는 프로그래밍 제어를 위한 유연하고 정교한 인터페이스와 임시 쿼리를 위한 간단한 인터페이스 두 가지 스타일을 제공합니다.

참고 자료:

  • DBMS_METADATA에 대한 자세한 정보는 Oracle Database PL/SQL Packages and Types Reference를 참조하십시오.
profile
비전공 개발 공부 이야기

0개의 댓글