데이터 딕셔너리 및 동적 성능 뷰
읽기 전용 참조 테이블의 중앙 집합과 각 Oracle 데이터베이스의 뷰를 총체적으로 데이터 딕셔너리라고 합니다. 동적 성능 뷰는 데이터베이스가 열려 있고 사용 중인 동안 지속적으로 업데이트되는 특수 뷰입니다.
-
데이터 딕셔너리 개요 Oracle 데이터베이스의 중요한 부분은 데이터베이스에 대한 관리 메타 데이터를 제공하는 읽기 전용 테이블 집합인 데이터 딕셔너리입니다.
-
동적 성능 뷰 개요 작업 전반에 걸쳐 Oracle AI Database는 현재 데이터베이스 작업을 기록하는 가상 테이블 세트를 유지 관리합니다.
-
데이터베이스 객체 메타데이터
DBMS_METADATA패키지 및DBMS_DEVELOPER.GET_METADATA함수는 데이터베이스 객체의 전체 정의를 추출하기 위한 인터페이스를 제공합니다.
데이터 딕셔너리 개요
Oracle 데이터베이스의 중요한 부분은 데이터베이스에 대한 관리 메타 데이터를 제공하는 읽기 전용 테이블 집합인 데이터 딕셔너리입니다.
-
데이터 딕셔너리의 목적 데이터 딕셔너리에는 데이터베이스 내용을 설명하는 메타데이터가 포함되어 있습니다.
-
데이터 딕셔너리 구성요소 데이터 딕셔너리는 기본 테이블 및 뷰로 구성됩니다.
-
데이터 딕셔너리 작동 방식 Oracle AI Database 사용자 계정
SYS은 데이터 딕셔너리의 모든 기본 테이블 및 사용자가 액세스할 수 있는 뷰를 소유합니다. -
데이터 딕셔너리 저장 영역 CDB의 메타데이터를 전체적으로 저장하는 데이터 딕셔너리는 시스템 테이블스페이스에만 저장됩니다.
데이터 딕셔너리의 목적
데이터 딕셔너리에는 데이터베이스 내용을 설명하는 메타 데이터가 포함됩니다.
예를 들어, 데이터 딕셔너리에는 다음과 같은 정보가 포함됩니다.
-
열 및 무결성 제약 조건 정보에 대한 기본값을 포함하여 데이터베이스에 있는 모든 스키마 객체의 정의
-
스키마 객체에서 할당된 공간과 현재 사용되는 공간
-
Oracle AI Database 사용자의 이름, 사용자에게 부여된 권한 및 롤, 사용자와 관련된 감사 정보
-
데이터 관리 데이터 딕셔너리는 모든 Oracle 데이터베이스를 위한 데이터 관리의 핵심 부분입니다.
-
CDB의 데이터 딕셔너리 구분 CDB에서 데이터 딕셔너리 메타데이터는 CDB 루트와 PDB 간에 분할됩니다. 유저 및 응용 프로그램 측면에서는 CDB의 각 컨테이너에 있는 데이터 딕셔너리가 구분됩니다.
데이터 관리
데이터 딕셔너리는 모든 Oracle 데이터베이스에 대한 데이터 관리의 핵심 부분입니다.
예를 들어, 데이터베이스는 다음 작업을 수행합니다.
-
데이터 딕셔너리에 액세스하여 유저, 스키마 객체 및 저장 영역 구조에 대한 정보를 찾습니다.
-
DDL 문이 실행될 때마다 데이터 딕셔너리를 수정합니다.
Oracle AI Database는 다른 데이터와 마찬가지로 데이터 딕셔너리 데이터를 테이블에 저장하므로 사용자는 SQL을 사용하여 데이터를 질의할 수 있습니다. 예를 들어, 사용자는 SELECT 문을 실행하여 권한, 스키마에 존재하는 테이블, 이러한 테이블에 있는 열, 이러한 열에 인덱스가 구축되는지 여부 등을 확인할 수 있습니다.
참조:
-
사용자 계정에 대한 자세한 내용은 Oracle AI Database Security Guide를 참조하십시오.
CDB에서 데이터 딕셔너리 구분
CDB에서 데이터 딕셔너리 메타 데이터는 CDB 루트와 PDB 간에 분할됩니다. 유저 및 응용 프로그램 측면에서는 CDB의 각 컨테이너에 있는 데이터 딕셔너리가 구분됩니다.
아직 사용자 데이터를 포함하지 않는 새로 생성된 CDB에서 CDB 루트의 데이터 딕셔너리는 시스템 메타 데이터만 포함합니다. 예를 들어, TAB$ 테이블에는 Oracle에서 제공하는 테이블(예: TRIGGER$ 및 SERVICE$)만 설명하는 행이 포함됩니다. 다음 그림은 세 개의 기본 데이터 딕셔너리 테이블을 보여주며 빨간색 막대는 시스템을 설명하는 행을 나타냅니다.
그림 1: CDB 루트의 데이터 딕셔너리 메타 데이터

