다음은 오라클 데이터베이스를 예로 들어 데이터 사전을 설명합니다.
데이터 사전은 오라클이 데이터베이스에 대한 정보를 저장하는 곳으로 데이터를 설명하는 것이 목적입니다. 예를 들어, 테이블 생성자 정보, 생성 시간 정보, 테이블스페이스 정보, 사용자 접근 권한 정보 등이 있다. 사용자가 데이터베이스의 데이터를 조작하는 데 어려움을 겪을 경우 데이터 사전에 접속하여 자세한 정보를 볼 수 있습니다.
오라클의 데이터 사전은 정적(Static) 사전과 동적(Dynamic) 사전으로 구분됩니다. 정적 데이터 사전은 사용자가 데이터 사전에 접근할 때 주로 변경되지 않지만, 동적 데이터 사전은 데이터베이스 작업의 성능에 의존하고 데이터베이스 작업의 일부 고유 정보를 반영하므로 이러한 유형의 데이터 사전에 액세스할 때 정적이지 않은 경우가 많습니다. 데이터 사전. 이 두 가지 유형의 데이터 사전에 대해서는 아래에서 설명합니다.
1. 정적 데이터 사전
이 유형의 데이터 사전은 주로 테이블과 뷰로 구성됩니다. 데이터 사전에 있는 테이블은 직접 접근할 수 없지만, 데이터 사전에 있는 뷰에는 접근할 수 있다는 점에 유의하세요. 정적 데이터 사전의 뷰는 세 가지 범주로 나뉘며, 각 범주는 user_*, all_*, dba_*라는 세 가지 접두사로 구성됩니다.
user_*
이 보기는 현재 사용자가 소유한 개체에 대한 정보를 저장합니다. (즉, 이 사용자 모드의 모든 개체)
all_*
이 시도는 현재 사용자가 액세스할 수 있는 개체에 대한 정보를 저장합니다. (user_*와 비교하여 all_*은 개체를 소유할 필요가 없으며 개체에 액세스할 수 있는 권한만 있으면 됩니다.)
dba_*
이 보기는 모든 개체를 다음 위치에 저장합니다. 데이터베이스 개체 정보입니다. (현재 사용자가 이러한 데이터베이스에 액세스할 수 있는 권한이 있다는 전제가 있으며 일반적으로 관리자 권한이 있어야 합니다.)
위 설명에서 볼 수 있듯이 세 데이터베이스 간에 저장된 데이터에는 분명히 중복이 있을 것입니다. 실제로 액세스 범위의 차이(권한이 다르기 때문에 액세스 개체의 범위가 다름)를 제외하면 다른 모든 항목은 일관됩니다. 구체적으로, 데이터 딕셔너리 뷰는 SYS(시스템 사용자)가 소유하므로 기본적으로 SYS와 DBA 시스템 권한을 가진 사용자만이 모든 뷰를 볼 수 있습니다. DBA 권한이 없는 사용자는 user_* 및 all_* 뷰만 볼 수 있습니다. 관련 SELECT 권한이 부여되지 않으면 dba_* 뷰를 볼 수 없습니다.
세 가지의 유사성으로 인해 다음에서는 user_를 예로 사용하여 일반적으로 사용되는 몇 가지 정적 보기를 소개합니다.
user_users 보기
주로 현재 보기를 설명합니다. 주로 현재 사용자 이름, 계정 ID, 계정 상태, 테이블스페이스 이름, 생성 시간 등을 포함한 사용자 정보 예를 들어, 다음 명령을 실행하면 이 정보가 반환될 수 있습니다.
select * from user_users
user_tables view
테이블 이름, 테이블스페이스 이름, 클러스터 이름 등 현재 사용자가 소유한 모든 테이블에 대한 정보를 주로 설명합니다. , 등. . 이 보기를 통해 현재 사용자가 어떤 테이블을 조작할 수 있는지 명확하게 이해할 수 있습니다. 실행 명령은 다음과 같습니다. select * from user_tables
user_objects view
테이블, 뷰, 저장 프로시저, 트리거, 패키지 등 현재 사용자가 소유한 모든 개체에 대한 정보를 주로 설명합니다. 및 인덱스, 시퀀스 등 이 보기는 user_tables 보기보다 더 포괄적입니다.
예를 들어, "package1"이라는 객체 유형과 그 상태에 대한 정보를 얻으려면 다음 명령을 실행할 수 있습니다:
select object_type, status
from user_objects p>
where object_name=upper('package1');
여기서 데이터 사전의 모든 객체는 대문자 사용에 주의해야 합니다. 그러나 PL/SQL은 그렇지 않습니다. 대소문자를 구분하므로 실제로는 작업 시 대소문자 일치에 주의하세요.
user_tab_privs 뷰
이 뷰는 주로 현재 사용자 아래의 모든 테이블에 대한 권한 정보를 저장합니다. 예를 들어, table1에 대한 현재 사용자의 권한 정보를 확인하려면 다음 명령을 실행하면 됩니다:
select * from user_tab_privs where table_name=upper('table1')
이해 table1에 대한 현재 사용자의 권한 정보 테이블 권한 후에는 어떤 작업을 수행할 수 있고 어떤 작업을 수행할 수 없는지 명확하게 알 수 있습니다.
이전 보기는 모두 user_로 시작합니다. 실제로 all_로 시작하는 보기는 나열된 정보가 현재 소유한 개체가 아니라 현재 사용자가 액세스할 수 있는 개체라는 점만 제외하면 완전히 동일합니다. 사용자. dba_로 시작하시는 분들은 관리자 권한이 필요하며, 그 외 사용법은 완전히 동일하므로 여기서는 자세히 설명하지 않겠습니다.
2. 동적 데이터 사전
오라클에는 SYS와 같은 시스템 관리자가 관리하는 잠재적인 테이블과 뷰가 포함되어 있습니다. 이러한 테이블과 뷰는 데이터베이스가 실행될 때 지속적으로 업데이트되므로 이를 동적 데이터 사전(또는 동적 성능 뷰)이라고 합니다. 이러한 뷰는 메모리 및 디스크 작업에 대한 정보를 제공하므로 읽기 전용 액세스만 가능하고 수정할 수 없습니다.
Oracle의 이러한 동적 성능 뷰는 모두 v$access와 같이 v$로 시작하는 뷰입니다. 다음은 몇 가지 주요 동적 성능 보기에 대한 소개입니다.
v$access
이 보기에는 데이터베이스에 잠긴 데이터베이스 개체와 이러한 개체에 액세스하는 세션 개체(세션 개체)가 표시됩니다.
다음 명령을 실행하세요:
select * from v$access
결과는 다음과 같습니다. (레코드가 많기 때문에 레코드 중 일부만 여기에서 발췌)
p>
SID
소유자 객체 유형
27 DKH V$ACCESS CURSOR
27 PUBLIC V $ACCESS SYNONYM
27 SYS DBMS_APPLICATION_INFO PACKAGE
27 SYS GV$ACCESS VIEW
v$session
이 보기에는 다음의 세부 정보가 나열됩니다. 현재 세션. 이 뷰에는 많은 필드가 있으므로 자세한 필드는 여기에 나열되지 않습니다. 자세히 알아보려면 sql*plus 명령줄에 desc v$session을 직접 입력하세요.
v$active_instance
주로 현재 데이터베이스의 활성 인스턴스에 대한 정보를 설명하는 뷰입니다. 이 정보를 관찰하려면 여전히 select 문을 사용할 수 있습니다.
v$context
이 보기에는 현재 세션의 속성 정보가 나열됩니다. 네임스페이스, 속성 값 등
3. 요약
위 내용은 Oracle 데이터 사전의 기본 내용이며, 공간상의 이유로 여기에서 설명할 수 없는 유용한 보기가 많이 있으므로 일상생활에서 더욱 주의하시기 바랍니다.
즉, 데이터 사전 기술을 잘 사용하면 데이터베이스 개발자가 데이터베이스의 전반적인 그림을 더 잘 이해할 수 있으며 이는 데이터베이스 최적화, 관리 등에 큰 도움이 됩니다.