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 11465 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 11465
오라클 강좌 (1)
작성자
정재익(advance)
작성일
2002-07-25 09:58
조회수
18,772
첨부파일: oracle1.zip (47,850bytes)

원본출처 : http://www.sqler.pe.kr/o_lec/main.asp

 

오라클 이야기

 

1. 오라클의 흐름

 

이번에는 오라클이라는 이름만 들어 보았던 이 DBMS가 어떻게 발전되어 왔는지 그 흐름에 대해서 알아 보겠습니다.

 

물론 이해를 하시거나 이걸 반드시 아셔야 할 필요는 없습니다. ^_^;;

오라클 DBMS의 기능들을 보실 수 있겠지요...

그러려니 하고 보시길 바랍니다. ^_^

 

오라클의 역사.

 

1977년 Larry Elison, Bob Miner 와 ED Oates가 RSI(Relational Software Incorporated) 라는 회사를 설립함.

제가 두살때 회사를 맹겄 더군요.. ^_^;;; 전 두살때 뭐했는지... T.T;;

래리 앨리슨이란 사람은 많은 분들이 들어 보셨을 겁니다.. 창립 멤버지요.. ^_^

 

1979년 C, SQL 인터페이스를 사용하여 RDBMS개발함.

RDBMS 버젼 2는 RSX-11 OS 구동 Digital PDP-1 에서 작동.

DEC VAX에 바로 포팅되어 사용됨.

 

1983년 버젼 3 출시 RSI의 이름을 Oracle Corporation 이라는 이름으로 바뀜.

32 비트 모드에서 운영되는 최초의 데이타베이스

 

1984년 버젼 4 출시 Read consistency 를 지원하는 첫 DBMS 개발.

 

1985년 버젼 5 출시 SQL*NET 사용하는 C/S 환경을 소개함.

아울러 MS-DOS용으로 포팅됨.

 

1988년 버젼 6 출시 로우레벨 Locking 소개.

DEC 플랫폼 상에 Parallel Server Option을 6.1에서 소개함.

곧 병렬 서버 옵션이 다른 시스템으로 포팅이됨.

SMP를 지원함.

 

1992년 버젼 7 출시 메모리 영역, CPU , I/O 의 구조적인 변화 이루어짐.

SQL*DBA 툴과 롤의 개념 등 사용자 인터페이스 부분에서 많은 진보가 이루어짐.

거의 대부분의 RDBMS의 모체로 인정받음.

 

1997년 객체 확장을 첨가한 오라클 8 소개.

 

1999년 오라클 8i 개발

확장된 자바 VM과 DB서버를 통합함.

자바 코드로 SQL을 내장시키기 위한 구문인 SQLJ 지원함.

오라클 web-db 기능 추가됨.

Oracle iFS(Internet File System) 기능.

고급 데이터웨어 하우스 기능과 OLAP툴과의 연계성 강화.

자원 관리 기능과 자원 제어력 기능 향상.

테이블 분할 기능 추가.

스탠바이 데이터베이스 시스템 자동화.

 

저희가 스터디할 부분인 오라클 8i인데요...

개발된 부분에대해 봐 두시면 어떤걸 봐 나갈지 감이 잡히실 겁니다.

 

그럼 다음으로는 오라클 구조에 대해 조금 깊이 봐 보도록 하지요.

 

 

2. 오라클 구조에 대한 이해.

 

이번에 해드릴 얘기는 오라클의 구조에 대한 이야기 입니다.

오라클의 특징이라면 특징이겠지요..

그럼 내용을 보시지요.

 

오라클의 구조는 RDBMS의 기본적인 데이터베이스(정보의 측면)과 인스턴스(시스템) 으로 구분된다.

 

1) 데이터베이스

 

이는 논리적인 층과 물리적인 층을 가지고 있다.

물리적인층 - 디스크상의 화일로 구성됨.

논리적인층 - 데이터를 물리적인 층과 매핑함.

 

1> 물리적인 층

 

- 하나 이상의 데이터 화일.

 

