database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 18044 게시물 읽기
No. 18044
초보자를 위한 오라클 강좌
작성자
정재익(advance)
작성일
2004-04-05 10:28
조회수
59,512

OTN 에 올라와 있는 문서입니다. 도움이 될것으로 판단되어 올려 둡니다.

원본출처 : http://otn.oracle.co.kr/Starter/database/

 

오라클 데이타베이스 입문 - 데이타베이스 개요

글 ||이경록| 한국오라클 기술 서비스본부 | kyungrok.lee@oracle.com

이번 장에서는 데이타베이스와 DBMS, SQL, 관계 모델, 관계형 데이타베이스, 오라클 등 데이타베이스의 개요와 각각의 특징들을 정리해보고자 합니다.

제 1장 데이타베이스 개요

1. 데이타베이스

데이타베이스나 데이타베이스 관리라는 용어가 정확하게 언제부터 사용되기 시작하였는지는 분명하지 않습니다. 다만 1963년 6월에 미국 SDC(System Development Corporation)가 개최한 제 1차 "컴퓨터 중심의 데이타베이스 개발과 관리(Development and Management of a Computer-centered Data Base)"라는 심포지움 제목에서 데이타베이스란 용어가 공식적으로 처음 사용된 것을 볼 수 있습니다. 이 심포지움에서 발표된 대부분의 논문들은 데이타 파일로부터 정보를 쉽게 검색하는 문제들에 관한 것이었고 데이타베이스는 용어는 자기 테이프와 같은 저장 장치에 저장된 데이타 파일을 의미하였습니다.
데이타베이스는 원래 같은 데이타가 상이한 목적을 가진 여러 응용에 중복되어 사용될 수 있다는 공용의 개념에 기초를 두고 있습니다. 따라서, 데이타베이스는 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이타의 집합이라고 정의할 수 있습니다. 데이타베이스 정의가 함축하고 있는 의미는

첫째, 데이타베이스는 통합된 데이타(integrated data)라는 것입이다. 따라서, 데이타베이스에서는 똑같은 데이타가 원칙적으로 중복되어 있지 않다는 것을 말합니다. 데이타의 중복은 일반적으로 관리상의 복잡한 부작용을 초래합니다. 그러나, 실제로 중복성을 완전히 배제하는 것이 아니고 경우에 따라서는 효율성을 증진시키기 위하여 불가피하게 일부 데이타의 중복을 허용하기도 합니다. 이러한 의도적 중복은 항상 파악할 수 있고 관리할 수 있습니다. 이것을 최소의 중복(minimal redundancy) 또는 통제된 중복(controlled redundancy)이라고 합니다.


둘째, 데이타베이스는 저장된 데이타(stored data)입니다. 이것은 책상 서랍이나 파일 캐비닛에 들어 있는 데이타가 아니라 자기 테이프나 디스크와 같이 컴퓨터가 접근할 수 있는 저장 매체에 저장된 데이타를 말하는 것입니다. 현대 정보화 사회에서 컴퓨터를 중심으로 데이타를 저장 관리한다는 것은 당연한 것이라 하겠습니다.

셋째, 데이타베이스에 저장되어 있는 데이타는 운영 데이타(operational data)입니다. 어떤 조직도 그 고유의 기능을 수행하기 위해 반드시 유지해야 할 데이타가 있기 마련인데 이것을 운영 데이타라고 합니다. 그러므로, 데이타베이스는 단순한 데이타의 집합이 아니라 그 조직의 존재 목적이나 기능을 수행하는 데 없어서는 안될 그러한 데이타의 집합인 것입니다. 단순한 입출력 데이타나 작업 처리상 일시적으로 필요한 임시 데이타는 운영 데이타로 취급하지 않습니다.

넷째, 데이타베이스는 공용 데이타(shared data)입니다. 이것은 어느 하나의 응용 프로그램이나 응용 시스템을 위한 데이타가 아니라 그 조직에 있는 여러 응용 시스템들이 공동으로 소유하고 유지하며, 이용하는 공용 데이타라는 것입니다. 즉, 여러 사용자들이 서로 다른 목적으로 데이타베이스의 데이타를 공동으로 이용한다는 것을 의미합니다. 따라서, 데이타베이스는 일반적으로 그 양이 대형화되고 그 구조가 복잡하게 되는 것이 보통입니다.


2. DBMS

데이타베이스 관리 시스템(DBMS: DataBase Management System)은 파일 시스템에서 야기된 데이타의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템입니다.
여기서 DBMS라 하면 응용 프로그램과 데이타의 중재자로서 모든 응용 프로그램들이 데이타베이스를 공용할 수 있게끔 관리해 주는 소프트웨어 시스템(software system)으로 정의할 수 있습니다. 이러한 시스템에서 응용 프로그램들이 데이타베이스를 이용하기 위해서는 데이타베이스 관리 시스템을 통해서만 가능하며 이것은 DBMS가 데이타베이스의 구성, 접근 방법, 관리 유지에 대한 모든 책임을 지고 있다는 것을 의미합니다. 그러므로 이 DBMS는 먼저 데이타베이스 사용자가 데이타 언어로 표현한 데이타베이스 접근 요구(관계형 데이타베이스에서의 SQL)를 접수해서 이것을 조사 분석한 뒤 컴퓨터가 이해할 수 있는 형태로 변환합니다. 사용자의 요구는 일반적으로 데이타의 검색, 삽입, 갱신, 삭제, 그리고 데이타의 생성 등을 포함합니다. 이러한 요구를 실행시키기 위하여 DBMS는 사용자의 해당 외부 스키마, 외부/개념 사상, 개념 스키마, 개념/내부 사상, 내부 스키마, 그리고 저장 구조를 통해 목표 데이타에 접근하여 연산을 실행하게 됩니다.


3. 관계 모델

