Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Oracle 데이터베이스 저장 영역 구조 본문

Oracle ADMIN

Oracle 데이터베이스 저장 영역 구조

Kihwane 2022. 7. 3. 16:59

Data Block (데이터 블록)

- 데이터를 저장하는 가장 최소의 논리적인 단위이다.

 

 

데이터베이스 블록

블록 헤더 

- 블록 헤더에는 세그먼트 유형, 데이터 블록 주소, 테이블 디렉토리, 행 디렉토리, 블록의 행을 수정할 때 사용되는 각각 약    23바이트인 트랙잭션 슬롯이 포함된다. 블록 헤더는 맨 위부터 아래쪽으로 확장된다.

 

행데이터 

- 블록에 있는 행의 실제 데이터. 행 데이터 공간은 맨 아래부터 위쪽으로 확장된다.

 

사용 가능 영역

- 필요한 경우 헤더 및 행 데이터의 공간이 늘어날 수 있도록 한다. 헤더 확장이 일어나는 경우는 다음과 같다.

   1. 행 디렉토리에 행 항목이 추가로 필요한 경우

   2. 처음에 구성한 것보다 더 많은 트랜잭션 슬롯이 필요한 경우


Extents (익스텐트)  : 데이터 블록이 모여서 된다

- 단일 할당으로 얻은 일정 수의 연속적인 오라클 데이터 블록

- 특정 유형의 정보를 저장하는데 사용한다.

- 연속적으로 비어있는 블록들을 사용하여 공간을 할당받는다.


Segment (세그먼트) : 익스텐트가 모여서 된다

- 특정 논리적 구조에 할당된 일련의 Extent이다 (Extent 모음)

- 데이터 세그먼트, 인덱스 세그먼트, 언두 세그먼트, 임시 세그먼트 등이 존재한다.

- 세그먼트가 모이면 테이블 스페이스가 된다.


SYSTEM SYSAUX 테이블스페이스

-데이터베이스 생성 시에 생성되는 필수 테이블스페이스

-항상 online 상태여야 한다.

-응용 프로그램 데이터에 사용해서는 안 된다.

-읽기 전용으로 설정할 수 없다.

 

   ① SYSTEM 테이블스페이스

   Control File 및 데이터 딕셔너리 테이블과 같은 핵심 기능을 위해 사용된다.

   손상될 경우 DB 접근이 불가능해지므로 중요하다.

 

   ② SYSAUX 테이블스페이스

   추가 데이터베이스 구성 요소에 사용된다.

   10g 버전에서 추가, 주로 Oracle 서버의 성능 튜닝을 위한 데이터들이 저장된다.

 

테이블 스페이스

- 오라클이 사용하는 논리적 storage이다.  테이블이 저장될 공간을 먼저 만든 후 테이블을 생성한다.

- 테이블 생성시 미리 정의된 용량만큼 테이블 스페이스가 생성되고 거기에 데이터를 저장한다.

- 논리적 구조 또는 데이터 파일을 함께 그룹화 한다.

- 한 개 이상의 데이터 파일이 있어야 한다.

 


테이블 데이터 저장 방식

- 테이블이 생성될 때 해당 테이블의 데이터를 보관하는 세그먼트가 생성된다.

- 테이블 스페이스는 세그먼트 모음을 포함한다.

  ㄴ-> 생성 시 users 테이블 스페이스에 공간을 할당하게 된다.

  ㄴ-> tablespace ts2 는 users가 아닌 ts2를 테이블 스페이스로 사용하고자 할때 지정한다.

  ㄴ-> 미리 ts2 를 생성시켜 놔야한다. 생성시킨 테이블스페이스에 적용하는 것.

 

                                              ┗━> values(1,‘Jone’,‘Seoul’)

                                                        길이/값으로 저장 : 1/1, 4/Jone, 5/Seoul

                                              ┗━> values(3,NULL,NULL)

                                                         null값은 db block에 저장하지 않는다.

Extent에 값이 전부 채워지게 되면 데이터 파일은 새로운 Extent를 할당 받을 수 있다.


테이블 스페이스 생성 

 

 1) create (smallfile) tablespace new_ts                    // ts 생성,이름 정의

 2) datafile ‘/home/oracle/new_ts01.dbf’ size 100m  // 물리적 데이터파일,사이즈