데이터베이스에서 저장된 정보를 저장함. 하나 이상의 데이터 화일로 구성된다.

 

- 두개 이상의 Redo 로그 화일.

 

Redo 로그 화일은 시스템 장애시 복구를 위해 사용되는 정보를 가진다.

아울러 Redo 로그 화일은 데이터베이스에 만들어진 모든 변화의 로그를 저장한다.

즉. 커밋은 되었으나 데이터화일에는 정의되지 않은 데이터가 쓰여지므로..

완전한 데이터베이스 복구를 위해 반드시 필요하다.

 

- 하나 이상의 컨트롤 화일.

 

Redo 로그 화일의 위치 등의 인스턴스 시작에 적용되는 정보를 포함한다.

 

2> 논리적인 층.

 

하나 이상의 테이블 스페이스로 이루어지며 테이블, 클러스터, 뷰, 내장 프로시져, 트리거, 시퀀스 등의 아이템으로 구성되는 데이터베이스 스키마 이다.

 

 

그림 - 데이터베이스, 테이블 스페이스, 데이터 화일 사이의 관계.

 

1.데이터베이스는 테이블스페이스 라는 하나이상의 논리적 조각으로 분리되어 있다.

 

2.테이블 스페이스는 하나 이상의 데이터 화일로 구성된다.

 

여러개의 데이터화일을 사용시 디스크 I/O를 줄이고 성능을 향상 시킬 수 있다.

 

  데이터베이스 스키마 : 이는 스키마 객체라고 불리는 논리적 구조 객체의 집합이다.

 

이는 데이터베이스의 데이터를 어떻게 볼 것인지를 정의한다.

 

테이블 : 테이블명, 로우, 컬럼으로 구성되며 기본적인 논리적 저장 단위이다.

 

클러스터 : 공통적인 컬럼을 공유하는 하나의 테이블로 물리적으로 저장되는 테이블의 집합이다.

 

인덱스 : 데이터를 더 빠르고 효과적으로 가져오기 위해 생성된 구조이다.

 

뷰 : 하나 이상의 테이블에 대한 투영본이다.

 

내장 프로시져 : 데이터 딕셔너리에 미리 정의된 SQL쿼리이다.

 

트리거 : 이벤트 발생시 자동으로 구동되는 프로시져 이다.

 

시퀀스 : 시퀀스 생성자로 캐시에서 유일한 시퀀스 값을 자동으로 생성하기 위해 사용하며 이 시퀀스 생성자를 사용해 시퀀스의 마지막 값을 가진 레코드의 잠김이나 새로운 값의 생성,

 

그리고 레코드의 풀림 같은 시퀀스를 생성하기 위해 필요한 단계를 피할 수 있다.

 

세그먼트, Extents , 블록

 

데이터 블록 - 하나의 블록은 오라클 데이터베이스에서 저장의 최소 단위이다.

 

*이 데이터베이스 블록은 데이터와 블록 자체에 관련된 헤더 정보를 가진다.

 

Extents - 이는 데이터 블록으로 구성된다.

 

*이는 세그먼트를 생성하는 블록이다.

 

*테이블 생성시 한번에 더해지는 Extents의 수뿐 아니라 할당하기 위한 Extents의 최소 수를 정의할 수 있다.

즉, 데이터베이스에서 사용되는 공간에 대한 효율적인 조장을 할 수 있도록 한다.

 

세그먼트 - 하나의 세그먼트는 특정 타입의 데이터를 저장하기위한 Extent의 집합이다.

 

*데이터 세그먼트 : 데이터베이스내의 사용자 데이터를 저장한다.

 

*인덱스 세그먼트 : 인덱스를 저장한다.

 

*롤백 세그먼트 : 데이터가 롤백 되어야 할 때 사용되는 롤백 정보를 저장한다.

 

*임시 세그먼트 : SQL문이 임시의 작업 공간을 필요로 할 때 생성된다.

 

이 세그먼트는 SQL문이 종료되면 사라진다.

 

