Differences between a Connection and a Session

Connection

- 클라이언트와 오라클 인스턴스를 연결해주는 물리적 통로

- Connection 은 여러 종류 중 하나가 선택 되어질 수 있다.

Options are
1. client --connected to-- dispatcher
2. client --connected to-- dedicated server
3. client --connected to-- Oracle Connection Manager(CMAN)

 

Session

- 인스턴스의 논리적 요소로서 커넥션이 이루어짐으로서 세션이 성립된다. 또한 프로세스는 세션에 의해 수행되는 명령어에 의해 사용된다. 혹 세션과 프로세스 그리고 커넥션에는 CONNECTION->SESSION->PROCESS 의 관계가 있다고 볼 수도 있다. 커넥션이 이루어짐으로서 세션이 성립되고 세션을 통해 프로세스가 사용되어짐으로서 이러한 관계가 있다고 말할 수 있다.

'Oracle > Admin' 카테고리의 다른 글

Undo tablespace  (1) 2011.10.05
ORACLE Overview of Primary Components  (1) 2011.09.30

Undo tablespace

- 사용자가 DML 을 수행할 경우 원본 데이터(undo data)들을 저장해 두는 특별한 Tablespace

- 사용자가 생성 가능하며 관리 할 수 있음

- Undo 라는 용어는 8i 버전까지 rollback 이라는 용어로 사용됨

 

1. Undo tablespace 의 특징

- Oracle Server Process 는 이 Tablespace 에 Undo segment 를 생성하고 기본적으로 각 사용자 별로 undo segment(ex: _SYSMU1$) 를 할당하여 관리하며 사용자는 관여할 수 없음

- Undo tablespace 는 Instance 당 여러 개가 동시에 존재 할 수 있지만 사용되는 것은 한번에 1개이다.

-> create undo tablespace undo01 datafile '/~~~~/undo01.dbf' size 10M 으로 만들어 줘도 파라미터에 적용 시키지 않으면 바뀌지 않음

- 관리 방법은 AUM(Automatic Undo Management) 과 MUM(Manual Undo Management) 이 있음 -> 9i 버전 부터는 AUM 방식을 권장

 

2. Undo Tablespace 의 사용 목적

- Transaction Rollback – 사용자가 rollback 이라는 명령어를 수행할 경우에 이곳에 저장된 undo data를 사용해서 rollback 을 수행함

- Read Consistency (읽기 일관성) –CR 작업을 통해 트랙잭션이 끝나지 않은 데이터는 변경 전 데이터를 보여줌.

- 다음 그림과 같이 update 가 발생하면 Datafile 에서 DB Buffer Cache 로 데이터 블록을 불러오게 되며 블록에는 lock 이 설정되어 아무도 내용을 볼 수 없는 상태

- 또한 원본 Data(Undo Data) 는 undo segment 에 저장되게 된다.

 

- Update 가 수행되던 중 사용자 2에 의해서 select 가 수행되었을 때 undo segment 에서 DB Buffer Cache 로 원본 Data 를 복사하여 사용자 2에게 결과값을 보여주게 됩니다. 대신 1(홍길동) Data 는 lock 이 설정되어 commit 이나 rollback 이 수행되기 전까지는 1 block 에 다른 사용자가 접근할 수 없습니다.

- Transaction Recovery (Instance recovery) : 운영 중이던 DB 서버가 비정상적으로 종료 되었을 때 Roll Forward 와 Roll backward 작업을 수행해서 Dirty Database 를 Clean DB 로 만들어 주는 과정에 사용됨

 

- Undo Parameter 확인

- 신규 Undo Tablespace 생성

SQL>create undo tablespace undo01

2 datafile '/data/temp2/undo01.dbf' size 10M

3 autoextend on;

Tablespace created.

- Undo tablespace 를 생성 하여도 파라미터 파일을 변경 하여야 함.

SQL>alter system set undo_tablespace=undo01;

 

-PFILE 의 경우 파라미터 값을 직접 변경해야 나중에 다시 DB Open 시 문제가 발생하지 않는다.

 

- 각 세션 별로 사용중인 undo segment 확인

SQL>select s.sid,s.serial#,s.username,r.name "ROLLBACK SEG"

1 from v$session s,v$transaction t,v$rollname r

2 where s.taddr=t.addr

3 and t.xidusn = r.usn;

 

 

3. Undo segment 할당되는 원리

- Undo tablespace 는 Data file 의 크기가 증가만 되고 절대 줄어들지 않는다.

<하늘색 : 트랜잭션 완료, 갈색 : 트랜잭션 미완료>

 

다음과 같이 사용자가 DML(E) 을 수행하게 되면 가장 먼저 Server Process 는 Undo Segment 를 확보하게 되는데 이 때 기존에 만들어져 있던 Segment 중 트랜잭션이 완료된 것이 없는지를 확인한 후 그 곳에 덮어쓰게 됩니다.

 

- 다음과 같이 완료된 트랜잭션이 존재하지 않을 경우 새로운 undo segment 를 새로 생성하게 됩니다.

- 이런 식으로 더 이상 빈 공간이 존재하지 않을 경우 Data file 의 저장 공간이 허요하는 범위까지 늘어나다가 만약 더 이상 공간이 없게 되면 하나의 Segment 에 2개 세션 이상의 undo data를 함께 기록하게 됩니다. 이것조차 불가능하게 된다면 해당 트랜잭션은 에러를 발생 합니다.

