300x250

오라클 데이터베이스

-하나의 단위로 취급되는 데이터 모임.

-세가지 파일 유형으로 구성.

데이터베이스의 일반적인 용도는 관련 정보를 저장하고 검색하는 것이며 오라클 데이터베이스에는 논리적 구조와 물리적 구조가 있다. 데이터베이스의 물리적 구조란 데이터베이스에 있는 운영 체제 파일 집합을 말한다. 오라클 데이터베이스는 다음 세가지로 구성

-데이터베이스의 실제 데이터가 포함된 데이터 파일

-장애가 발생했을 때 데이터를 복구 할 수 있도록 데이터베이스의 변경 사항이 기록된 리두로그파일

-데이터베이스로 무결성을 유지 관리하고 확인하는데 필요한 정보가 포함된 제어파일



기타 키 파일 구조

오라클 서버는 데이터베이스에 속하지 않는 기타 파일도 사용.

-매개변수 파일에는 오라클 인스턴스의 특성이 정의됨. 

ex)파일에는 SGA에 있는 일부 메모리 구조의 크기를 지정하는 매개변수가 포함.

-암호파일은 사용자가 오라클 인스턴스를 시작하고 종료할 수 있다는 것을 인증.

-아카이브된 리두 로그파일은 매체 고장 시 복구하는데 필요한 리두 로그 파일의 오프라인 복사본.



물리적 구조 

물리적구조에는 세가지 파일 유형이 포함.


-제어파일

-데이터파일

-리두로그파일


메모리 구조

오라클의 메모리 구조는 두가지 메모리 영역으로 구성.

-SGA(시스템 글로벌 영역) : 인스턴스가 시작될 떄 할당 되며 오라클 인스턴스의 기본적인 구성 요소.

-PGA(프로그램 글로벌 영역):서버 프로세스가 시작될 때 할당됨.


시스템 글로벌 영역

*SGA는 여러 메모리 구조로 구성.

-공유 풀 

-데이터베이스 버퍼 캐시

-리두 로그 버퍼

-기타 구조 (예 : 잠금 및 래치 관리, 통계데이터)

*SGA에는 두가지 메모리 구조를 추가로 구성 할 수 있다.

-대용량 풀

-자바 풀


SGA(시스템 글로벌영역)

SGA는 공유 글로벌 영역이라고도 하며 데이터베이스 프로세스에 공유하는 데이터 정보를 저장하는데 사용됨. 여기에는 오라클 서버를 위한 데이터 및 제어 정보가 포함되며 오라클이 상주하는 컴퓨터의 가상 메모리에 할당.


>SHOW SGA

-SGA메모리 할당 상태 조회

Total System Global Area

Fixed Size

Variable Size

Database Buffers

Redo Buffers


시스템 글로벌 영역

동적SGA:

오라클9i부터동적 SGA는 인스턴스를 종료하지 않고 SGA구성을 변경 할 수 있는 기반 구조를 구현함. 따라서 인스턴스를 종료하지 않고 데이터베이스 버퍼 캐시 및 공유 풀의 크기를 변경 할 수 있다. 

데이터베이스 버퍼 캐시 및 공유풀은 처음 구성이 계속 유지되는 것이 아니라 작업로드에 따라 최대 SGA_MAX_SIZE까지 늘어나거나 줄어들 수 있다.


SGA 크기 조정:

SGA크기는 여러 초기화 매개변수에 의해 결정 된다.

SGA크기에 가장 많은 영향을 주는 매개변수는

DB_CACHE_SIZE : 표준 블록의 캐시크기. 기본적으로 UNIX에서 48MB이고 NT에서는 52MB.

LOG_BUFFER: 리두 로그 버퍼에 할당되는 바이트 수

SHARED_POOL_SIZE: 공유 SQL및 PL/SQL에 제공되는 영역의 바이트 크기. 기본적으로 16MB, 64bit인 경우 기본 크기는 64MB

LARGE_POOL_SIZE: 대용량 풀의 크기. 기본 값은 0.

(init.ora 매개변수  PARALLEL_AUTOMATIC_TUNING이 TRUE 설정될 떄를 제외하고는 기본값이 자동으로 계산)

JAVA_POOL_SIZE:JAVA 풀의 크기. 기본 값 24MB

따라서 SGA크기는 SGA_MAX_SIZE - DB_CACHE_SIZE-LOG_BUFFER-SHARED_POOL_SIZE - LARGE_POOL_SIZE-JAVA_POOL_SIZE를 초과할 수 없다.



시스템 글로벌 영역