PDB를 생성한 다음 이 PDB에 employees 및 departments 테이블을 포함하는 hr 스키마를 생성한다고 가정합니다. PDB의 데이터 딕셔너리에는 Oracle 제공 엔티티를 설명하는 일부 행과 유저 생성 엔티티를 설명하는 기타 행이 포함됩니다. 예를 들어, PDB 딕셔너리의 TAB$ 테이블에는 employees 테이블에 대한 메타데이터 행과 departments 테이블에 대한 행이 있습니다.
그림 2: CDB의 데이터 딕셔너리 구조

앞의 그림은 PDB의 데이터 딕셔너리에 CDB 루트의 데이터 딕셔너리에 대한 포인트가 포함되어 있음을 보여줍니다. 내부적으로 데이터 딕셔너리 테이블 정의 및 PL/SQL 패키지와 같은 Oracle 제공 객체는 CDB 루트에서 한 번만 표시됩니다. 이 아키텍처는 CDB 내에서 다음 두 가지 주요 목표를 달성합니다.
-
중복 감소
예를 들어,
DBMS_ADVISORPL/SQL 패키지의 소스 코드를 모든 PDB에 저장하는 대신 CDB는CDB$ROOT에 한 번만 코드를 저장하여 디스크 공간을 절약합니다. -
간편한 데이터베이스 업그레이드
데이터 딕셔너리 테이블 정의가 모든 PDB에 존재하고 정의가 새 릴리스에서 변경된 경우 변경 사항을 캡처하려면 각 PDB를 별도로 업그레이드해야 합니다. CDB 루트에 테이블 정의를 한 번만 저장하면 이 문제가 해결됩니다.
데이터 딕셔너리 구성 요소
데이터 딕셔너리는 기본 테이블 및 뷰로 구성됩니다.
이러한 객체는 다음과 같이 정의됩니다.
-
기준 테이블
이 파일은 데이터베이스에 대한 정보를 저장합니다. Oracle AI Database만 이러한 테이블에 쓰고 읽어야 합니다. 사용자는 기본 테이블이 정규화되고 대부분의 데이터가 암호화된 형식으로 저장되기 때문에 기본 테이블에 직접 액세스하는 경우가 거의 없습니다.
-
조회 수
이러한 예제는 기본 테이블 데이터를 사용자나 테이블 이름과 같은 유용한 정보로 디코딩하고 조인 및
WHERE절을 사용하여 정보를 단순화합니다. 뷰는 데이터 딕셔너리에 있는 모든 객체의 이름과 설명을 포함합니다. 일부 뷰는 모든 데이터베이스 유저가 액세스할 수 있는 반면 다른 뷰는 관리자만 액세스할 수 있습니다.
일반적으로 데이터 딕셔너리 뷰는 집합으로 그룹화됩니다. 대부분의 경우 집합은 다음 표에 나오는 것처럼 유사한 정보를 포함하고 접두어로 구분되는 세 개의 뷰로 구성됩니다. 적절한 뷰를 조회하면 관련된 정보만 접근할 수 있습니다.
테이블 1 데이터 딕셔너리 뷰 세트
| 접두어 | 사용자 접근 | 내용 | 노트 |
|---|---|---|---|
DBA_ |
데이터베이스 담당자 | 모든 오브젝트 | 일부 DBA_ 뷰에는 관리자에게 유용한 정보가 포함된 추가 열이 있습니다. |
ALL_ |
모든 사용자 | 사용자에게 권한이 있는 객체 | 사용자가 소유한 객체를 포함합니다. 이러한 뷰는 활성화된 현재 롤 집합을 따릅니다. |
USER_ |
모든 사용자 | 사용자가 소유한 오브젝트 | 접두어가 USER_인 뷰는 일반적으로 OWNER 열을 제외합니다. 이 열은 USER_ 뷰에서 질의를 실행하는 사용자가 되도록 암시됩니다. |
모든 뷰 집합에 세 개의 멤버가 있는 것은 아닙니다. 예를 들어, 데이터 딕셔너리에는 DBA_LOCK 뷰가 포함되지만 ALL_LOCK 뷰는 포함되지 않습니다.
시스템에서 제공하는 DICTIONARY 뷰에는 모든 데이터 딕셔너리 뷰의 이름 및 축약된 설명이 포함됩니다. 이 뷰의 다음 질의에는 부분 샘플 출력이 포함되어 있습니다.
SQL> SELECT * FROM DICTIONARY
2 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
.
.
.
-
CDB의 컨테이너 데이터 객체 컨테이너 데이터 객체는 여러 컨테이너 또는 전체 CDB와 관련된 데이터를 포함하는 테이블 또는 뷰입니다.
-
접두어가 DBA_인 뷰 접두어가
DBA_인 뷰는 전체 데이터베이스의 모든 관련 정보를 표시합니다.DBA_뷰는 관리자용으로만 사용됩니다. -
접두어가 ALL_인 뷰 접두어가
ALL_인 뷰는 데이터베이스에 대한 사용자의 전반적인 관점을 나타냅니다. -
접두어가 USER_인 뷰 일반적인 데이터베이스 사용자가 관심을 가질 수 있는 뷰는 접두어가
USER_인 뷰입니다. -
DUAL 테이블
DUAL은 Oracle AI Database 및 사용자가 작성한 프로그램에서 참조할 수 있는 데이터 딕셔너리의 작은 테이블로, 알려진 결과를 보장합니다.
참조:
-
"뷰 개요"
-
전체 데이터 딕셔너리 뷰 및 해당 열 목록은 Oracle AI Database Reference를 참조하십시오.
CDB의 컨테이너 데이터 객체
컨테이너 데이터 객체는 여러 컨테이너 또는 전체 CDB와 관련된 데이터를 포함하는 테이블 또는 뷰입니다.
컨테이너 데이터 권한은 여러 PDB가 단일 CDB에 있지만 로컬 관리 요구사항이 서로 다른 일반적인 요구사항을 지원합니다. 예를 들어, 응용 프로그램 DBA가 로컬에서 관리하지 않으려는 경우 일반 유저에게 적절한 뷰에 대한 컨테이너 데이터 권한을 부여할 수 있습니다. 이 경우 CDB 관리자는 이러한 PDB에 대한 데이터에 액세스할 수 있습니다. 반면, CDB 관리자가 데이터에 액세스하지 않도록 하려는 PDB 관리자는 컨테이너 데이터 권한을 부여하지 않습니다.
컨테이너 데이터 객체의 예로는 이름이 V$ 및 CDB_로 시작하는 Oracle 제공 뷰가 있습니다. 모든 컨테이너 데이터 객체에는 CON_ID 열이 있습니다. 다음 표에서는 이 열의 값 의미를 보여줍니다.
테이블 2 컨테이너 ID 값
| 컨테이너 ID | 다음과 관련된 행 |
|---|---|
0 |
전체 CDB |
1 |
CDB$ROOT |
2 |
PDB$SEED |
| 기타 모든 ID | 유저 생성 PDB, 응용 프로그램 루트 또는 응용 프로그램 시드 |
CDB에서는 모든 DBA_ 뷰에 대해 해당 CDB_ 뷰가 존재합니다. CDB_ 뷰의 소유자는 해당 DBA_ 뷰의 소유자입니다. 다음 그림은 딕셔너리 뷰의 여러 범주 간 관계를 보여줍니다.
그림 3: CDB의 딕셔너리 뷰