관계 데이타 모델은 일반 사용자로 하여금 데이타베이스가 관계(relation), 즉 테이블의 집합으로 되어 있다고 생각하게 합니다. 특히 데이타베이스를 구성하는 개체와 관계가 모두 일률적으로 테이블(table)로 표현된다는 특성을 가지고 있습니다.
관계형 데이타베이스는 1970년 E.F Codd 박사에 의하여 "대량 공용 데이타 뱅크용 데이타의 관계형 모델" (A Relational Model of Data for Large Shared Data Banks)이란 논문에서 발전하였습니다. E.F Codd 박사의 관계형 모델을 정의하는 12가지 규칙은 아래와 같습니다.

  • 법칙 1 : 정보법칙
    관계형 데이타베이스에 있는 모든 정보는 논리적 수준에서 명시적으로 그리고 어느정도 테이블에 있는 값은 정확하게 나타나야 한다.
    이 법칙은 관계형 데이타베이스에 있는 모든 정보는 테이블에 포함되어야 한다는 것을 말합니다. 이 테이블은 모든 응용 데이타와 모든 시스템 데이타를 포함합니다.
    Oracle은 사용자정의 테이블의 데이타가 데이타를 입력하는 동안 TABLE에 정의된 시스템 정보를 유지하고, ORACLE KERNEL에 의하여 지속적으로 유지되는 기능에 의해 구현됩니다. 모든 데이타는 모든 사용자에게 논리적으로 접근이 허용됩니다. 그러나 보안목적을 위하여 어떤 테이블에 대한 접근은 사용자 요구에 따라 제한될 수도 있습니다.


  • 법칙 2 : 보증법칙
    관계형 DB에서 각각 그리고 모든 원자값은 테이블명의 조합이나 PRIMARY KEY, 컬럼 이름 등을 재정렬 하여도 항상 논리적 접근이 보장되어야 한다.
    테이블은 관게형 데이타베이스에 데이타를 유지하는 데이터 구조입니다. 테이블은 레코드와 컬럼으로 구성되어 있으며 관계를 나타내기 위하여 만들어진 물리적 포인터는 아닙니다.
    데이터 그 자체는 데이타 사이의 관계를 나타내기 위하여 사용됩니다. 따라서 그 데이타는 이해하기가 보다 더 쉬우며 테이블과 테이블간의 작업은 관계이론이 집합론, 관계형 대수,관계형 미적분에서 기초로 하기 때문에 잘 정의되어져 있습니다.
    ANSI(American National Standards Institute)는 1986년 10월에 관계형 DB관리시스템을 위한 표준 언어로써 SQL을 적용하였으며 연방정부, FIPS 와 마찬가지로 국제표준기구(ISO)에 의해서도 적용되어 있습니다.
    오라클은 데이타에 접근방법을 명시하는 것을 요구하지 않는 SQL 표준의 SUPER-SET을 제공한다. 모든 SQL문장은 명시된 데이타에 가장 빠른 접근을 결정하는 RDBMS의 한 부분인 질의 최적기(optimizer)를 사용합니다.
    질의 최적기는 무슨 인덱스가 존재하고, 이 인덱스를 어디에서 가장 적절하게 사용하는가를 알고 있습니다 사용자는 테이블에 접근할 때 테이블이 인덱스 되었는지의 여부나, 인덱스 된 테이블의 유형이 무엇인지를 알 필요가 없습니다.

  • 법칙 3 : NULL값의 체계적 처리
    NULL값은 비어 있는 것을 나타내며, 공백 문자와 구분되고, 0 이나 어떤 다른 숫자로부터 구분된다.
    NULL은 누락된 정보를 나타내기 위하여 완전하게 관계형 DBMS에서 지원되어야 한다.

  • 법칙 4 : 관계형 모델에 기초한 동적 온라인 카타로그
    데이타베이스 사전의 내용은 보통 데이타처럼 논리적 데이타로 표현되므로 권한있는 사용자가 일반적인 데이타처럼 관계형 언어를 이용하여 사용할 수 있어야 한다.
    오라클의 데이타 사전(dictionary)은 테이블 형태에 적절한 시스템 정보를 보유하고 있으므로 권한 있는 사용자가 SQL문의 사용을 통하여 접근할 수 있습니다.

  • 법칙 5 : 사용하기 쉬운 데이타 부언어 (Sub-Language) 법칙
    관계형 시스템은 여러 언어와 여러 터미널 모드의 사용을 지원할 수 있어야 한다.
    그러나 관계형 시스템에서 사용하는 언어는 각 문장을 몇 개의 잘 정의된 문자열로서 표현할 수 있어야 하고 아래의 모든 내용을 지원하는 포괄적인 것이어야 합니다.

    1. 데이타 정의
    2. 데이타 조작
    3. 뷰 정의
    4. 무결성 제약
    5. 권한 관리
    6. 트랜잭션 영역 정의

  • 법칙 6 : 뷰 수정 법칙
    모든 뷰는 이론적으로 수정할 수 있고 또한 시스템에 의해 수정될 수 있어야 한다.
    뷰는 하나 또는 그 이상의 테이블의 논리적 창입니다. 뷰는 데이타를 저장하지 않고 다른 테이블로부터 데이타를 보여줍니다. 오라클의 뷰는 테이블이 사용되는 어디에서 든지 SQL문을 이용하여 사용됩니다.

  • 법칙 7 : HIGH-LEVEL 입력, 수정, 삭제
    단순 연산으로써 기본관계 또는 유도된 관계를 다루는 기능은 데이타의 검색 뿐만 아니라 입력, 수정, 삭제에서도 적용된다.
    SQL은 비절차형 언어 입니다. 그것은 한번에 단지 하나의 데이타 보다 레코드 단위로 처리하기 때문이고 그리고 데이타의 자동적 조정을 제공합니다. 모든 SQL문은 입력 시 집합으로써 받아들여 지고 출력 시에도 집합을 리턴합니다. SQL은 아래의 업무를 포함하는 여러 업무를 위한 명령어를 제공하고 있습니다.

    1. 데이타 조회
    2. 테이블에 레코드를 입력, 수정, 삭제
    3. 데이타베이스 객체를 생성, 변경, 삭제
    4. 데이타베이스객체에 대한 접근통제
    5. 데이타베이스 지속성 보증

  • 법칙 8 : 물리적 데이타 독립
    응용프로그램이나 터미널에서의 작업이 저장된 데이타 표시 또는 규정된 접근 방법에 의해서만 이루어 진다면 항상 데이타베이스 데이타는 논리적으로 손상되지 않은 상태로 남아 있어야 한다.
    이것을 이루기 위하여 DBMS는 기본테이블의 물리적 양상이 응용프로그램의 논리적 양상과 명확하게 분리되어야 합니다. 데이타 파일은 응용프로그램에 의해 데이타를 가져오기 위해 직접적으로 접근할 수 없습니다.
    오라클 유틸리티를 사용하는 응용프로그램은 데이타베이스 커널을 통해서만 접근이 가능합니다.

  • 법칙 9 : 논리적 데이타 독립
    기본 테이블들의 데이타 변화를 허용하는 작업을 의도적으로 하였다면 응용프로그램이나 터미널에서의 작업은 논리적으로 손상되지 않은 상태로 남아 있어야 한다.
    이러한 독립성의 예는 한 테이블이 레코드 또는 컬럼에 의해 두개의 데이블로 분할되었다가 조인에 의해 아무런 손실 없이 다시 결합될 수 있어야 한다는 것입니다. 이를 제공하기 위하여 DBMS는 이론적으로 수정할 수 있는 모든 뷰에 대하여 입력, 수정, 삭제를 할 수 있어야 하는데 ORACLE 은 모든 형태의 SELECT 문과 몇몇 UPDATE, DELETE, INSERT 문에서 이러한 독립성을 완전히 제공합니다.

  • 법칙 10 : 데이타 무결성
    RDBMS의 무결성 제약조건은 SQL문으로 정의될 수 있어야 하고 응용프로그램이 아닌 데이타사전에 저장 되어야 한다.
    두 가지의 무결성 법칙 (엔티티 무결성과 참조 무결성)외에 사업정책이나 정부규정을 반영하는 무결성 제약조건을 추가로 명시할 수 있어야 합니다. 이러한 제약조건은 고 수준의 SQL문에 의하여 정의되고 응용프로그램이 아닌 데이타 사전에 저장 되어야 합니다.
    ORACLE은 아래의 제약조건에 명시된 ANSI 표준 규격을 준수한다.

    1. 한 컬럼 또는 컬럼의 그룹의 값은 NULL이 아니어야 한다.
    2. 한 컬럼 또는 컬럼의 그룹의 값은 그 테이블 내에서 유일 해야 한다.
    3. PRIMARY KEY로서 한 컬럼 또는 컬럼의 그룹을 식별하여야 한다.
    4. 다른 테이블에 있는 컬럼 또는 컬럼의 그룹의 값을 요구한다. (외래 키)
    5. 컬럼 또는 컬럼의 그룹의 값으로 CHECK 사항을 준수하는 값을 요구한다.


  • 법칙 11 : 분산 독립
    관계형 DBMS는 분산 독립성을 갖고 있다. DBMS 는 데이타가 처음 분산되고 그리고 재분산 되었을 때 응용프로그램과 터미널 활동이 논리적으로 손상되지 않게 하는 데이타 부언어 (Sub-Language)를 가지고 있어야 한다.
    오라클의 SQL 구현은 데이타 분산을 지원하는 여러 문장을 포함합니다. 데이타베이스 연결들은 SQL*Net를 사용하여 지역 데이타베이스로부터 원격 데이타베이스 사용자로의 연결 (Link)을 가능하게 합니다.

  • 법칙 12 : 비-전복 (Non-Subversion) 법칙
    만약 관계형 시스템이 한번에 한 레코드만 처리하는 하위 언어를 가지고 있다면, 하위수준은 한번에 여러 레코드 처리하는 높은 수준의 관계형 언어에서 표현되는 무결성 법칙과 제한을 무시하거나 뒤바꾸기 위해 사용되지 않아야 합니다.

4. 관계형 데이타베이스

관계형 데이타베이스는 모든 데이타들을 테이블과 같은 형태로 나타내어 저장하는 데이타베이스입니다. 일상생활에서 데이타를 정리하여 표현할 때 흔히 표와 같은 방법을 사용하게 되는데, 관계형 데이타베이스는 이 '표'의 개념을 사용해서 데이타를 구성하는 방법을 사용하고 있습니다