- Undo tablespace 의 용량을 줄이기 위해서는 새로운 Undo Tablespace 를 생성후 파라미터 값을 변경시킨 다음 기존 Undo Tablespace 를 삭제 하셔야 합니다.

 

4. 주요 Parameter

- undo_retention àcommit 수행 후에도 해당 undo segment 내의 데이터를 다른 서버 프로세스가 덮어 쓰지 못하고 일정 시간동안 대기 시켜주는 파라미터이며 이 파라미터는 undo segment 의 여분이 존재할 경우에만 적용되며 항상 보장하지 않습니다.

 

- undo_retention_guarantee à undo_retention 파라미터는 여분이 존재하지 않을 경우 undo segment 가 재사용 되어지는데 반해 undo_retention_guarantee 파라미터는 설정된 시간동안 무조건 보장해줍니다.

 

- Oracle 10g 버전 부터는 ORA-01555:Snapshot too old 라는 에러를 줄이기 위해 undo retention 을 자동으로 관리하는 기능을 제공합니다.

- 다음은 undo tablespace 를 확인하고 guarantee 로 바꿔주는 명령어

 

SQL>alter tablespace undotbs retention noguarantee;

- no guarantee 로 변경하는 명령어

 

- NOT APPLY 는 Undo tablespace 가 아니므로 적용할 수 없습니다.

실전! 오라클 백업과 복구
국내도서>컴퓨터/인터넷
저자 : 서진수
출판 : 생능출판사 2010.09.06
상세보기

'Oracle > Admin' 카테고리의 다른 글

Differences between a Connection and a Session  (0) 2011.10.06
ORACLE Overview of Primary Components  (1) 2011.09.30

Overview of Primary Components

 

Oracle Instance

- Oracle Database 에 연결하는 것을 의미한다.

- 항상 하나의 DB에 한 개의 Instance 가 Open 됨

- Memory structures 와 Background Process structures 로 구성됨.

 

Oracle Memory Structure

- Oracle 의 메모리 구조는 SGA 와 PGA 로 구성

- System Global Area (SGA) :

→ 인스턴스가 시동되면 할당되고 Oracle Instance 의 주요한 요소

→ 모든 프로세스가 공유

- Program Global area (PGA) :

→ 서버 프로세스가 시작되어지면 할당된다.

→ 사용자별로 생성되어 별도로 사용됨.

→ Parse 작업 수행


 

System Global Area

- SGA 는 여러 개의 Memory structure 들로 구성됨.

→ Shared Pool

→ Database Buffer Cache

→ Redo Log Buffer

→ Java Pool

→ Large Pool

- SGA_MAX_SIZE parameter 로 변경 가능

 

Shared Pool

- 최근 실행된 SQL 구문들과 최근에 사용되어진 data 정의들이 저장됨

- 주요 기능을 수행하는 2개의 주요 메모리 구조로 구성되어짐

1. Library Cache

2. Data Dictionary Cache

- SHARED_POOL_SIZE 파라미터로 설정 됨

SQL>alter system set

2 shared_pool_size = 64M;

 

Library Cache

- 가장 최근 사용 되어진 SQL 과 PL/SQL 들에 관한 정보가 저장됨

- 일반적으로 사용되어지는 구문들의 공유가 가능함

- Soft Parse 과정을 위한 메모리 구조

- LRU Algorithm 에 의하여 메모리 관리가 이루어진다.

- Shared Pool 의 크기에 의해 Library Cache 의 크기가 결정된다.

 

 

 

Data Dictionary Cache

- DB 에서 최근 사용 되어진 사용자 정의들의 집합.

- database file, table, index,column,user,privilege 등에 관한 정보가 포함됨

- Parse 과정에서 서버 프로세스가 접근하게 되는데 이 때 구문의 유효성과 개체 이름을 확인하게 된다.

- Data Dictionary Cache 안에 원하는 정보가 존재 한다면 쿼리와 DML 성능에 향상을 가져오게 된다.

- Hard Parse 를 위한 메모리 구조

- Shared Pool 의 크기에 의해 Library Cache 의 크기가 결정된다.

 

Database Buffer Cache

- 데이터 파일로부터 검색되어진 Data 블록 들이 복사되어 저장된다.

- 데이터를 검색하거나 Update 할 때 좋은 성능을 얻기 위해 존재한다.

- LRU 알고리즘을 통해 관리된다.

- DB_BLOCK_SIZE 가 블록 사이즈를 결정

-> 8i = 2k

-> 9i = 4k

-> 10g,11g = 8k

 

- 독립된 서브 캐쉬로 구성됨

-> DB_CACHE_SIZE – Database buffer cache 전체 크기

-> DB_KEEP_CACHE_SIZE – 중요한 Data 를 보관 (LRU 적용 안함)

-> DB_RECYCLE_CACHE_SIZE – 잘 사용되자 않는 Data

- 다음 붉은 두가지 설정은 권장 사항이 아님

- 유동적으로 크기 변경이 가능

SQL>alter system set DB_CACHE_SIZE = 96M;

- DB_CACHE_ADVICE=on/off 는 buffer cache 의 크기를 변경했을 때의 성능을 예측하는 Advisory 기능을 다음 파라미터로 제공함

- 다음의 다이나믹 퍼포먼스 뷰를 통해 확인가능

-> V$DB_CACHE_ADVICE

'Oracle > Admin' 카테고리의 다른 글

Differences between a Connection and a Session  (0) 2011.10.06
Undo tablespace  (1) 2011.10.05

+ Recent posts