본문 바로가기

교육/Oracle

Day 32 (Oracle)

반응형

데이터 딕셔너리 및 동적 성능 뷰 사용

이번 챕터에서는 뷰와 테이블을 테이블로 생각하겠다. 즉, 뷰와 테이블은 실제로 데이터가 저장되는 것에 대한 차이를 갖는데 이번 챕터에서만 둘다 저장된 데이터로 간주한다는 것이다.

데이터베이스와 함께 생성되는 객체가 있다. 이 객체는 물리적인 저장공간을 차지하고 있어 object라고 한다. segment또한 일종의 object이다. 이러한 객체에는 데이터딕셔너리, 성능테이블, PL/SQL패키지, 데이터베이스이벤트트리거가 있다.

데이터 딕셔너리 와 동적 성능 뷰는 메타데이터라고 하는데 데이터 딕셔너리는 데이터베이스의 객체에 대한 정보를 저장한다. 동적 성능 뷰는 Dynamic Performence Truble-shooting Table이라고 하며 perfomence table이라고도 한다. 퍼포먼스테이블은 메모리에만 있다. PL/SQL패키지는 원래 SQL문에서는 프로그래밍에 필수인 조건문과 반복문을 사용할수없는데 오라클에서 프로그래밍을 할수있는 기능을 지원하기위해 조건문과 반복문을 제공하는 역할을 한다. 데이터베이스 이벤트 트리거는 예를 들어 테이블의 정보가 수정될때 제약조건만으로는 무결성이 확보되지 않을때 보다 상위단계에서 제약을 거는 사용하는 일종의 조건으로도 사용가능하다. PL/SQL을 트리거로 사용하여 작동하는 객체이다. 참고로 이벤트는 자신의 의지와 상관없이 일어나는일을 의미하고, 액션은 주체가 의지를 가지고 의도적으로 하는 행동을 의미한다.

 

데이터 딕셔너리는 사용자의 이름이나 암호등을 저장한다. 저장되는 곳은 데이터 파일안에 저장되며 데이터파일은 SYSTEM이란 이름의 테이블스페이스에 저장된다. 포함관계를 보면 딕셔너리가 모여 데이터 파일이 되고 데이터 파일이 모여 테이블 스페이스가 된다고 할수있다. 물론 그것들외에도 다른 요소들이 있다.

읽기전용의 테이블이나 뷰로 생성되며 SELECT문으로 접근이 가능하고, sys사용자(관리자)소유이다. 하지만 관리자도 오직 읽기전용으로만 접근이 가능하다. 데이터 딕셔너리 뷰는 오라클 설치시 자동으로 생성된다.

데이터 딕셔너리에는 모든 관리 정보가 들어가 있는데 논리적/물리적 데이터베이스 구조, 객체에 대한 정의 및 공간할당, 무결성 제약 조건, 사용자이름, 각 사용자에게 부여된 권한과 롤, 스키마 객체에 대한 액세스 또는 갱신내용의 감사등이 있다.

데이터 딕셔너리는 기본적으로 자동갱신이라고 하는데 CREATE, ALTER, DROP등 즉시 갱신되는 정보도 있다. 그러나 트렌젝션이 많은 정보는 자동갱신이 되지 않는 경우도 있어 데이터 딕셔너리를 확인할때는 갱신후 사용하는 것이 가장 정확하다.

데이터 딕셔너리 뷰의 범주는 DBA, ALL, USER 3가지로 나눌 수 있다. DBA는 관리자가 볼수있는 뷰이다. ALL은 사용자가 접속 권한을 받은 모든 스키마에 대한 뷰이다. USER는 사용자의 스키마에 대한 뷰이다. 참고로 오라클에서 데이터 딕셔너리를 테이블이 아닌 뷰로 출력하는 이유는 관리자나 사용자가 접근, 수정하지 못하게 하기 위해서이다.

 

동적 성능 테이블은 오라클이 전체 작업과정 동안 현제 데이터 베이스의 작업을 기록하는 곳이다. 따라서 가상의 테이블로써 하드웨어가 아닌 공유풀에 생성된다. 정보는 메모리 및 제어 파일에 엑세스되며 데이터베이스 운영 동안 지속적으로 갱신된다. V$FIXED_TABLE에 나열되며 V$~가 전부 동적 성능 테이블의 요소이다. 동적 성능 테이블은 startup구간에서도 사용하여 현상태를 출력가능한데 동적 성능 테이블중에서는 nomount, mount, open 각 단계에서 볼수있는 테이블도 있고 볼수없는 테이블도 있다.


INDEX - (의식의 흐름대로) 용어정리

유저프로세스 : 사용자가 SQL문을 사용하는 프로그램

서버프로세스 : 사용자가 오라클에 접속하기 위한 프로그램

PGA : 서버프로세스나 백그라운드프로세스를 사용하는 영역

Instance : 오라클에서 사용하는 논리적인 저장 영역

SGA : 공유 글로벌 영역으로 데이터베이스 프로세르를 공유하는 데이터베이스 정보를 저장하는 영역