예를 들어 고객들의 주소와 전화번호를 정리할 때 표, 즉 테이블을 사용한다면, 첫번째 열은 이름, 두번째 열은 주소, 세번째 열은 전화번호를 써서 나타낼 수 있습니다
객체-관계 모델에서 정의한 데이타들을 실제로 관계형 데이타베이스를 사용하여 저장하기위해서는 객체-관계 모델을 테이블로 변환시키는 과정이 필요합니다. 즉 객체-관계 모델은 실제 데이타베이스와는 상관없이 저장하고자 하는 데이타를 정의한 것이며, 테이블은 데이타를 관계형 데이타베이스에서 실제로 표현하는 방법입니다
관계형 데이타베이스에서는 단순히 데이타를 테이블의 형태로 나타낼 뿐만 아니라 저장된 데이타로부터 원하는 정보를 추출할 수 있는 방법을 정의하고 있습니다.

5. SQL

SQL(Structured Query Language: SEQUEL이라고 발음)은 데이타베이스를 정의하고 조작하는 프로그래밍 언어입니다. SQL 데이타베이스는 데이타가 단순한 관계 집합으로 저장되는 관계형 데이타베이스입니다. 데이타베이스는 하나 이상의 테이블을 가질 수 있으며 각 테이블은 열과 행으로 구성됩니다.

예를 들어, 사원 데이타베이스를 나타내는 테이블은 사원 번호라는 열을 가지고 있으며 그 열의 각 행은 각 사원의 사원 번호가 됩니다.

SQL 명령어를 사용하여 테이블의 데이타를 정의하고 조작할 수 있습니다. 데이타정의어(DDL) 명령어를 사용하여 데이타를 설정합니다. DDL 명령어에는 데이타베이스와 테이블을 생성하고 변경하는 명령어가 있습니다.
데이타 조작어(DML) 명령어를 사용하여 테이블의 데이타를 갱신, 삭제, 읽어들일 수 있습니다. DML 명령어는 데이타를 가져오고 변경합니다. 가장 보편적인 명령어는 데이타베이스에서 데이타를 읽어 들이는 SELECT 명령어입니다.

6. 오라클

오라클(ORACLE)은 Database/ERP와 이에 대한 솔루션을 제공하는 회사의 이름이기도 하며 Oracle DBMS를 가리키는 말로도 쓰입니다. Oracle은 관계형 데이타베이스 모델에 기초하여 만들어 졌으며 이후 객체관계형 모델을 지원하게 되었으며 Unix, Linux, Windows 등의 대부분의 OS를 지원하고 있습니다.
Oracle 서버는 다음과 같은 기능으로 효율적이며 효과적인 해결책을 제공합니다.

  • 클라이언트/서버 환경(분산처리)
    Oracle은 현재 사용하는 컴퓨터 시스템이나 네트워크를 최대한 활용할 수 있도록 데이타베이스 서버와 클라이언트 응용 프로그램에 처리를 분산시킵니다. 즉, 데이타베이스 관리 시스템을 실행하는 컴퓨터는 데이타베이스 서버 역할을 담당하고 데이타베이스 응용 프로그램을 실행하는 워크스테이션은 데이타 해석과 표시를 담당합니다.

  • 대규모 데이타베이스와 영역 관리
    Oracle은 테라바이트 크기의 데이타를 저장할 수 있는 대규모 데이타베이스를 지원합니다. 고가의 하드웨어 장치를 효율적으로 활용할 수 있도록 Oracle은 영역 사용을 완벽하게 제어합니다.

  • 다중 동시 데이타베이스 사용자
    Oracle은 여러 사용자가 동일한 데이타에서 작동하는 다양한 데이타베이스 응용 프로그램을 실행하도록 지원하여 데이타 경합을 최소화하고 데이타 동시성을 보장합니다.

  • 접속성
    오라클 소프트웨어는 서로 다른 유형의 컴퓨터와 운영 체제가 네트워크를 통해 정보를 공유하도록 합니다.

  • 고성능 트랜잭션 처리
    Oracle은 전체 시스템의 성능을 높게 유지하면서 위와 같은 기능을 제공하므로 데이타베이스 사용자들은 느린 처리 속도로 고생하지 않아도 됩니다.

  • 고 가용성
    일부 사이트에서는 데이타베이스 처리 능력을 떨어뜨리는 장애 시간없이 하루 24시간 Oracle을 작동시킵니다. 데이타베이스 백업 같은 정상적인 시스템 기능이나 부분적인 컴퓨터 시스템 장애는 데이타베이스 사용에 영향을 주지 않습니다.

  • 가용성 제어
    Oracle은 데이타베이스 레벨과 하위 데이타베이스 레벨에서 데이타 가용성을 선택적으로 제어할 수 있습니다. 예를 들어, 관리자는 특정 응용 프로그램을 사용하지 못하도록 하여 다른 응용 프로그램에 영향을 주지 않고 해당 응용 프로그램 데이타를 재로드할 수 있습니다.

  • 개방성과 산업표준
    Oracle은 데이타 액세스 언어, 운영 체제, 사용자 인터페이스 및 네트워크 통신 프로토콜 등에 대한 산업 표준을 준수하여 고객의 투자를 보호하는 "열린" 시스템이 되도록 합니다.
    또한 Oracle은 시스템 관리를 위해 SNMP(Simple Network Management Protocol) 표준을 지원하여 관리자가 단일관리 인터페이스로 여러 다른 기종의 시스템을 관리할 수 있도록 합니다.

  • 보안관리
    인증되지 않은 데이타베이스 액세스와 사용을 방지하기 위해 Oracle은 비상 안전 보안 기능을 사용하여 데이타 액세스를 제한하고 모니터합니다. 이 기능으로 가장 복잡한 데이타 액세스 설계까지도 쉽게 관리할 수 있습니다.

  • 데이타베이스 무결성 강제 수행
    허용할 수 있는 데이타의 기준이 되는 "업무 규칙"인 데이타 무결성을 강제로 수행합니다. 이것은 많은 데이타베이스 응용 프로그램에서 데이타 확인을 위한 코딩과 관리에 드는 비용을 줄일 수 있습니다.

  • 이식성
    오라클 소프트웨어는 다른 운영 체제에서도 작동합니다. Oracle로 개발된 응용 프로그램이라도 거의 수정하지 않고 다른 운영 체제에서 사용할 수 있습니다.

  • 호환성
    오라클 소프트웨어는 대부분의 산업 표준 운영 체제를 포함하여 산업 표준 시스템과 호환할 수 있습니다. Oracle로 개발된 응용 프로그램은 모든 시스템에서 거의 수정하지 않고도 효과적으로 사용할 수 있습니다.

  • 분산시스템
    분산 네트워크 환경에서 Oracle은 물리적으로 서로 다른 컴퓨터에 있는 데이타를 네트워크 상의 모든 사용자가 액세스할 수 있는 하나의 논리적 데이타베이스로 결합합니다. 분산 시스템은 비 분산 시스템과 동일하게 사용자 투명성과 데이타 일관성을 유지하면서 로컬 데이타베이스 관리의 장점을 지닙니다.
    또한 Oracle은 사용자가 오라클이 아닌 데이타베이스의 데이타를 투명하게 액세스할 수 있도록 다른 기종에 대한 옵션을 제공합니다.

<< 참고 문헌 >>
1. 데이타베이스 시스템 , 정익사, 이석호 저, 1997년 6월 20일
2. Oracle8i 개념 설명서, 오라클, 1999년 2월
3. ORACLE7 설계 개념, http://www.aend.co.kr/aend/oracle2.htm

오라클 데이타베이스 입문 - 데이타베이스 아키텍처

글 ||최원빈| 한국오라클 기술 서비스본부 | WonBin.Choi@oracle.com

이번 장에서는 데이타베이스의 아키텍처에 대해 알아봅니다.

제 2장 데이타베이스 아키텍처

Oracle은 실제로 데이타를 저장하는 공간, 저장된 데이타를 관리,변경,입력하면서 사용자의 요구를 처리하는 프로세스, 그 프로세스가 사용하는 메모리 영역으로 구성됩니다.