--밑에는  default 로 만들어짐--

 3) EXTENT MANAGEMENT local                               // 공간할당 방식

 4) autoallocate                                                             // 시스템에서 테이블스페이스를 관리함을 지정.사용자는 확장영역                                                                                            크기 지정 불가

 5) SEGEMENT SPACE MANAGEMENT AUTO        // 세그먼트 사용 공간 관리

 6) online                                                                     // 읽기,쓰기 작업권한

 7) nocompress                                                          // 압축옵션

 8) logging                                                                  // log 기록할 것인지

 9) BLOCKSIZE 8k;                                                    // db_block_size 지정

 

 

1) File 구분

Small File

- 한 테이블 스페이스가 여러 데이터 파일 (1022개) 을 가질 수 있다.

- 하나의 데이터 파일이 가질 수 있는 블록의 개수가 4M(4000000) 개이다.

- db_block_size*8k) * 4000000

 

Big File

- 한 테이블 스페이스가  1 데이터 파일을 가질 수 있음

- 하나의 데이터 파일이 가질 수 있는 블록 개수가 40억개이다.

- 8k block * 40 = 32TB

 

 2) datafile ‘/home/oracle/new_ts01.dbf’ size 100m

- /home/oracle 아래에 new_ts01.dbf 을 만들고, 사이즈는 100으로 지정한다.

 

------ 이 곳 부터는 모두 Default 값이 존재한다 ----------

 

3 )EXTENT MANAGEMENT local

> local : 공간 할당에 대한 정보를 각 데이터 파일의 헤드에 비트맵으로 표시

> dictionary : 공간 할당에 대한 정보를 딕셔너리 테이블에 저장

 

4) autoallocate - extent 지정

> Autoallocate : 테이블스페이스 내의 Extent 크기가 시스템에 의해 관리된다.

┗━> 임시 테이블스페이스에서는 Automatic으로 지정할 수 없다.

 

> Uniform : 유저가 지정한 동일 Extent 크기로 테이블스페이스가 관리된다. 기본1MB

┗━> 임시 테이블스페이스의 모든 Extent는 균일, undouniform으로 지정 불가

 

5) Segment Space Management – 세그먼트 지정

> Automatic : 비트맵을 사용하여 세그먼트의 사용 가능 공간을 관리

  (default) : 데이터 블록에서 사용 가능한 공간의 크기가 바뀌면 비트맵에 새로운

 상태가 반영되어 자동으로 공간을 관리한다.

  ┗━> ASSM : Automatic Segment Space Management

 

> Manual : Free List를 사용하여 세그먼트의 사용 가능 공간을 관리

: 테이블스페이스에 생성된 스키마 객체에 대한 저장 영역 파라미터들을 지정 및 튜닝해야 하므로 수동 세그먼트 공간          관리라고 부른다.

┗━> 역호환성을 위해 지원되므로 ASSM(Automatic) 사용 권장

 

6) online

> 테이블 스페이스 생성 후 유저가 테이블 스페이스에 대한 읽기 및 쓰기 작업을 수행할 수 있음을 의미한다.

 

7) Compression 옵션 (default = 비활성화, nocompress)

- 데이터 세그먼트 압축을 활성화하면 디스크 공간 사용을 저장하고, 버퍼 캐시의 메모리

  사용을 줄이고, 읽기 작업 중 query 실행 속도를 높일 수 있다.

- 그러나 데이터 로딩 및 DML에 대한 CPU 오버헤드 비용이 발생한다.

 

8) Logging (logging, nologging)

- 테이블 스페이스의 객체에 대한 변경 logredo log buffer에 기록할 것인지

- 비활성화시 로그 정보가 기록되지 않으므로 데이터 손실 시 recovery가 불가능하다.

 

9) Blocksize

- 1 데이터 블록의 크기를 지정한다.

- 2k, 4k, 8k, 16k, 32k 크기 중 지정이 가능하다.

- 블록 크기에 맞는 크기의 db buffer cache를 준비해야 함. ex)db_16k_cache_size = 40m

 


테이블 스페이스 변경

 

ALTER TABLESPACE new_ts

READ ONLY;    

READ WRITE;

OFFLINE;   (NORMAL | TEMPORARY | IMMEDIATE)  

ONLINE;

ADD DATAFILE ‘/home/oracle/new_ts2.dbf’ size 100m;