쉐어드풀 : 공유 영역으로 데이터베이스에서 사용했던 모든 내용을 파싱하기 위해 저장하는 영역

라이브러리캐시 : 데이터베이스에서 사용했던 SQL문장을 저장해 놓은 영역

데이터 딕셔너리 캐시 : 데이터베이스에서 사용했던 테이블 정보를 저장해 놓은 영역

데이터 버퍼 캐시 : 사용자가 입력하는 SQL문을 이용해 데이터를 사용하는 영역

리두 로그 버퍼 : 사용자가 수행했던 작업에 대한 정보를 저장하는 영역(어느사용자가 언제 어떤작업을 했다.

백그라운드프로세서 : 사용자가 직접적으로 사용하는 것이 아닌 오라클 동작을 위해 작동하는 프로세서들

피몬 : 프로세서를 지속적으로 관찰하여 연결이 끊겼음에도 리소스를 차지하고 있는 프로그램과 같은 잉여 프로그램을 제거하는 프로세서

∨에스몬 : 인스턴스 장애가 발생하여 예기치 않게 종료되었을때 실행되며 리두로그파일을 참조하여 복구한다.

디비라이터 : 데이터 버퍼 캐시에서 작업된 내용을 데이터 파일에 저장하거나 데이터 파일의 특정 데이터를 데이터 버퍼 캐시에 올려 놓는 프로세서

로그라이터 : 리두로그버퍼에 작성된 로그를 리두로그파일에 저장하는 프로세서

체크포인트 : 일정 주기마다 디비 라이터와 로그 라이터를 작동시켜 데이터가 저장할수있게 실행되는 프로세서 

기타 : 피몬, 에스몬, 디비라이터, 로그라이터, 체크포인트를 제외한 다른 백그라운드 프로세서들

데이터베이스 : 오라클 서버에서 사용하는 물리적 저장 영역

데이터파일 : 실제로 데이터가 물리적으로 저장되는 영역

제어파일 : 데이터 파일과 리두로그파일의 위치파악이나 동기화 정보 체크등을 수행에 사용하는 파일

리두로그파일 : 어떤 사용자가 어떤 작업을 언제 했는지 등에 대한 작업정보가 저장된 파일

매개변수파일 : 오라클 시스템의 정보가 들어있어 시스템 시작시 사용되는 파일

암호파일 : 사용자의 이름, 암호등 스키마에 관한 정보가 저장되어있는 파일

아카이브된로그파일 : 리두로그파일을 저장해 놓은 파일

초기화 매개변수파일 : 오라클 시스템이 시작할때 오라클 서버의 상태에 대한 정보를 설정하는 파일

startup : 오라클 서버를 구동시키는 명령어로 startup nomount, startup mount, startup open 3가지가 있으며 기본값은 startup open이다. 각 단계까지 동작이 가능하게 할수있지만 시작은 항상 shutdown상태여야한다. 만약 중간 단계에서 사용하고 싶다면 ALTER DATABASE를 사용하면 되는데 nomount에서 monut로 가거나 mount에서 open으로만 갈수있다.

shutdown : 오라클 서버를 종료하는 명령어로 immediate, normal, transection, abort 4가지가 있다. 정상적인 종료는 shutdown immediate다

nomount : 인스턴스를 시작하며, 매개변수 파일을 읽고, SGA를 확보하며, Back Ground Process를 실행한다.

mount : 인스턴스 제어파일을 읽는다.

open : 모든 데이터에 접속 및 작업이 가능하며 인스턴스제어파일의 순서대로 실행한다.

피파일 : 텍스트로 이루어진 매개변수파일

에스파일 :바이너리인 매개변수파일

메타데이터 : 데이터 딕셔너리와 동적 성능 뷰를 포함해서 의미하는 말로 스키마에 대한 정보나 권한 등의 정보와 현재 시스템의 상태등을 나타내는 데이터이다.

데이터딕셔너리 : 오라클 내에 있는 스키마들에 대한 정보가 있으며 관리자는 DBA, 사용자계정은 ALL과 USER뷰에 엑세스가 가능하다.

성능테이블 : startup중 nomount, mount, open의 각 단계에서 사용가능하며, 사용한 단계의 정보를 알수있다.

PL/SQL패키지 : SQL문으로 조건문, 반복문을 사용 가능하게 하여 프로그램을 작성할수있게 하는 요소이다.

데이터베이스 이벤트 트리거 : 제약조건 만으로는 무결성 확보가 어려울때 사용하는 프로그램이다.

테이블스페이스 : 데이터 파일의 집합체로 사용자의 이름이나 비밀번호등의 정보가 담겨있고 open후에 사용할수있다.

반응형

'교육 > Oracle' 카테고리의 다른 글

Day 34 (Oracle DB)  (0) 2020.01.06
Day 33 (Oracle)  (0) 2020.01.03
Day 31 (Oracle)  (0) 2019.12.31
windows10에서 VMware을 이용한 linux설치  (0) 2019.12.29
Day 29 (oracle & apache & php)  (0) 2019.12.27