Oracle 서버는 정보를 개방적이고 포괄적이며 통합된 방식으로 관리할 수 있는 객체 관계형 데이타베이스 관리 시스템으로 Oracle 데이타베이스와 Oracle 서버 인스턴스로 구성됩니다.

Oracle Database architecture를 이해하기 쉽게 그림으로 표시하면 다음과 같습니다.
아래 그림의 각 요소에 대한 이해가 Oracle Database을 이해하는 첫 걸음이 될 것입니다.


Oracle Database를 기동하게 되면 OS의 memory상에 SGA(System Global Area)영역을 할당하게되고, 필요한 background process들을 뛰우게 됩니다. 이렇게 Database가 기동된 상태에서 사용자들이 접속하여 SQL을 실행하면, SGA와 여러 process들, 그리고 database를 구성하는 여러 file들과 유기적으로 동작하게 됩니다.


그럼 위 그림에 나와있는 각각의 구성요소에 대해 좀 더 살펴보기로 하겠습니다.

Database Structure
Oracle 데이타베이스는 물리적 구조와 논리적 구조로 구성됩니다. 물리적 서버 구조와 논리적 서버 구조가 서로 분리되어 있으므로 논리적 저장 영역 구조의 액세스에 영향을 주지 않고 데이타의 물리적 저장 영역 구조를 관리할 수 있습니다.


1. 논리적 데이타베이스 구조

Oracle 데이타베이스의 논리적 구조는 다음에 의해 결정 됩니다.

  • 하나 이상의 테이블스페이스
    테이블스페이스는 논리적 저장 영역
  • 데이타베이스의 스키마 객체
    스키마는 객체 집합이고 스키마 객체는 데이타베이스의 데이타를 직접 참조하는 논리적 구조입니다. 스키마 객체로는 테이블, 뷰, 시퀀스, 내장 프로시저, 동의어, 인덱스, 클러스터, 데이타베이스 링크 등이 있습니다.

테이블스페이스, 세그먼트, 확장 영역 등의 논리적 저장 영역 구조는 데이타베이스의 물리적 영역이 사용되는 방법을 나타냅니다. 스키마 객체와 스키마 객체 간의 관계는 관계형 데이타베이스 설계를 형성합니다.

Oracle 데이타베이스의 논리적 구조에는 테이블스페이스, 스키마 객체, 데이타블록, 확장 영역 및 세그먼트가 있습니다.

  • 테이블 스페이스
    데이타베이스는 논리적 저장 영역 단위인 테이블스페이스로 나누어집니다. 테이블스페이스는 연관된 논리적 구조를 그룹화합니다. 예를 들어, 테이블스페이스는 특정 관리 작업을 간단히 하기 위해 보통 응용 프로그램의 모든 객체를 그룹화합니다.
    데이타베이스, 테이블스페이스, 데이타 파일 데이타베이스, 테이블스페이스, 데이타 파일 사이의 관계가 아래의 그림과 같이 나타나 있습니다.) 

     

    위의 그림은 다음 사항을 나타냅니다.
    1. 각 데이타베이스는 논리적으로 하나 이상의 테이블스페이스로 나누어집니다.
    2. 각 테이블스페이스에 대해 하나 이상의 데이타 파일이 명시적으로 생성되어 테이블스페이스에 있는 모든 논리적 구조의 데이타를 물리적으로 저장합니다.
    3. 테이블스페이스의 데이타 파일을 결합한 크기는 테이블스페이스의 저장 영역을 모두 합친 양입니다. (SYSTEM 테이블스페이스의 저장 용량은 2MB이고, USERS 테이블 스페이스의 저장 용량은 4MB입니다.)

    온라인 테이블스페이스와 오프라인 테이블스페이스: 테이블스페이스는 온라인(액세스 가능) 또는 오프라인(액세스 불가)일 수 있습니다. 보통은 사용자가 테이블스페이스 내에서 정보를 액세스할 수 있는 온라인 상태입니다. 그러나 가끔 데이타베이스를 오프라인으로 만들어 일부분은 정상적인 액세스를 하지만 특정 부분은 사용할 수 없는 상태로 만들어 여러 관리 기능이 쉽게 수행되도록 합니다.
     
  • 스키마와 스키마 객체
    스키마는 데이타베이스 객체 모음이고 스키마 객체는 데이타베이스의 데이타를 직접 참조하는 논리적 구조입니다. 스키마 객체로는 테이블, 뷰, 시퀀스, 내장 프로시저, 동의어, 인덱스, 클러스터, 데이타베이스 링크 등이 있습니다. (테이블스페이스와 스키마 사이에는 아무런 관련이 없습니다. 동일한 스키마 객체가 서로 다른 테이블스페이스에 있을 수 있고 한 테이블스페이스가 여러 스키마 객체를 보유할 수 있습니다.)

  • 데이타 블록 및 세그먼트
    Oracle 데이타베이스 데이타는 가장 작은 단위인 데이타 블록에 저장 됩니다. 하나의 데이타 블록은 디스크의 물리적 데이타베이스 영역에서 지정된 몇 바이트에 해당됩니다. 데이타 블록의 크기는 데이타베이스가 생성될 때 Oracle 데이타 베이스에 대해 각각 지정됩니다. 데이타베이스는 Oracle 데이타 블록의 빈 데이타베이스 영역을 사용하여 할당합니다.

    데이타 블럭은 가장 미세한 수준의 결정구조로써, Oracle 데이타베이스의 데이타는 데이타 블럭에 저장됩니다. 데이타 블럭은 물리적인 디스크 공간의 특정 Byte열 이며, 하나의 데이타 블럭 크기는 데이타베이스가 생성될 때 각각의 데이타베이스에 대해 지정되는데 보통 2048 Bytes로 정의됩니다.
    데이타 블록 및 익스텐트 내부 구조는 아래와 같습니다.


     


    Extent

    - 데이타 블럭이 모여서 익스텐트라는 논리적인 데이타베이스 공간을 형성 합니다.

    - 데이타 블럭, 익스텐트, 세그먼트는 특정형태의 정보저장을 위해 사용됩니다.

    - 각 특정 형태의 자료 구조의 관계를 가지고 있습니다.

    - 익스텐트는 연속된 데이타 블럭의 일정한 갯수이고, 할당의 단위이며, 특정 형태의 정보저장을 위해 사용 됩니다.

     

  • 세그먼트: 익스텐트 상위의 논리적인 데이타베이스 저장 수준을 세그먼트라고 하며, 하나의 세그먼트는 특정 논리적 구조에 할당된 익스텐트들로 구성되며, 다음과 같은 여러 형태의 세그먼트들이 있습니다.

    • 데이타 세그먼트
      각각의 클러스터 되지 않은 테이블은 하나의 데이타 세그먼트를 갖습니다. 모든 테이블의 데이타는 자기 데이타 세그먼트의 익스텐트 내에 저장됩니다. 각 클러스터는 하나의 데이타 세그먼트를 갖습니다. 클러스터 내의 모든 테이블 데이타는 클러스터의 데이타 세그먼트 내에 저장됩니다.

    • 인덱스 세그먼트
      각 인덱스는 자신의 모든 데이타를 저장하고 있는 하나의 인덱스 세그먼트를 갖습니다.

    • 롤백(Roll back) 세그먼트
      Oracle 데이타베이스는 “실행 취소” 정보를 일시적으로 저장하기 위해 하나 이상의 롤백 세그먼트를 유지하는데, 여기의 정보는 아래 작업을 위해 사용됩니다.
      • 읽기 일관성 데이타베이스 정보를 생성할 때
      • 데이타베이스를 복구할 때
      • 사용자에 대한 커밋 되지 않은 트랜잭션을 롤백할 때

    • 임시 세그먼트
      임시 세그먼트는 SQL문의 완전한 실행을 위해 임시 작업 영역이 필요할 때 생성 됩니다. 명령문 실행이 끝나면 임시 세그먼트의 확장 영역은 이후 사용을 위해 시스템으로 복귀합니다.


    Oracle은 세그먼트의 기존 확장 영역이 꽉 차면 동적으로 영역을 할당합니다. 따라서 세그먼트의 기존 확장 영역이 차면 해당 세그먼트에 필요한 만큼 확장 영역을 할당합니다. 필요한 만큼 확장 영역을 할당해야 하므로 새로 할당되는 세그먼트의 확장 영역은 디스크에서 연속적인 부분이 아닐 수도 있습니다.