-SGA는 동적.

-SGA_MAX_SIZE 매개변수로 크기를 조정.

-SGA구성 요소를 통해 그래뉼에 할당되고 추적.

*연속적인 가상 메모리 할당.

*예상된 총 SGA_MAX_SIZE 기준의 그래뉼 크기


시스템글로벌 영역

할당단위

그래뉼은 연속적인 가상 메모리 할당 단위.

그류뉼 크기는 예상되는 총 SGA크기에 따라 다르며 크기는 SGA_MAX_SIZE 매개변수 값에 준하여 계산.

-예상 SGA크기가 128MB 보다 작은 경우에는 4MB

-그 외의 경우에는 16MB


구성요소(데이터베이스 버퍼 캐시 및 공유풀)는 그래뉼 단위에 따라 늘어나거나 줄어듭니다. 그래뉼을 소유하는 각 구성 요소의 경우 구성 요소에 할당된 그래뉼 수, 구성 요소에 대한 보류 작업(ALTER SYSTEM을 통한 그래뉼 할당, ALTER SYSTEM을 통한 그래뉼 해제, 해당 자체 튜닝) 및 그래뉼 단위의 대상 크기는 V$BUFFER_POOL 뷰에 의해 추적되고 표시.

인스턴스가 시작될 때 오라클서버는 각 그래뉼마다 그래뉼 항목을 하나씩 할당하여 주소공간의 SGA_MAX_SIZE바이트를 지원.

시작이 계속됨에 따라 각 구성요소는 필요한 그래뉼을 모두 얻게 됩니다.