이 세그먼트는 소팅과 같은 다양한 데이터베이스 작업동안 사용된다.

 

2) 인스턴스

 

이는 데이터베이스에서 정보를 액세스 하기 p; 이는 데이터베이스에서 정보를 액세스 하기 위해 필요한 오라클 프로세스와 공유 메모리로 구성되어 있다. 이 인스턴스는 사용자 프로세스, 백그라운드 프로세스, 프로세스들이 사용하는 공유 메모리로 구성된다.

 

1> 오라클의 메모리 구조.

 

오라클이 사용하는 공유 메모리의 구조는 SGA(System Global Area)와 PGA(Program Global Area)로 나뉩니다.

 

시스템 글로벌 영역(SGA)

 

SGA는 오라클 인스턴스에 대한 컨트롤 정보를 저장하는 메모리 영역이다. SGA는 오라클 인스턴스가 시작될 때 할당되며 오라클 인스턴스가 사라질 때 없어진다.

 

*데이터베이스 버퍼 캐시 : 이는 가장 최근에 사용된 데이터 블록을 저장한다.

 

이 블럭은 아직 디스크로 쓰여지지 않은 (Dirty Block)수정된 블록, 수정되지 않은 블록, 수정후 디스크로 쓰여지고 있는 블록(clean buffer)을 포함할 수 있다. 버퍼 캐시는 가장 활동적인 버퍼가 I/O를 줄이고 성능을 향상시키기 위해 메모리에 저장되어 있다.

 

*Redo 로그 버퍼 : 이것은 Redo 엔트리, 데이터베에 만들어진 변화의 로그를 저장한다.

 

Redo 로그 버퍼는 가능한 빠르고 효율적인 Redo 로그로 쓰여진다. Redo 로그는 시스템 장애시 인스턴스의 복구에 사용된다.

 

*공유 풀(Shared Pool) : 이는 라이브러리 캐시와 데이터 딕셔너리의 내부 정보의 공유 SQL 영역 같은공유 메모리 구조를 저장하는 SGA의 영역이다. 공유 풀은 공유풀에 할당된 메모리의 양이 불충분 하다면 성능의 저하를 일으킬 수 있기 때문에 중요하다.

 

**라이브러리 캐시 : 이는 공유 SQL을 저장하기 위해 사용된다.

 

여기서 각각의 SQL문에 대한 파스트리(parse tree)와 실행 계획(execution plan)은 캐싱된다. 만약 여러 어플리케이션이 같은 SQL문을 부른다면 파싱과 실행 계획에 사용되는 프로세싱 시간을 줄이고 필요한 메모리의 양을 감소하기 위해 각각 액세스 될 수 있다.

 

**데이터 딕셔너리 캐시 : 데이터 딕셔너리는 데이터베이스에 대한 참조로서 오라클이 사용하는 테이블과 뷰를 포함한다.

 

***사용자 권한 정보

 

***데이터베이스에서 테이블에 대해 정의된 제약 조건

 

***데이터베이스에서 모든 컬럼의 이름과 데이터 타입

 

***스키마 객체를 위해 할당되고 사용되는 공간에 대한 정보.

 

 

프로그램 글로벌 영역(PGA)

 

PGA는 오라클 서버 프로세스에 대한 데이터와 컨트롤 정보를 포함하는 메모리 영역이다.

 

*스택공간 : 이는 세션의 변수 값, 어레이 등을 가진 메모리이다.

 

*세션정보 : 멀티스레드 서버를 구동하지 않는다면 세션의 정보는 PGA에 저장된다. 만약 멀티스레드 서버를 구동한다면 세션 정보는 SGA에 저장된다.

 

*Private SQL 영역 : 바인딩 변수와 같은 정보와 런타임 버퍼가 유지되는 PGA의 영역이다.

 

 

2> 오라클의 프로세스(작업의 실행을 위한 기능).

 