2. 물리적 데이타베이스 구조

Oracle 데이타베이스의 물리적 구조는 데이타베이스를 구성하는 운영 체제 파일에 의해 결정됩니다. 각 데이타베이스는 하나 이상의 데이타 파일, 두 개 이상의 리두 로그 파일, 하나 이상의 제어 파일 등 세 가지 유형의 파일로 구성됩니다. Oracle 데이타베이스의 파일은 데이타베이스 정보에 대한 실질적인 물리적 저장 영역을 제공합니다.

  • 데이타 파일(Data File)
    모든 Oracle 데이타베이스는 하나 이상의 물리적 데이타 파일을 가집니다. 데이타베이스의 데이타 파일은 데이타베이스의 모든 데이타를 가집니다. 테이블이나 인덱스 같은 데이타 베이스의 논리적 구조는 데이타베이스를 위해 할당된 데이타 파일에 물리적으로 저장 됩니다.

    변경되거나 새로운 데이타는 데이타 파일에 즉시 쓸 필요는 없습니다. 디스크 출력을 줄이고 데이타 베이스 성능 향상을 위해 변경된 내용만 파일에 쓰여지면, 데이타 블럭의 데이타는 메모리내에 남겨 두었다가, 적절한 시간에 데이타 파일에 쓰기는 RDMBS 백그라운드 프로세스인 DBWR 가 물리적인 I/O를 일으킵니다.


    데이타 파일의 특성은 다음과 같습니다.

    - 데이타 파일은 하나의 데이타베이스에만 관련 됩니다.
    - 데이타 파일은 데이타베이스의 영역이 모자랄 때 자동으로 확장할 수 있는 특성이 있습니다.
    - 하나 이상의 데이타 파일이 데이타베이스 저장 영역의 논리적 단위인 테이블스페이스를 형성합니다.

    데이타 파일 사용 : 데이타 파일의 데이타는 데이타베이스가 정상적으로 작동하는 동안 언제든지 읽을 수 있으며 Oracle의 메모리 캐시에 저장됩니다. 예를 들어, 사용자가 데이타베이스의 테이블에 있는 일부 데이타를 액세스하고자 할 때 요구한 정보가 메모리 캐시에 없다면 해당 데이타 파일에서 읽어 메모리에 저장할 수 있습니다.

    수정된 데이타나 새로운 데이타를 데이타 파일에 즉시 쓸 필요는 없습니다.
    디스크 액세스량을 줄이고 성능을 향상시키려면 데이타를 메모리에 저장했다가 적합한 데이타 파일에 한꺼번에 써야 하는데 이는 Oracle의 DBWn 백그라운드 프로세스가 결정 합니다.

  • 리두 로그 파일(Redo Log File)
    모든 Oracle 데이타베이스는 하나 이상의 리두 로그 파일 세트을 갖습니다. 리두 로그의 가장 중요한 기능은 모든 데이타베이스 변경 정보를 기록하는 일입니다. 모든 데이타베이스의 변경 사항은 리두 로그에 저장됩니다.

    만약 수정된 내용을 데이타 파일에 반영하는데 실패하더라도, 변경사항은 리두로그 파일에서 얻을 수 있기 때문에, 작업내용은 결코 유실되지 않습니다.
    리두 로그 파일은 데이타베이스를 장애로부터 보호하기 위해 필수적입니다.
    리두 로그 파일이 포함된 장애로부터 보호하기 위해, Oracle RDBMS는 복수개의 리두 로그 파일사용을 미러링 방식으로 허용합니다. 즉 두개 이상의 리두 로그 파일을 서로 다른 디스크에 둘 수 있습니다.

    리두 로그 파일이 포함된 장애로 부터 보호하기 위해, Oracle RDBMS는 복수개의 리두 로그 파일사용을 미러링 방식으로 허용합니다. 즉 두개 이상의 리두 로그 파일을 서로 다른 디스크에 둘 수 있습니다.

    리두 로그 파일안의 정보는 시스템이나 미디어 장애시 복구를 위해서만 사용됩니다.
    예를들어, 만일 이상 전압으로 인해 데이타베이스가 다운이 되었다면 메모리에 있던 데이타베이스 데이타는 데이타 파일에 미처 써지지 않았을 수도 있습니다. 그러나 잃어버린 데이타는 전원이 정상대로 공급되어 데이타베이스가 재기동 될 때 복구됩니다.

    Oracle RDBMS는 전원이 끊어질 때 최종의 리두 로그 파일로 데이타베이스의 데이타 파 일을 자동적으로 복구합니다.


    리두 로그 파일사용: 리두 로그 파일에 있는 정보는 데이타베이스 데이타가 데이타 파일에 기록될 수 없도록 하는 시스템 장애나 매체 고장으로부터 데이타베이스를 복구할 때만 사용됩니다.

    예를 들어, 예상치 않은 정전이 발생하면 데이타베이스가 작동을 갑자기 멈춰 메모리에 있는 데이타가 데이타 파일에 기록되지 못하므로 데이타가 손실됩니다. 그러나 전원이 들어오고 데이타베이스가 열리면 손실된 데이타를 모두 복구할 수 있습니다. Oracle은 가장 최근의 리두 로그 파일에 있는 정보를 데이타베이스의 데이타 파일에 적용하여 전원이 나가기 직전의 데이타베이스 상태로 복구합니다.

    복구 작업 동안 리두 로그를 적용하는 과정을 롤 포워드(Rolling Forward)라고 합니다.

  • 제어 파일(Control File)
    모든 Oracle 데이타베이스는 제어 파일을 가집니다. 제어 파일에는 데이타베이스의 물리적 구조를 지정하는 입력 항목이 있습니다. 예를 들어, 다음과 같은 정보가 있습니다.

    • 데이타베이스 이름
    • 데이타베이스의 데이타 파일과 리두 로그 파일의 이름 및 위치
    • 데이타베이스 생성 시간 (Time Stamp) 기록


    데이타베이스가 오픈될 때 마다, 제어 파일은 데이타 파일 처리를 위해 반드시 오픈 되어야 하며 데이타베이스 파일과 리두 로그 파일을 지정하기 위해 사용됩니다.

    만일 물리적인 데이타베이스 구성이 변경된다면 (즉, 새로운 데이타 파일이나 리두 로그 파일이 생성되는 경우), 제어 파일은 자동으로 Oracle RDBMS에 의해 변경된 내용이 수정됩니다. 또한, 데이타베이스 복구가 필요 할 때도 제어 파일이 사용됩니다.
    제어 파일을 장애로부터 보호하기 위해, Oracle RDBMS는 복수개의 제어 파일 사용을 미러링 방식으로 허용합니다. 즉 두개 이상의 제어 파일 복사본을 서로 다른 디스크에 둘 수 있습니다.

    제어 파일 사용 제어 파일은 Oracle 데이타베이스의 인스턴스가 시작될 때마다 데이타베이스와 데이타베이스 작업에 필요한 리두 로그 파일을 지정합니다. 새 데이타 파일이나 리두 로그 파일이 생성되는 경우와 같이 데이타베이스의 물리적 구성이 변경되면 Oracle은 변경 내용을 반영하기 위해 데이타베이스의 제어 파일을 자동으로 수정합니다.

지금까지 설명한 Database의 구조를 정리하면 다음과 같습니다. 논리적 구조와 물리적 구조의 관계도 잘 알아두시기 바랍니다.



3. 데이타 유틸리티

한 데이타베이스에서 다른 데이타베이스로 Oracle 데이타베이스의 일부를 이동하는 세가지 유틸리티(Export, Import, SQL*Loader)가 있습니다.

EXPORT
Export 유틸리티는 하드웨어와 소프트웨어 구성이 다른 플랫폼에 상주하는 Oracle 데이타베이스 간의 데이타 객체를 간단한 방법으로 전송할 수 있도록 합니다. Export 는 객체 정의와 테이블 데이타를 Oracle 데이타베이스에서 가져와 일반적으로 디스크나 테이프에 위치한 Oracle 이진 형식의 Export 덤프 파일에 저장합니다.