SGA구성의 최소 단위는 세개의 그래뉼 즉, 각각 고정 SGA[리두 버퍼 포함[],데이터베이스 버퍼 캐시,공유 풀을 위한 그래뉼.


공유 풀 

다음을 저장하는데 사용됨.

-가장 최근에 실행한 SQL문

-가장 최근에 사용한 데이터 정의

두가지 주요 성능 관련 메모리 구조로 구성.

-라이브러리 캐시

-데이터 딕셔너리 캐시

SHARED_POOL_SIZE

-매개변수로 크기를 조정

ALTER SYSTEM SET SHARED_POOL_SIZE =64M


공유풀

공유 풀 환경에는 고정 구조와 가변 구조가 모두 있다.

고정 구조는 비교적 동일한 크ㅡ기를 유지하는 반면 가변 구조는 사용자 및 프로그램 요구 사항에 따라 크기가 늘어나거나 줄어듬.

고정 구조와 가변 구조의 실제 크기 조정은 초기화 매개변수와 오라클 내부 알고리줌 작업에 따라 달라짐.

공유 풀 크기 조정

공유 풀은 재사용 가능한 SQL실행 계획 (PL/SQL패키지, 프로시저 및 함수)과 커서 정보와 같이 전역적으로 공유할 수 있는 객체를 위해 사용되므로 고정 영역과 가변 영역 모두의 요구를 수용하도록 크기가 조정되어야 함. 

공유 풀에 대한 메모리 할당은 초기화 매개변수 SHARED POOL SIZE 의해ㅔ 결정.

ALTER SYSTEM SET을 사용하여 크기를 동적으로 조정할 수 있다. 성능 분석 후에 크기를 조정할 수 있지만 전체 SGA크기는 SGA_MAX_SIZE를 초과 할수 없다.


라이러리캐시

-가장 최근에 사용한 SQL문과 PL/SQL문에 대한 정보를 저장.

-공통으로 사용되는 명령문을 공유합니다.

-LRU(Least Recently Used) 알고리즘으로 관리 됨.

-다음 구조로 구성

공유 SQL 영역

공유 PL/SQL 영역

-크기는 공유 풀 크기 조정을 통해 결정


라이브러리 캐시

라이브러리 캐시 크기는 공유풀에 정의된 크기 조정에 따라 달라짐.

메모리는 명령문이 구문 분석 되거나 프로그램 단위가 호출 될때 할당.

공유 풀의 크기가 너무 작으면 명령문이 라이브러리 캐시로 계속 재로드 되어 성능에 영향을 주게됨. 

라이브러리 캐시는 LRU 알고리즘에 의해 관리 . 

캐시가 채워지면 라이브러리 캐시에 최근에 덜 사용된 실행 경로와 구문 분석 트리가 제거되어 새 항목을 위한 여유 공간이 생성됨.

재사용되지 않는 SQL문이나 PL/SQL문은 삭제.


라이브러리 캐시는 다음 두 구조로 구성.

-공유 SQL: 데이터베이스에 대해 SQL문을 실행하기 위한 실행 계획과 구문 분석 트리를 저장하고 공유 함. 다음에 동일한 SQl문을 실행 할 때는 공유 풀에 있는 구문 분석 정보를 이용하여 신속하게 처리 할 수 있다. SQL문에서 필요할때 마다 공유 SQL영역을 사용 할 수 있게 하려면 텍스트, 스키마 및 바인드 변수가 동일해야 됨.

-공유 PL/SQL : 공유 PL/SQL영역은 최근에 실행된 PL/SQL 문을 저장하고 공유함.

구문 분석되고 컴파일된 프로그램 단위가 프로시저(함수,패키지 및 트리거)는 이 영역에 저장.


데이터 딕셔너리 캐시

-데이터베이스에서 가장 최근에 사용된 정의 모음.

-데이터베이스 파일, 테이블, 인덱스, 열, 사용자, 권한 및 기타 데이터베이스 객체에 대한 정보를 포함.

-구문 분석 단계 동안 서버 프로세스는 데이터 딕셔너리에서 정보를 찾아 객체 이름을 해석하고 액세스를 확인 함.

-데이터 딕셔너리 정보를 메모리에 캐시하면 질의와 DML에 대한 응답시간이 줄어듬.

-크기는 공유 풀 크기 조정을 통해 결정.


데이터 딕셔너리 캐시

딕셔너리 캐시 또는 행 캐시라고도 함.

데이터 딕셔너리 정보를 데이터베이스 버퍼 캐시 및 공유 풀 메모리에 다중 캐시하여 성능을 향상 시킬 수 있다. 데이터베이스에 대한 정보(사용자 계정 데이터, 데이터 파일 이름, 세그먼트 이름, 확장 영역 위치, 테이블 설명 및 사용자 권한)은 데이터 딕셔너리 테이블에 저장.서버에서 이 정보가 필요하면 데이터 딕셔너리 테이블을 읽고 반환된 데이터는 데이터 딕셔너리 캐시에 저장.


데이터 딕셔너리 크기 조정:

전체 크기는 공유 풀 크기에 따라 달라지며 데이터베이스에 의해 내부적으로 관리됨. 데이터 딕셔너리 캐시가 너무 작은 경우에는 데이터베이스에서 서버에 필요한 정보를 얻기 위해 데이터 딕셔너리 테이블을 계속 질의해야 함.


참고서적 Oracle9i Database Administration Fundamentals 1



반응형

'Database > Oracle Administration' 카테고리의 다른 글

Oracle 구조 구성  (0) 2014.03.04
300x250


오라클서버는 오라클 인스턴스와 오라클 데이터베이스로 구성.

-----------------------------------------------------------------------------------

*오라클 서버 : 여러개의 파일, 프로세스, 메모리 구조가 있지만 이 모두가 SQL문을 처리하는데 사용 되는것은 아님. 그중 일부는 데이터베이스 성능을 향상시키거나 소프트웨어 또는 하드웨어 오류 발생시 데이터베이스를 복구하거나 데이터베이스를 유지관리하는데 필요한 작업을 수행.

오라클서버는 오라클인스턴스와 오라클 데이터베이스로 구성.

*오라클 인스턴스: 백그라운드 프로세스와 메모리 구조의 조합으로 데이터스의 데이터를 액세스하려면 인스턴스가 시작 되어야 한다.

인스턴스가 시작될 떄 마다 SGA(시스템 글로벌 영역)가 할당 되고 Oracle 백그라운드 프로세스가 시작된다. 

백그라운드 프로세스는 프로세스를 호출하기 위한 기능을 수행.

백그라운드 프로세스를 사용하여 각 사용자가 실행하는 여러 오라클 프로그램으로 처리해야 할 기능을 통합 할 수 있다.

백그라운드 프로스세는 I/O을 수행하고 다른  Oracle 프로세스를 모니터하여 병렬화를 높임으로써 서능 및 신뢰도를 향상시킴.

*오라클 데이터베이스 : 데이터베이스 정보를 위한 실제적인 물리적 저장 영역을 제공하는 운영체제 파일. 데이터베이스 파일은 데이터를 일관성 있게 유지하고 인스턴스가 실패한 경우 복구하는데 사용.


기타 키 파일 : 비 테이터베이스 파일은 인스턴스를 구성하고 권한이 있는 사용자를 인증하며 디스크 고장 시 데이터베이스를 복구하는 데 사용.


사용자 프로세스 및 프로세스 : SQL문이 실행 될 때 사용되는 기본 프로세스이지만 그 밖의 여러 프로세스가 오라클 서버에서 SQL문의 처리를 마칠 수 있도록 도와줌.


기타 프로세스 : 그 밖에도 여러 프로세스가 고급 대기열 처리, Real Application Clusters, 공유서버, 고급 복제와 같은 옵션에 사용.





오라클 서버 : 

데이터 베이스 서버는 정보를 관리하는데 핵심적인 역할을 수행한다. 일반적으로 서버는 다중 사용자 환경에서 많은 양의 데이터를 안정적으로 관리하여 여러 사용자가 동일한 데이터에 동시에 액세스 할 수 있게 하지만 이러한 작업으로 인행 서능이 저하되는 일은 없어야 한다. 또한 권한 없는 액세스를 방지하고 실패 복구를 위한 효율적인 해결책을 제공해야 함.

-정보를 개방적이고 포괄적이며 통합적으로 관리 할 수 있는 데이터베이스 관리 시스템입니다.

-오라클 인스턴스와 오라클 데이터베이스로 구성.






오라클 인스턴스 :


SGA(시스템 글로벌 영역) 메모리 구조와 데이터베이스 관리에 사용되는 백그라운드 프로세스로 구성. 

인스턴스는 각 운영체제에 지정된 방식에 따라 다름. 

인스턴스는 한버네에 하나씩 데이터베이스를 열어 사용 할 수 있다.

-오라클 데이터베이스를 액세스하는 수단.

-항상 한번에 한개의 데이터베이스만 연다.

-메모리와 백그라운드 프로세스 구조로 구성.


접속 설정 및 세션 생성:

사용자가 SQL문을 오라클 데이터베이스에 보ㅓ내려면 먼저 인스턴스에 접속해야 한다.

-SQL * PLUS와 같은 툴을 시작하거나 오라클 폼 등의 툴을 사용하여 개발된 응용 프로그램을 실행한다. 이러한 응용프로그램이나 툴은 사용자 프로세스로 실행됩니다. 

-대부분의 기본 구성에서는 사용자가 오라클 서버에 로그인 할 때 오라클 서버를 실행 중인 시스템에서 프로세스가 생성되는데 이 프로세스를 서버 프로세스라고 한다.서버 프로세스는 클라이언트에서 실행되는 사용자 프로세스 대신 오라클 인스턴스와 통신하며 사용자 대신 SQL문을 실행.


접속:

사용자 프로세스와 오라클 서버간의 통신 경로로써 데이터베이스 사용자는 다음 3 방법 중 하나로 오라클 서버에 접속,.


-오라클 인스턴스를 실행하는 운영체제에 로그인하고 해당 시스템에 있는 데이터베이스를 액세스하는 응용프로그램이나 툴을 시작합니다. 통신 경로는 호스트 운영체제에서 사용 가능한 프로세스 간의 통신 방식을 사용하여 설정됨.


-사용자는 지역 컴퓨터에 있는 응용 프로그램이나 툴을 시작한 다음 네트워크를 통해 오라클 인스턴스를 실행하는 컴퓨터에 접속합니다. 이러한 클라이언트 서버 구성에서는 네트워크 소프트웨어가 사용자의 오라클 서버 간의 통신에 사용됨.


-3계층 접속에서 사용자 컴퓨터는 네트워크를 통해 오라클 인스턴스를 실행중인 시스템에 있는 응용 프로그램이나 네트워크 서버와 통신함.



세션:

오라클서버에 특정 사용자가 접속하는 것으로 오라클 서버에서 사용자를 검증할 때 시작되어 사용자가 로그 아웃하거나 비정상적으로 종료될 떄 끝. 

데이터베이스사용자가 여러툴, 응용 프로그램 또는 터미널에서 ㅌ동시에 로그인하면 여러 세션을 동시에 사용 할 수 있음.

일부 전문적인 데이터베이스 관리 툴을 사용 할 때를 제외하고는 데이터베이스 세션을 시작하려면 오라클 서버를 사용할 수 있어야한다.

주: 여기서 설명한 것과 같이 사용자 프로세스와 서버프로세스 간에 일대일 대응하는 접속을 전용 서버 접속이라고 한다. 공유서버구성을 사용하면 여러 사용자 프로세스가 서버 프로세스를 공유 할 수 있다.


참고서적 Oracle9i Database Administration Fundamentals 1







반응형

'Database > Oracle Administration' 카테고리의 다른 글

오라클 데이터베이스  (0) 2014.03.05

+ Recent posts