*사용자 프로세스 : 사용자의 입력을 다루고 오라클 프로그램 인터페이스를 통해 오라클 서버 프로세스와 통신합니다. 즉, 사용자가 요청한 정보를 디스플레이하기 위해 사용되고, 필요시 이 정보를 더욱 유용한 형태로 프로세싱 할 수 있습니다.

 

*오라클 프로세스 : 사용자를 위한 기능을 수행하는 프로세스. 서버 프로세스(프로세스를 구동하기 위한 기능을 수행)와 라운드 프로세스(전체 DBMS의 나머지 기능을 수행)입니다.

 

**서버 프로세스 : Shadow Process라고도 불리며 사용자와 통신을 하고 사용자의 요청을 운반하기위해 오라클과 통신합니다.

 

**백그라운드 프로세스 : DBMS와여러가지 작업을 수행하기 위해 사용된다. 다른 오라클 인스턴스와 통신을 하고 시스템 유지 작업을 수행하며 dirty 버퍼를 디스크로 쓰기 위해 청소를 하는 등의 일을 한다.

 

***DBWR(Database Writer) - 이는 데이터베이스 블록의 dirty 데이터 블록을 디스크로 쓰는 작업을 맡는다.

 

어떠한 작업의 트랜젝션이 데이터 블록에서 데이터를 변화 시킬때 이 데이터블럭이 바로 디스크로 쓰여질 필요는 없다... 즉. DBWR은 대개 데이터베이스 블록 버퍼가 데이터가 읽혀질 필요가 있을 때만 쓰기를 한다.

 

***LGWR(Log Writer) - 이는 로그 버퍼에서 Redo 로그를 데이터로 쓰게하는 작업을 한다.

 

***CKPT(Check Point) - 이는 DBWR 프로세스가 가장 최근의 변경된 데이터베이스에 대해 데이터파일과 컨트롤 화일을 수정하도록 신호를 보내는 임무를 가지고 있다.

 

***PMON(Process Monitor) - 이는 데이터베이스 프로세스를 유지하고 프로세스가 영구히 죽을때 제거하는 작업을 한다.... 또한 PMON은 실패한 모든 프로세스를 재시작해준다.

 

***SMON(System Monitor) - 이는 인스턴스 시작시 인스턴스 복구를 수행한다. 이는 임시 세그먼트를 청소하고 시스템 장애로 인하여 죽은 트랜젝션을 복구하는 것을 포함한다.

 

***RECO(Recovery) - RECO는 분산 데이터베이스에 걸려있는(pending) 트랜젝션을 청소한다. 즉 RECO는 끊긴 트랜젝션의 해당 지역을 커밋하거나 롤백할 의무가 있다.

 

***ARCH(Archiver) - 이는 온라인 Redo 로그 화일이 가득 찼을 때 이 파일을 아카이브 공간으로 복사한다.

 

DBMS가 ARCHIVELOG 모드에서 동작될 때에만 활동하며 시스템이 ARCHIVELOG 모드에서 동작하지 않을 때 시스템 장애 후에 복구를 할 수 없게 될 수도 있다.

 

***LCKn(Paralled Server Lock) - 10개의 LCK 프로세스 까지 오라클 병렬 서버 옵션이 사용될 때 인스턴스간의 잠김을 위해 사용된다.

 

***Dnnn(Dispatcher) - 멀티 스레드 서버 옵션이 사용될 때, 최소한 하나의 디스패쳐 프로세스가 사용중인 모든 통신 프로토콜을 위해 사용된다. 이 디스패쳐 프로세스는 사용자 프로세스에서 사용 가능한 공유 서버 프로세스로, 또한 반대로의 요청을 라우팅할 책임이 있다.

 

오라클의 구조에 대한 이야기였습니다. 조금 재미가 있었는지요?

 

오라클에서 많은 부분을 차지하는 내부 구조에 대한 이야기입니다.

 

다음은 오라클의 트랜젝션에 대한 이야기를 풀어 나가겠습니다.

 

 

3. 오라클 트랜젝션에 대한 이해.

 