이 파일은 ftp로 복사되거나 파일이 테이프에 있는 경우 다른 사이트로 실제로 이동 될 수 있어 네트워크에 연결되지 않은 시스템에 있는 데이타베이스 사이에서 Import 유틸리티로 데이타를 전송하는데 사용되거나 일반 백업 프로시저에 추가하여 백업 파일로 사용될 수 있습니다.
Oracle 데이타베이스에 대해 Export를 실행하면 테이블과 같은 객체가 관련 객체(예를 들어. 인덱스, 주석 및 권한)와 함께 추출되고 Export 파일에 씁니다.

IMPORT
Import 유틸리티는 Export 유틸리티에 의해 Oracle 데이타베이스에서 추출되어 Export 덤프 파일에 저장된 데이타 객체를 다른 Oracle 데이타베이스에 삽입 합니다. Import는 Export 덤프 파일만 읽을 수 있습니다.

Import는 Export 유틸리티가 Oracle 데이타베이스에서 추출하여 일반적으로 디스크나 테이프에 있는 이진 형식의 Oracle Export 덤프 파일에 저장된 객체 정의와 테이프 데이타를 읽어 들입니다.

Export 및 Import 유틸리티는 오프라인 인스턴스화와 같은 Oracle Advanced Replication 기능의 특징 부분을 쉽게 만들어 줄 수도 있습니다.

SQL*Loader
Oracle Import 유틸리티는 Export 덤프 파일만 읽을 수 있습니다.
ASCII 고정 형식이나 구분된 파일에서 로드된 데이타를 읽어야 하는 경우 SQL*Loader 유틸리티를 사용할 수 있습니다. SQL*Loader는 외부 파일에서 Oracle 데이타베이스에 있는 테이블로 데이타를 로드합니다. SQL*Loader는 다양한 형식의 입력 데이타를 받아들이고 필터링(데이타 값에 준하는 레코드를 선택적으로 로드함)을 수행할 수 있으며 동일 로드 세션에서 여러 Oracle 데이타베이스 테이블로 데이타를 로드할 수 있습니다.


4. Oracle Instance
데이타베이스가 시작될 때마다 시스템 글로벌 영역(SGA)이 할당되고 Oracle 백그라운 프로세스가 시작됩니다. 시스템 글로벌 영역은 데이타베이스 사용자가 공유하는 데이타베이스 정보에 사용되는 메모리 영역입니다. 백그라운드 프로세스와 메모리 버퍼의 조합을 Oracle 인스턴스라고 합니다.

Oracle 인스턴스에는 사용자 프로세스와 Oracle 프로세스 유형이 있습니다.

  • 사용자 프로세스는 Oracle Forms 응용 프로그램 같은 응용 프로그램이나 Oracle Enterprise Manager 같은 Oracle Tool의 코드를 실행합니다.
  • Oracle 프로세스는 사용자 프로세스에 대한 작업을 수행하는 서버 프로세스와 Oracle 서버에 대한 작업을 유지 관리하는 백그라운드 프로세스입니다.


메모리 구조와 프로세스 구조

Oracle 서버가 데이타베이스를 관리하는데 사용하는 메모리와 프로세스 구조에 대한 설명이며, 모든 메모리 구조는 데이타베이스 시스템을 구성하는 컴퓨터의 주 메모리에 있습니다.
아울러, 프로세스는 컴퓨터의 메모리에서 작동하는 작업입니다
.

그러면 각각의 구성요소에 대해 살펴보겠습니다.

1. 메모리 구조

Oracle은 일부 작업을 끝내기 위해 메모리 구조를 생성하여 사용합니다. 예를 들어, 메모리는 실행 중인 프로그램 코드를 저장하고 사용자들이 공유하는 데이타도 저장합니다. Oracle과 관련된 몇 개의 기본 메모리 구조는 시스템 글로벌 영역(System Global Area: SGA) 과 프로그램 글로벌 영역(Program Global Area: PGA)이 있습니다.

  • 시스템 글로벌 영역 (System Global Area: SGA)

    시스템 글로벌 영역(SGA)은 한 Oracle의 인스턴스에 대한 데이타와 제어 정보를 가지는 공유 메모리 영역입니다. 시스템 글로벌 영역과 Oracle 백그라운드 프로세스가 Oracle 인스턴스를 구축합니다.
    Oracle 인스턴스가 시작될 때 시스템 글로벌 영역을 할당하고 인스턴스가 종료하면 할당을 해제합니다. 각 인스턴스는 고유 시스템 글로벌 영역을 가집니다.

    Oracle 서버를 동시에 사용하고 있는 사용자는 시스템 글로벌 영역의 데이타를 공유 합니다. 전체 시스템 글로벌 영역을 실제 메모리 크기가 허용하는 범위에서 가장 크게 잡으면 디스크 I/O를 줄이고 메모리에 가능한 많은 데이타를 저장할 수 있으므로 최적의 성능을 낼 수 있습니다.

    이 시스템 글로벌 영역에서 저장된 정보는 데이타베이스 버퍼, 리두 로그 버퍼, 공유 풀 같은 여러 형태의 메모리 구조로 나누어집니다. 이러한 SGA의 전체 크기는 고정되며, 인스턴스가 시작될 때 생성됩니다.

     

    • 데이타베이스 버퍼
      SGA 의 데이타베이스 버퍼는 가장 최근에 사용된 데이타 블럭을 저장합니다.
      이 버퍼는 아직까지 디스크에 완전히 쓰여지지 않는 수정된 데이타를 보유할 수도 있습니다. LRU 알고리즘에 의하여 가장 오래전에 사용된 것은 디스크에 저장하고 메모리에는 가장 최근에 사용된 데이타를 저장 하므로써, 디스크 입출력이 줄어 들고, 따라서 데이타베이스 시스템의 성능은 증가 됩니다.
      인스턴스와 SGA 가 생성될 때, 인스턴스가 시작시에 명시된 크기의 데이타베이스 버퍼 들이 만들어 집니다. 이 버퍼들은 인스턴스가 남아 있는 한 계속 존재합니다.

    • 리두 로그 버퍼
      SGA의 리두 로그 버퍼는 데이타베이스에 가해진 변화를 기록하는 변경 항목을 저장 합니다. 리두 로그 버퍼에 저장된 리두 항목들은 데이타베이스 복구에 사용되는 온라인 리두 로그 파일에 저장됩니다.
      데이타베이스 버퍼 처럼 리두 로그 버퍼도 처음 인스턴스 시작시에 생성되어 인스턴스가 남아 있는 동안은 그 수량의 변화는 없습니다.

    • 공유 SQL 풀
      공유 SQL 풀은 공유 SQL 영역과 같은 공유 메모리 구조를 포함하는 SGA에 있는 한 구역입니다.
      공유 SQL 구역은 하나의 데이타베이스에 행해지는 모든 SQL 문을 처리하기 위하여 사용 됩니다.

      공유 SQL 구역에는 문장을 실행하기 위해 그 문장과 관련된 실행 계획과 구문분석 정보가 들어 있습니다.

      하나의 공유 SQL 영역은 다수의 애플리케이션에 의해 사용되므로 보다 많은 공유 메모리를 다른 용도로 사용될 수 있게 됩니다.

       

    • 대용량 풀
      대용량 풀은 Oracle 백업 및 복원 작업에 대한 대용량 메모리 할당, I/O 서버 프로세스 및 다중 스레드 서버와 Oracle XA에 대한 세션 메모리를 제공하는 SGA의 선택적인 영역입니다.

    • 명령문 핸들 또는 커서
      커서는 특정 명령문과 관련된 메모리에 대한 핸들(이름이나 포인터) 입니다. (Oracle Call Interface:OCI 는 이러한 사항을 명령문 핸들로 참조 바랍니다.) 대부분의 Oracle 사용자는 Oracle 유틸리티의 자동 커서 처리기를 사용하지만 프로그램적 인터페이스는 응용 프로그램 설계자에게 커서를 보다 자유롭게 제어 할 수 있는 기능을 제공합니다.

      예를 들어, 선행 컴파일러 응용 프로그램 개발에서 커서는 프로그램에서 사용할 수 있는 명명된 자원이며 특히 응용 프로그램에 내포된 SQL문의 구문 분석에 사용될 수 있습니다. 응용 프로그램 개발자는 SQL 문의 실행 단계를 제어하여 응용 프로그램 성능이 향상되도록 응용 프로그램을 코딩할 수 있습니다.

  • 프로그램 글로벌 영역(Program Global Area: PGA)
    PGA는 단일 프로세스(서버나 백그라운드)에 대한 데이타와 제어 정보를 저장하는 메모리 영역입니다. 따라서 PGA를 “프로그램 글로벌 영역” 또는 “프로세스 글로벌 영역” 이라고 합니다.

    운영 체제와 구성에 따라 다르지만 사용자 프로세스가 Oracle 데이타베이스에 접속되고 세션이 생성되면 Oracle이 PGA를 할당합니다.

    PGA에 있는 정보는 공유 서버와 단독 서버 구성 등 Oracle 구성에 따라 결정됩니다.




    • 스택 영역
      PGA 는 세션 변수, 배열 및 다른 정보를 저장하기 위해 할당된 메모리인 스택 영역을 포함합니다.

    • 세션 정보
      전용 서버로 실행되는 인스턴스의 PGA는 전용 SQL 영역이나 다른 정보와 같은 사용자 세션에 대한 추가 메모리가 필요합니다. 인스턴스가 공유 서버를 실행하는 경우 이 추가 메모리는 PGA에 있지 않고 SGA 내에 할당됩니다.

    • 공유 SQL 영역
      공유 서버와 함께 수행되는 지의 여부에 관계없이 공유 SQL 영역은 항상 PGA가 아닌 SGA의 공유 메모리 영역에 존재합니다.