현재 컨테이너가 PDB인 경우 사용자는 현재 PDB에 대한 데이터 딕셔너리 정보만 볼 수 있습니다. 그러나 현재 컨테이너가 CDB 루트인 경우 공통 사용자는 CDB_ 뷰를 질의하여 CDB 루트 및 이 사용자에게 권한이 부여된 PDB에 대한 메타데이터를 볼 수 있습니다. 주: CDB 루트에서 질의할 때 CDB_ 및 V$ 뷰는 암시적으로 데이터를 AL32UTF8 문자 집합으로 변환합니다. 문자 집합이 AL32UTF8로 변환될 때 문자를 나타내기 위해 더 많은 바이트가 필요하고 뷰 열 너비가 특정 PDB의 데이터를 수용할 수 없는 경우 데이터 잘림이 가능합니다.
다음 표에서는 CDB_ 뷰의 쿼리에 대해 설명합니다. 각 행은 이전 행의 작업 이후에 발생하는 작업을 설명합니다.
표 3 CDB_ 뷰 질의
| 작업 | 설명 |
|---|---|
|
CDB의 모든 컨테이너에 공통되는 |
|
SYSTEM는 CDB_USERS를 질의하여 CDB 루트의 일반 사용자 수를 가져옵니다. 출력은 CDB 루트에 공통 사용자 38명이 있음을 나타냅니다. |
|
SYSTEM는 CDB_USERS를 질의하여 CDB의 개별 컨테이너 수를 확인합니다. |
|
이제 SYSTEM 사용자가 hrpdb라는 PDB에 접속합니다. |
|
SYSTEM는 CDB_USERS를 질의합니다. 출력은 현재 컨테이너(hrpdb)에 48명의 일반 및 로컬 사용자가 존재함을 나타냅니다. |
|
SYSTEM는 DBA_USERS를 질의합니다. 출력은 이전 query와 동일합니다. SYSTEM는 CDB 루트에 연결되지 않으므로 DBA_USERS 뷰에는 CDB_USERS와 동일한 출력이 표시됩니다. DBA_USERS는 current 컨테이너의 사용자만 표시하므로 48이 표시됩니다. |
접두어가 DBA_인 뷰
접두어가 DBA_인 뷰는 전체 데이터베이스의 모든 관련 정보를 보여줍니다. DBA_ 뷰는 관리자용으로만 사용됩니다.
다음 예제 query는 데이터베이스의 모든 객체에 대한 정보를 보여줍니다.
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM DBA_OBJECTS
ORDER BY OWNER, OBJECT_NAME;
참조: 관리 권한에 대한 자세한 내용은 Oracle AI Database Administrator's Guide를 참조하십시오.
접두어가 ALL_인 뷰
접두어가 ALL_인 뷰는 데이터베이스에 대한 유저의 전반적인 관점을 나타냅니다.
이러한 뷰는 유저가 소유한 스키마 객체 외에도 권한 및 롤의 공용 또는 명시적 권한 부여를 통해 액세스할 수 있는 스키마 객체에 대한 정보를 반환합니다.
예를 들어, 다음 질의는 액세스 권한이 있는 모든 객체에 대한 정보를 반환합니다.
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_ 뷰를 사용할 때 역할이 미치는 영향을 파악해야 합니다. 여기서 역할은 기본적으로 사용으로 설정되지 않습니다.
접두어가 USER_인 뷰
일반적인 데이터베이스 사용자가 관심을 가질 만한 뷰는 접두어가 USER_인 뷰입니다.
이러한 뷰는 다음과 같습니다.
-
유저가 생성한 스키마 객체에 대한 메타 데이터, 유저가 부여한 권한 등 데이터베이스에서 유저의 전용(private) 환경을 참조하십시오.
-
유저와 관련된 행만 표시하고
ALL_뷰에서 정보의 부분 집합을 반환합니다. -
OWNER열이 암시된다는 점을 제외하면 다른 뷰와 동일한 열을 가집니다. -
편의상
PUBLIC동의어의 약어를 사용할 수 있습니다.
예를 들어, 다음 질의는 스키마에 포함된 모든 객체를 반환합니다.
SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS
ORDER BY OBJECT_NAME;
DUAL 테이블
DUAL는 Oracle AI Database 및 사용자가 작성한 프로그램에서 참조할 수 있는 데이터 딕셔너리의 작은 테이블로, 알려진 결과를 보장합니다.
이중 테이블은 값이 현재 날짜 및 시간과 같이 한 번만 반환되어야 하는 경우에 유용합니다. 모든 데이터베이스 사용자는 DUAL에 액세스할 수 있습니다.
DUAL 테이블에는 DUMMY이라는 하나의 열과 X 값을 포함하는 하나의 행이 있습니다. 다음 예제는 DUAL를 질의하여 산술 연산을 수행합니다.
SQL> SELECT ((3*4)+5)/3 FROM DUAL;
((3*4)+5)/3
-----------
5.66666667
참조: DUAL 테이블에 대한 자세한 내용은 Oracle AI Database SQL Language Reference를 참조하십시오.
데이터 딕셔너리의 작동 방식
Oracle AI Database 사용자 계정 SYS은 데이터 딕셔너리의 모든 기본 테이블 및 사용자가 액세스할 수 있는 뷰를 소유합니다.
데이터베이스 작업 중에 Oracle AI Database는 데이터 딕셔너리를 읽어 스키마 객체가 존재하는지, 사용자에게 적절한 액세스 권한이 있는지 확인합니다. Oracle AI Database는 데이터베이스 구조, 감사, 권한 부여, 데이터의 변경 사항을 반영하기 위해 데이터 딕셔너리를 지속적으로 업데이트합니다.
예를 들어, 사용자 hr가 interns라는 테이블을 생성하는 경우 데이터베이스는 새 테이블, 열, 세그먼트, 확장 영역 및 hr가 테이블에 대해 가지는 권한을 반영하는 새 행을 데이터 딕셔너리에 추가합니다. 이 새 정보는 다음에 딕셔너리 뷰를 query할 때 표시됩니다.
데이터 딕셔너리의 기본 테이블에 있는 데이터는 Oracle AI Database가 작동하는 데 필요합니다. Oracle AI Database만 데이터 딕셔너리 정보를 작성하거나 변경해야 합니다. Oracle AI Database 사용자는 데이터 무결성을 손상시킬 수 있기 때문에 SYS 스키마에 포함된 행 또는 스키마 객체를 변경해서는 안됩니다. 보안 관리자는 이 중앙 계정을 엄격하게 관리해야 합니다.
경고: 데이터 딕셔너리 테이블의 데이터를 변경하거나 조작하면 데이터베이스 작업에 영구적으로 해로운 영향을 줄 수 있습니다.
-
메타데이터 및 데이터 링크 CDB는 내부 연결 방식을 사용하여 데이터 딕셔너리 정보를 구분합니다.
-
데이터 딕셔너리 뷰에 대한 공용 동의어 Oracle AI Database는 많은 데이터 딕셔너리 뷰에 대한 공용 동의어를 생성하므로 사용자가 편리하게 액세스할 수 있습니다.
-
데이터 딕셔너리 캐시 대부분의 데이터 딕셔너리 정보는 데이터 딕셔너리 캐시에 있습니다. 데이터베이스에서는 사용자 액세스를 검증하고 스키마 객체의 상태를 확인하는 정보가 지속적으로 필요하기 때문입니다.
-
기타 프로그램 및 데이터 딕셔너리 기타 Oracle AI Database 제품은 기존 뷰를 참조하고 추가 데이터 딕셔너리 테이블 또는 자체 뷰를 생성할 수 있습니다. 참조: "SYS 및 SYSTEM 계정"
메타데이터 및 데이터 링크
CDB는 내부 연결 방식을 사용하여 데이터 딕셔너리 정보를 구분합니다.
특히 Oracle AI Database는 다음과 같은 자동 관리 포인터를 사용합니다.
-
메타데이터 링크
Oracle AI Database는 딕셔너리 객체에 대한 메타 데이터를 CDB 루트에만 저장합니다. 예를 들어,
DBA_OBJECTS데이터 딕셔너리 뷰 아래에 있는OBJ$딕셔너리 테이블의 열 정의는 CDB 루트에만 있습니다. 그림 9-2에 설명된 대로 각 PDB의OBJ$테이블은 메타데이터 링크라는 내부 방식을 사용하여 CDB 루트에 저장된OBJ$의 정의를 가리킵니다.메타데이터 링크에 해당하는 데이터는 CDB 루트가 아닌 해당 PDB에 상주합니다. 예를 들어,
hrpdb에서mytable테이블을 생성하고 여기에 행을 추가하는 경우 행은 CDB 루트 데이터 파일이 아니라 PDB 데이터 파일에 저장됩니다.PDB 및 CDB 루트의 데이터 딕셔너리 뷰에 서로 다른 행이 포함되어 있습니다. 예를 들어,
mytable를 설명하는 새 행은hrpdb의OBJ$테이블에 있지만 CDB 루트의OBJ$테이블에는 없습니다. 따라서 CDB 루트의DBA_OBJECTS및hrdpb의DBA_OBJECTS질의는 다른 결과를 보여줍니다. -
데이터 링크
주: Oracle Database 12c 릴리스 1(12.1.0.2)에서 데이터 링크를 객체 링크라고 했습니다.
경우에 따라 Oracle AI Database는 애플리케이션 컨테이너의 애플리케이션 루트에 객체에 대한 데이터(메타 데이터뿐만 아니라)를 한 번만 저장합니다. 여러 지역에 대해 서로 다른 PDB를 보유한 전자 상거래 회사를 고려해 보십시오. 응용 프로그램 루트는 모든 미국 우편 번호를 나열하는
postal_codes라는 테이블을 저장할 수 있습니다. 이 컨테이너의 모든 애플리케이션 PDB에는 공통postal_codes테이블에 대한 액세스 권한이 필요합니다.응용 프로그램 PDB는 데이터 링크라는 내부 방식을 사용하여 응용 프로그램 루트의 객체를 참조합니다. 데이터 링크가 생성된 애플리케이션 PDB에는 데이터 링크 설명도 저장됩니다. 데이터 링크는 참조하는 객체의 데이터 유형을 상속합니다.
-
확장 데이터 링크
확장 데이터 링크는 데이터 링크와 메타데이터 링크의 하이브리드입니다. 데이터 링크와 마찬가지로 확장 데이터 링크는 응용 프로그램 루트의 객체를 참조합니다. 그러나 확장 데이터 링크는 응용 프로그램 PDB의 해당 객체도 참조합니다. 예를 들어, 애플리케이션 PDB에는 미국 우편 번호와 캐나다 우편 번호를 모두 저장하는 확장된 데이터 링크 테이블이 있을 수 있습니다. 메타데이터 링크와 마찬가지로 애플리케이션 PDB의 객체는 애플리케이션 루트의 해당 객체에서 메타데이터를 상속합니다.
응용 프로그램 루트에서 질의할 때 확장된 데이터 연결 테이블은 응용 프로그램 루트(예: 미국 우편 번호)에서만 행을 인출합니다. 그러나 응용 프로그램 PDB에서 질의할 때 확장된 데이터 연결 테이블은 응용 프로그램 루트 및 응용 프로그램 PDB(예: 미국 우편 번호 및 캐나다 우편 번호)에서 행을 인출합니다.
Oracle AI Database는 CDB$ROOT에 대한 메타데이터 및 데이터 링크를 자동으로 생성하고 관리합니다. 사용자는 이러한 링크를 추가, 수정 또는 제거할 수 없습니다.
참조:
-
데이터 딕셔너리의 개요는 Oracle AI Database Concepts를 참조하십시오.
데이터 딕셔너리 뷰에 대한 공용 동의어
Oracle AI Database는 많은 데이터 딕셔너리 뷰에 대한 공용 동의어를 생성하므로 사용자가 편리하게 액세스할 수 있습니다.
보안 관리자는 시스템 차원에서 사용되는 스키마 객체에 대해 추가 공용 동의어를 생성할 수도 있습니다. Oracle은 전용 스키마 객체와 공용 동의어에 대해 동일한 이름을 사용하지 않을 것을 권장합니다.
참조: "동의어 개요"
데이터 딕셔너리 캐시
대부분의 데이터 딕셔너리 정보는 데이터 딕셔너리 캐시에 있습니다. 데이터베이스에서는 사용자 액세스를 검증하고 스키마 객체의 상태를 확인하는 정보가 지속적으로 필요하기 때문입니다.
캐시에는 일반적으로 구문 분석 정보가 포함됩니다. 테이블 및 해당 열을 설명하는 COMMENTS 열은 딕셔너리 캐시에 캐시되지 않지만 데이터베이스 버퍼 캐시에 캐시될 수 있습니다.
참조: "데이터 딕셔너리 캐시"
기타 프로그램 및 데이터 사전
다른 Oracle AI Database 제품은 기존 뷰를 참조하고 추가 데이터 딕셔너리 테이블 또는 뷰를 생성할 수 있습니다.
Oracle은 데이터 딕셔너리를 참조하는 프로그램을 작성하는 응용 프로그램 개발자가 기본 테이블이 아닌 공용 동의어를 사용할 것을 권장합니다. 동의어는 릴리스 간에 변경될 가능성이 적습니다.
데이터 딕셔너리 저장 영역
CDB의 메타 데이터를 전체적으로 저장하는 데이터 딕셔너리는 시스템 테이블스페이스에만 저장됩니다.
특정 PDB의 메타 데이터를 저장하는 데이터 딕셔너리는 이 PDB 전용의 자체 포함 테이블스페이스에 저장됩니다. PDB 테이블스페이스에는 응용 프로그램 백엔드의 데이터와 메타 데이터가 모두 포함됩니다. 따라서 각 데이터 딕셔너리 테이블 집합은 고유한 전용 테이블스페이스 집합에 저장됩니다.
참조: SYSTEM 테이블스페이스에 대한 자세한 내용은 "SYSTEM 테이블스페이스"를 참조하십시오.
Dynamic Performance 뷰 개요
Oracle AI Database는 운영 전반에 걸쳐 현재 데이터베이스 활동을 기록하는 가상 테이블 세트를 유지 관리합니다.
이러한 뷰는 데이터베이스가 열려 있고 사용 중인 동안 지속적으로 갱신되기 때문에 동적입니다. 뷰 이름은 V$로 시작하므로 뷰를 V$ 뷰라고도 합니다.
Dynamic Performance 뷰에는 다음과 같은 정보가 포함됩니다.
Dynamic Performance 뷰의 주요 용도는 다음과 같습니다.
-
Oracle Enterprise Manager는 뷰를 사용하여 데이터베이스에 대한 정보를 얻습니다.
-
관리자는 성능 모니터링 및 디버깅에 뷰를 사용할 수 있습니다.
-
동적 성능 뷰 동적 성능 뷰의 내용은 데이터베이스 관리자가 변경하거나 제거할 수 없으므로 고정 뷰라고 합니다. 그러나 데이터베이스 관리자는 테이블에 대한 뷰를 질의 및 생성하고 이러한 뷰에 대한 액세스 권한을 다른 사용자에게 부여할 수 있습니다.
-
동적 성능 뷰의 저장 영역 동적 성능 뷰는 데이터베이스 메모리 구조에서 구축된 가상 테이블을 기반으로 합니다. 참조: 동적 성능 뷰의 전체 목록은 Oracle AI Database Reference를 참조하십시오.
Dynamic Performance 뷰의 내용
동적 성능 뷰는 데이터베이스 관리자가 변경하거나 제거할 수 없으므로 고정 뷰라고 합니다. 그러나 데이터베이스 관리자는 테이블에 대한 뷰를 질의 및 생성하고 이러한 뷰에 대한 액세스 권한을 다른 사용자에게 부여할 수 있습니다.
SYS는 이름이 V_$로 시작하는 동적 성능 테이블을 소유합니다. 뷰는 이러한 테이블에 생성된 다음 공용 동의어 앞에 V$가 붙습니다. 예를 들어, V$DATAFILE 뷰는 데이터 파일에 대한 정보를 포함합니다. V$FIXED_TABLE 뷰는 모든 동적 성능 테이블 및 뷰에 대한 정보를 포함합니다.
거의 모든 V$ 뷰에 대해 해당 GV$ 뷰가 존재합니다. Oracle RAC(Oracle Real Application Clusters)에서 GV$ 뷰를 질의하면 모든 적격 데이터베이스 인스턴스에서 V$ 뷰 정보가 검색됩니다.
DBCA(Database Configuration Assistant)를 사용하여 데이터베이스를 생성하면 Oracle이 자동으로 데이터 딕셔너리를 생성합니다. Oracle AI Database는 동적 성능 뷰에 대한 뷰 및 공용 동의어의 정의를 포함하는 catalog.sql 스크립트를 자동으로 실행합니다. 이러한 뷰와 동의어를 생성하려면 catalog.sql를 실행해야 합니다.
참조:
-
catalog.sql를 수동으로 실행하는 방법에 대한 자세한 내용은 Oracle AI Database Administrator's Guide를 참조하십시오. -
Oracle RAC의 성능 뷰 사용에 대한 자세한 내용은 Oracle Real Application Clusters Administration and Deployment Guide를 참조하십시오.
동적 성능 뷰의 저장 영역
Dynamic Performance 뷰는 데이터베이스 메모리 구조에서 작성된 가상 테이블을 기반으로 합니다.
뷰는 데이터베이스에 저장된 일반 테이블이 아닙니다. 데이터가 동적으로 갱신되기 때문에 뷰에서는 읽기 일관성이 보장되지 않습니다.
동적 성능 뷰는 실제 테이블이 아니므로 데이터는 데이터베이스 및 데이터베이스 인스턴스의 상태에 따라 달라집니다. 예를 들어, 데이터베이스가 시작되었지만 마운트되지 않은 경우 V$INSTANCE 및 V$BGPROCESS를 질의할 수 있습니다. 그러나 데이터베이스가 마운트될 때까지는 V$DATAFILE를 질의할 수 없습니다.
참조: "데이터 동시성 및 일관성"
데이터베이스 객체 메타데이터
DBMS_METADATA 패키지 및 DBMS_DEVELOPER.GET_METADATA 함수는 데이터베이스 객체의 전체 정의를 추출하기 위한 인터페이스를 제공합니다.
DBMS_METADATA 패키지를 사용하면 정의를 XML 또는 SQL DDL로 표현할 수 있습니다. Oracle AI Database는 프로그래밍 제어를 위한 유연하고 정교한 인터페이스와 임시 쿼리를 위한 간소화된 인터페이스라는 두 가지 스타일의 인터페이스를 제공합니다.
DBMS_DEVELOPER.GET_METADATA 함수를 사용하면 객체 메타데이터가 JSON 문서로 반환됩니다.
참조: DBMS_METADATA에 대한 자세한 내용은 Oracle AI Database PL/SQL Packages and Types Reference를 참조하십시오. DBMS_DEVELOPER.GET_METADATA에 대한 자세한 내용은 Oracle AI Database PL/SQL Packages and Types Reference를 참조하십시오.