일전 MSSQL을 다루면서 트랜젝션의 전반적인 이야기를 MSSQL 중급 강좌 부분에서 다루었지요? ^_^

 

전반적인 트랜젝션이 아닌 오라클에 한정해 과연 오라클의 트랜젝션 처리와 동작은 떠한지를 알아 보겠습니다.

 

간단히 오라클의 C/S 상황의 트랜젝션 예를 하나 들어 보인다면 아마도 ...

 

1. 어플리케이션은 사용자 입력을 진행하고 SQL*Net을 통하여 서버로의 연결을 생성한다.

 

2. 서버는 연결 요청을 잡고 사용자에 대한 서버 프로세스를 생성한다.

 

3. 사용자는 SQL 문장들을 수행한다. 이 예에서 사용자는 테이블에서 로우의 값을 변화시킨다.

 

4. 서버 프로세스는 일치하는 SQL문을 가진 공유 SQL 영역이 있는지를 보기위해 공유 풀을 체크한다. 만약 일치하는 공유 SQL 영역이 있다면 서버 프로세스는 사용자가 이 데이터로 엑세스할 권한이 있는지를 체크한다. 만약 그렇다면 서버 프로세스는 이 요청을 진행하기 위해 공유 SQL 영역을 사용한다. 만약 공유 SQL 영역이 발견되지 않는다면 새로운 공유 SQL 영역이 할당되고 이 문장이 파싱되고 실행된다.

 

5. 서버 프로세스는 SGA 안에서 데이터를 찾거나 데이터 파일에서 SGA로 데이터를 읽어온다.

 

6. 서버 프로세스는 SGA안의 데이터를 수정한다. 서버 프로세스는 데이터파일에서 읽을 수만 있다는 것을 명심하라. 어느정도 시간이 지나면 DBWR은 수정된 블록을 영구 저장공간으로 쓰기를 한다.

 

7. 사용자는 COMMIT이나 ROLLBACK문을 실행한다. 커밋은 트랜젝션을 종결지을 것이고 롤백은 변화를 원상태로 돌릴 것이다. 만약 트랜젝션이 커밋되면 LGWR 프로세스는 곧바로 이 트랜젝션을 Redo 로그 파일에 기록한다.

 

8. 만약 트랜젝션이 성공하면 종결코드가 네트워크를 통하여 사용자 프로세스로 반환된다. 실패가 발생하면 에러 메시지가 반환된다. 로 전 강좌인 오라클 구조를 보시면서 그다지 이해를 잡지 못하셨어도 예제를 통해 이해가 조금 되셨으면 좋겠습니다. ^_^

 

 

4.오라클의 제품군

 

약간 이른듯한 감이 있지만요...

 

오라클의 제품군들과 간단한 설명을 드리는 시간을 가지려 합니다.

 

보통 서버 제품군과 개발툴로 나뉘어 집니다.

 

 

 

서버 제품군.

 

Enterprise Manager

 

이는 오라클의 관리콘솔과 Intelligent Agent로 구성되어 있다.

 

오라클의 그래픽한 관리 패키지중 핵심적인 요소인 관리 콘솔은 윈도우 NT에서만

 

구동되지만 오라클 서버를 관리할 수 있다.

 

이는 문제진단, 인스턴스 구성, 관리, 문제 발생시 경고 발생 등의 작업이 가능하다.

 

 

 

ConText

 

텍스트 시스템과 연결시 이를 빠르게 읽고 요약하여 분석하고 필터링이 가능하게 한다.

 

문법 에러와 쓰여지는 스타일을 체킹하면서 텍스트의 상세한 평가를 반환 가능하다.

 

 

 

Media Server

 

오라클의 미디어 서버는 다양한 여러 목적의 시스템에서 높은 성능, 확장성, 신뢰할 수 있는

 

멀티미디어 라이브러리 기능을 제공한다.

 

이곳에 영상, 음악, 사진, 대용량 텍스트 등을 저장하고 검색할 수 있다.

 

 

 

The Spatial Data Option

 