2. 프로세스 구조

프로세스는 “제어 스레드” 또는 운영 체제가 일련의 단계를 실행하는 처리 방법입니다. 일부 운영 체제는 작업이라는 용어를 사용합니다. 프로세스는 대개 자신이 실행되는 고유 메모리 영역을 가집니다.
Oracle 서버에는 사용자 프로세스와 Oralce 프로세스가 있습니다.

 

3. 사용자(클라이언트) 프로세스

사용자 프로세스는 Pro*C/C++ 프로그램과 같은 응용 프로그램이나 Oracle Enterprise Manager와 같은 Oracle 도구를 실행하기 위해 생성되고 유지 관리됩니다. 또한 사용자 프로세스는 서버 프로세스와의 통신을 관리합니다.
사용자 프로세스는 나중에 프로그램 인터페이스를 통해 서버 프로세스와 통신합니다.

 

Oracle 프로세스

Oracle 프로세스는 다른 프로세스에 의해 호출되어 호출 프로세스를 대신해서 기능을 수행합니다

1. 서버 프로세스

Oracle은 서버프로세스를 생성하여 접속된 사용자 프로세스의 요구 사항을 처리합니다. 서버 프로세스는 사용자 프로세스와의 통신과 사용자 프로세스의 요구 사항을 수행하는 Oracle과의 상호 작용을 담당합니다. 예를 들어, 사용자가 시스템 글로벌 영역의 데이타 베이스 버퍼에 없는 데이타에 의해 질의하면 관련 서버 프로세스는 데이타 파일로부터 해당 데이타 블록을 시스템 글로벌 영역으로 읽어 들입니다.

Oracle은 서버 프로세스당 사용자 프로세스 수를 조정하도록 구성될 수 있습니다. 전용 서버 구성에서 서버 프로세스는 단일 사용자 프로세스에 대한 요구 사항을 처리합니다. 공유 서버 구성에서는 여러 개의 사용자 프로세스가 적은 수의 서버 프로세스를 공유하여 서버 프로세스 수를 최소화하는 동시에 사용 가능한 시스템 자원 활용도를 최대화합니다.

일부 시스템에서는 사용자 프로세스와 서버 프로세스가 분리되는 반면 다른 시스템 에서는 단일 프로세스로 결합됩니다. 시스템이 공유 서버를 사용하거나 사용자 프로세스와 서버 프로세스가 서로 다른 시스템에서 실행되면 사용자 프로세스와 서버 프로세스는 분리되어야 합니다. 클라이언트/서버 시스템은 사용자 프로세스와 서버 프로세스를 분리하여 서로 다른 시스템에서 실행합니다.

     

2. 백그라운드 프로세스

Oracle은 각 인스턴스에 대해 일련의 백그라운드 프로세스를 생성합니다. 이 프로세스 들은 여러 Oracle 프로그램이 실행해야 하는 기능을 통합합니다. 기능을 통합하지 않는 다면 각 사용자 프로세스마다 여러 개의 Oracle 프로그램을 실행해야 합니다. 보다 나은 성능과 신뢰성을 위해 백그라운드 프로세스는 비동기적으로 I/O를 수행하고 다른 Oracle 프로세스를 모니터하여 향상된 병렬 기법을 제공합니다.

SGA와 Oracle 백그라운드 프로세스는 Oracle 인스턴스를 구성합니다. Oracle 인스턴스는 다음과 같은 후방 프로세스들을 포함합니다.

    - DBWR, LGWR, CKPT, SMON, PMON, ARCH, Dnnn, Snnn
    - RECO, LCKn 등은 옵션 사용시 추가


  • 데이타베이스 기록자 (DBWR)

    DBWR 는 데이타베이스 버퍼 캐쉬로 부터 데이타 파일로 수정된 블럭를 씁니다. Oracle의 로깅 방법 때문에 트랜잭션이 완료 되었을 때 블럭들을 디스크에 쓸 필요가 없도록 DBWR 의 수행 방법은 최적화 되어 있습니다.

    보통 데이타베이스 버퍼의 빈공간이 거의 없는 상태에서 SGA 로 데이타를 읽어 들일 필요가 있을 때 메모리 공간을 확보하기 위해서 수정된 블럭에 대한 디스크 쓰기가 행해집니다. 최근에 사용되지 않은 데이타 블럭부터 디스크에 쓰여지는 LRU 알고리즘을 사용합니다.

  • 로그 기록자 (LGWR)

    LGWR 은 리두 로그 항목들을 디스크에 씁니다.
    리두 로그 데이타는 SGA 의 리두 로그 버퍼에 생겨나며, 트랜잭션이 완료되었을 때 LGWR가 리두 로그 버퍼의 내용을 온라인 리두 로그 파일에 씁니다.

  • 체크포인트(CKPT)

    일정 간격으로 SGA 의 모든 수정된 데이타베이스 버퍼는 DBWR 에 의해 데이타 파일에 쓰여지는데 이것을 검사점 (Checkpoint)이라 합니다.

    검사점 프로세스는 검사점 실시 시점에서 DBWR 에 신호를 보내고 데이타베이스의 모든 데이타 파일과 콘트롤 파일을 수정하여 최근의 검사점을 기록합니다.

  • 시스템 모니터(SMON)

    SMON 은 인스턴스 시작시와 다중 인스턴스 시스템에서 장애가 발생한 인스턴스 복구시에 실행됩니다.

    또, SMON 은 더 이상 사용되지 않는 세그먼트를 정리하고 파일 읽기 및 오프라인 에러에 의해 생기는 인스턴스의 복구시에 완료되지 못하고 사장된 트랜잭션 들을 복구합니다.

  • 프로세스 모니터 (PMON)

    PMON 은 사용자 프로세스가 실패 했을 때 프로세스 복구를 수행합니다.
    PMON 은 실패한 사용자 프로세스가 점유하고 있던 자원을 반납하고 캐쉬를 정리합니다.

  • 아카이버 (ARCH)

    ARCH 는 온라인 리두 로그 파일이 꽉 찼을때 리두 로그 파일이 스위치 되면서 사용한 리두 로그 파일을 아카이브 저장소로 복사합니다.

    아카이브 저장소는 일반적으로 다른 디스크 저장공간 이거나 테이프 장치 입니다.
    ARCH 는 데이타베이스의 리두 로그가 ARCHIVELOG 모드일 때 만 수행됩니다.

  • 복구자 (RECO)

    RECO는 분산 데이타베이스에서 네트워크 또는 시스템 장애로 미결정 (Pending)된 분산 트랜잭션을 처리하기 위해 사용됩니다.

    로컬 RECO 는 정해진 시간마다 리모트 데이타베이스에 연결을 시도해 보고, 자동으로 로컬내의 미결정된 트랜잭션을 커밋 하거나 롤백 시킵니다.

  • 디스패처 (Dnnn)

    Dnnn 은 멀티-스레드 서버 구성하에서만 수행됩니다.
    하나의 Dnnn 은 사용되는 각각의 통신 프로토콜에 대하여 생성됩니다.
    (D000, D001, ..., Dnnn)

    Dnnn 은 연결된 사용자 프로세스로 부터 사용 가능한 공유 서버를 배정하는 경로 설정 (Routing) 요구를 처리하고 서버의 처리 결과를 해당 사용자 프로세스에게 되돌려 줍니다.

  • 잠금 (LCKn)

    최대 10개의 잠금 프로세스가 Oracle Parallel Server 에서 사용될 때 인스턴스 사이의 록킹을 수행하기 위해 사용됩니다.

  • 작업 대기열 (SNPn)

    분산 데이타베이스를 구성하면 최대 36개의 작업 대기열 프로세스(SNP0, … SNP9, SNPA, … SNPZ)가 테이블 스냅샷을 자동으로 재생할 수 있습니다. 이 프로세스는 주기적으로 작동하고 자동으로 재생되도록 일정이 잡힌 스냅샷을 재생합니다. 하나 이상의 작업 대기열 프로세스가 사용된 경우 프로세스는 스냅샷 재생 작업을 공유 합니다. 또한 이 프로세스는 DBMS_JOB 패키지에 의해 작성된 작업 요청을 실행할 수 있고 대기 메시지를 다른 데이타베이스의 대기열로 전달합니다.

  • 대기열 모니터(QMNn)

    대기열 모니터는 Oracle Advanced Queuing(Oracle AQ)에 대한 메시지 대기열을 모니터하는 선택적 백그라운드 프로세스입니다. 최대 10개 의 대기열 모니터 프로세스를 구성할 수 있습니다.