RENAME TO ts_new;

 

Read Wirte

DBWR가 데이터파일로 내릴때는  checkPoint 되는 시점이다.

Alter TableSpace new_ts offline <-- 하면  Read/Wirte 못하게 하는 것이다

그러면 CheckPoint가 일어난다. 그때 DBWR 이 내리게 된다.

 

OFFLINE 옵션

alter tablespace new_ts offline

(system 테이블스페이스는 offline할 수 없음)

- 테이블스페이스를 offline하면 checkpoint가 일어난다.

- DBWR는 테이블스페이스와 연관된 dirty buffer들을 빠르게 data file로 내린다.

          ┗━> checkpoint

 

- normal   : 모든 dirty buffer에 대해 checkpoint 수행

- immediate : checkpoint를 진행하지 않고 바로 offline (장애 발생 시 사용)

- temporary : checkpoint 가능한 버퍼들만 진행

 

 

ADD DATAFILE

add datafile : ‘/home/oracle/new_ts02.dbf’ size 1g --> 1기가만큼 증가

add datafile ‘/home/oracle/new_ts02.dbf’ size 1g autoextend on

                                                                                  ㄴ--> 다음에 생성한 것이 다 찼을 때 자동으로 생성시켜 주겠다.

ex) add datafile ‘/home/oracle/new_ts02.dbf’ size 1g autoextend on next 10m maxsize 2g;

 

autoextensible : 꽉 차면 자동으로 늘려주기

select tablespace_name,file_name,AUTOEXTENSIBLE

from dba_data_files;

 


테이블 스페이스 삭제

SQL> drop tablespace new_ts;

 

1) INCLUDING CONTENTS

- 안에 있는 세그먼트까지 삭제 한다음에 테이블 스페이스 삭제한다

SQL> DROP TABLESPACE new_ts INCLUDING CONTENTS;

 

2) INCLUDING CONTENTS CASCADE CONSTRAINTS

- 외래키로 연관된 것 까지 전부 삭제

DROP TABLESPACE new_ts INCLUDING CONTENTS CASCADE CONSTRAINTS;

 

3) INCLUDING CONTENTS AND DATAFILES

- storage에있는 데이터 파일까지 다 삭제


 

테이블 스페이스 3가지

1. permanert TableSpace (System, Sysaux)

- permanent object를 생성할 수 있음.

   ㄴ-> 생성한 사람이 삭제할 때까지 영원히 남아있는 것을 permanent object 라고 한다.

 

2.Undo Tablespace

SQL> create undo tablespace undo1

          datafile '/home/oracle/undo1.dbf' size 100m

- 언두 정보를 저장할 목적으로 생성한다.

- AUTOALLOCATE만 가능하며, logging을 지정할 수 없다.

 

3.temporary tablespace

- temporary object를 생성할 목적으로 테이블을 쓴다.

    ㄴ-> 자동으로 사라지는 것들을 위한 테이블 스페이스.

- 자동으로 free 상태되는 것들이 temporary object 이다. 이런 것들은 SMON이 free 상태로 만든다.

- offline 상태로 변경 불가

- standard block size만 가능하다 

- uniform size로만 지정 가능하다.

- logging 지정할 수 없다.

 

테이블 스페이스 정보를 확인해보도록 한다.

 

SQL> select  tablespace_name, block_size, status,

          contents, logging, extent_management, allocation_type

          from dba_tablespaces;

ALLOCATION TYPE 이 UNDO는 ALLOCATE (SYSTEM) 인 것을 확인할 수 있고, TEMP는 UNIFORM 인 것을 확인할 수 있다.

 

세그먼트 정보를 확인해보도록 한다.

 

SQL> select owner, segment_name, sum(extents), sum(bytes) /1024 kb

          from dba_segments

          where tablespace_name = 'EXAMPLE'

          group by owner, segment_name;

익스텐트 정보 확인하기

 

SQL> desc dba_extents;

'Oracle ADMIN' 카테고리의 다른 글

Oracle 공간관리 2  (0) 2022.07.21
Oracle 공간 관리  (0) 2022.07.03
Oracle 프로파일 생성 및 관리  (0) 2022.07.03
Oracle 권한 / Role  (0) 2022.07.03
Oracle 유저 보안 관리 (계정 종류 및 유저 인증)  (0) 2022.06.30