공간 데이터 옵션은 공간 데이터를 포함하는 데이터베이스를 관리하기위해 사용이 가능하다.

 

이는 공간이나 지리 데이터를 저장이 가능하게 한다.

 

 

 

The Oracle Web Server

 

이는 오라클 데이터베이스에 대해 웹 엑세스를 가능하게 하는 서비스를 제공한다.

 

이는 인덱싱과 데이터 캐싱이 가능하며 즉시 오라클 DB서버와 연결해 데이터를 액세스 한다는

 

장점이 있다.

 

 

 

Internet Commerce Server

 

이 인터넷 상업용 서버는 웹 상거래를 위해 사용되는 오라클 시스템을 생성, 가동 관리 하는

 

것을 돕기위해 생성된 툴들의 통합이다.

 

 

 

 

 

개발툴

 

Designer/2000

 

이 모델링 툴 세트는 시스템 디자인과 관련된 어려움을 줄인다.

 

프로세스와 데이터 모델링을 돕는 이 툴은 Developer/2000 으로의 입력을 제공하며

 

비지니스 프로세스에 대한 기초가 되는 기본 모델을 개발하기 위해 사용될 수 있다.

 

 

 

Developer/2000

 

이는 윈도, 맥, X윈도 등의 모드에서 어플리케이션을 개발하고 생성하게 한다.

 

특히 Developer/2000에서는 비디오나 사운드의 다양한 표준 포맷을 가진 멀티미디어

 

객체를 지원하며 그래픽, 이미지 역시 지원한다.

 

 

 

Discoverer/2000

 

이 분석툴은 쿼리, 리포팅, 그리고 그래피컬한 차원의 데이터 웨어 하우스 분석을 지원한다.

 

 

 

Power Object

 

이는 Developer/2000의 소형 이다. 적은 시스템 자원을 사용하는 어플리케이션의

 

빠른 개발을 가능하게 한다.

 

 

 

Object for OLE

 

오라클 RDBMS를 OLE를 사용하는 어플리케이션과 연계하는 것을 가능하게 한다.

 

엑셀 같은 스프레드 시트의 개발에 대해 빠르고 쉬운 방법을 제공해 준다.

 

 

 

Programmer/2000

 

이는 SQL, PL/SQL, 그리고 내장 프로시져를 개발하는 것을 돕는다.

 

이 툴은 어플리케이션 개발에 효과적이다.

 

 

 

Media Object

 

오라클의 멀티미디어 개발을 위한 가벼운 툴인 미디어 오브젝은 클라이언트/서버,

 

CD-ROM 그리고 대화형 프로세스를 지원한다.

 

 

 

Database Designer

 

Designer/2000 버젼의 라이트 버젼으로 데이터베이스 디자인과 생성을 돕는다.

 

 

 

많이 들어본 제품도 있으실 거구요..

 

첨 들어본 제품도 있으실 겁니다..

 

도움 되셨길 바라구요...

 

오라클 테크넷을 보시면 더 많고 상세한 제품 정보를 제공해 줍니다.

 

오라클을 공부하시면 꼬옥 테크넷을 항상 애용하시길 바랍니다.

 

이정도로 오라클의 이야기는 살짝 접도록 하구요.

다음으로 설치에 대한 이야기를 시작하도록 하겠습니다.

[Top]
No.
제목
작성자
작성일
조회
11477Query로 DB_NAME/SID/GLOBAL NAME 알아내기
정재익
2002-07-25
7407
11475MS-SQL DTS이용시..주의점..
정재익
2002-07-25
8782
11469오라클 Install
정재익
2002-07-25
11773
11465오라클 강좌 (1)
정재익
2002-07-25
18772
11419ASP에서 오라클 DB를 이용하는 방법
정재익
2002-07-21
10789
11392FreeBSD에서 리눅스용 오라클 애플리케이션 서버 사용하기
정재익
2002-07-18
7150
11391FreeBSD에서 리눅스용 오라클 사용하기
정재익
2002-07-18
7418
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다