통신 소프트웨어와 Oracle Net Service

사용자와 서버 프로세스가 네트워크 상의 다른 컴퓨터에 있거나 사용자 프로세스가 디스패처 프로세스를 통해 공유 서버 프로세스로 접속된 경우 사용자 프로세스와 서버 프로세스는 Oracle Net Service를 사용하여 통신합니다. 디스패처는 선택적 백그라운드 프로세스로 공유 서버 구성에서만 나타납니다. Oracle Net Service는 컴퓨터 간의 적합한 데이타 전송을 위한 표준 통신 프로토콜에 대한 Oracle 인터페이스 입니다.

프로그램 인터페이스

프로그램 인터페이스는 사용자 프로세스가 서버 프로세스와 통신하는 기법입니다. 모든 클라이언트 도구나 Oracle Forms 같은 응용 프로그램과 Oracle 소프트웨어 간 표준 통신 방법을 제공하며 기능은 다음과 같습니다.

  • 데이타 요구 사항을 포맷하고 데이타를 전달, 오류를 트랩하여 알려주는 등의 통신 기법입니다.
  • 서로 다른 컴퓨터 간 또는 외부 사용자 프로그램에 있는 데이타 유형 간 데이타 통신 및 변환을 수행합니다.

네트워크

네트워크는 Oracle이 제공하는 네트워크 관련 제품을 통칭합니다. 즉 하나의 제품을 가리키는 것이 아니라 서로 연관된 제품을 군으로 표현하는 말입니다.

  • OSI 모델에서 본 네트워크
    OSI 모델의 용어로 네트워크 소프트웨어는 일반적으로 제 5 계층과 제 6 계층에 대응되며 네트워크 통신 소프트웨어의 제 4 계층 이하에 대한 인터페이스를 제공합니다. 그러므로 제 4계층 이하에 있는 계층은 네트워크에서는 보이지 않습니다.
    네트워크는 표준 프로토콜과 API 를 지원하는 대부분의 운영 체계를 지원합니다. 네트워크 하드웨어와 소프트웨어의 독립성은 다양한 프로토콜 환경에서 Oracle이 작동할 수 있는 기반이 됩니다.




  • Oracle Net Service
    Oracle Net Service 드라이버 등은 Oracle 서버상에서 실행되는 Oracle RDBMS프로세스와 네트웍의 다른 컴퓨터에서 구동되는 Oracle Tool의 클라이언트 프로세스간의 인터페이스를 제공합니다.

    이러한 드라이버들은 Oracle Tool의 인터페이스로부터 SQL문장을 받아서 Oracle 서버로 전송하기 위해 데이타들을 일정한 형태로 묶어 줍니다. 또한 데이타베이스로부터 응답을 받아 동일한 고 수준 통신 매커니즘을 통해 Tool로 전송하기 위해 묶기도 합니다.
    이러한 모든 작업은 네트웍 운영 체계와는 독립적으로 이루어집니다.

    Oracle 서버의 Oracle Net Service 소프트웨어는 드라이버 소프트웨어와 네트웍 리스너 (NLSN) 백그라운드 프로세서를 포함하고 있는데 리스너는 클라이언트 애플리케이션이나 분산 데이타베이스 환경하의 다른 Oracle 서버로 부터의 접속 요구에 대한 네트웍을 감시합니다.

    리스너가 접속 요구를 받았을 때 서버상에 필요한 프로세스가 생성되며 접속된 클라이언트 프로세스를 가진 모든 통신 기능이 수행됩니다. Oracle Net Service는 통신을 하기위해 클라이언트와 서버 양쪽에서 사용되어야 합니다.


    Oracle Net Service의 작동 원리

    • User Programmatic Interface(UPI)

      UPI는 제품이 아니라, 클라이언트 응용프로그램을 개발하기 위해서 필요한 응용 프로그램 인터페이스로 표현할 수 있는 계층입니다.

      UPI는 서버와 클라이언트 사이에서 서로 SQL를 이해하도록 만드는 인터페이스입니다.
      UPI 계층은 OCI를 이용해서 개발되었습니다.

      UPI 계층은 서버에서 되돌아오는 데이타 집합을 관리하는 버퍼를 관리하고, 만약 클라이언트 버퍼가 작은 경우에 원하는 데이타를 모두 받기 위해 필요한 라운드 트립을 진행합니다.

    • Two-Task Common

      클라이언트와 서버사이에 문자 셀의 상이함이나 2 Byte로 구성된 언어와 그렇지 않은 언어사이에 생기는 문제등과 같이 분산환경에서 생기는 문제를 해결하는 계층입니다.


    • Oracle Net Service

    TNS 계층을 지나온 것 중 서버에서 접속하거나 끊고자 하는 요구를 처리하는 계층입니다.
    연결시에는 사용자명, 패스워드, 서비스 이름을 이용하여 연결합니다.

    COMMIT WORK RELEASE, ROLLBACK WORK RELEASE를 만나거나, 현재 세션에서 명시적으로 접속을 끊지 않고, 새로운 사용자로 접속하거나 클라이언트가 비정상적으로 종료할 경우에 필요한 작업을 자동적으로 처리합니다.

    클라이언트와 서버가 데이타를 주고 받을 때 동기적인 방식 뿐만이 아니라 비동기적인 메세지 전달도 가능합니다.

    네트워크 상에서 일어나는 각종 예외 상황이나 브레이크 처리도 제공합니다.

     

 

[Top]
No.
제목
작성자
작성일
조회
20246Index rebuild에 관련된 잘못된 미신들 [2]
김주현
2004-10-04
33088
18994오라클 제품과 플랫폼의 인증된 조합
김주현
2004-06-19
15657
18684Oracle Enterprise Manager(이하 OEM)에서 Language를 영어로 설정하기 [1]
김주현
2004-05-28
16488
18044초보자를 위한 오라클 강좌
정재익
2004-04-05
59512
18033Running Oracle Installation on Red Hat Enterprise Linux Advanced Server 3
정재익
2004-04-03
19300
17933Changing Oracle9i Database Language
정재익
2004-03-26
15560
17931오라클에서 PL/SQL 의 예외처리
정재익
2004-03-26
18275
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.462초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다