본문 바로가기

IT/oracle

Tablespace의 종류

1. SYSTEM tablespace 

 - 데이터 딕셔러리들이 저장, 데이터 딕셔러리란 오라클 서버의 모든 정보를 저장하고 있는 아주 중요한 테이블이나 뷰들. 조회만 가능

 - 데이터 딕셔리는 크게 base table과 Data dictionary view로 나눔

   - base table

     - 데이터베이스를 생성할 때(dbca, create database 등) 생성, 원본 데이터가 들어 있는 중요한 곳이라 DBA 접근 할 수 없음, 그래서 조회 할 수 있도록 추가적으로 Data Dictionary View를 제공

   - Data Dictionary View

     - dbca를 사용해서 데이터베이스를 생성 할 경우 자동 생성되지만 Create Database 명령러로 수동 생성할 경우에는 자동으로 생성되지 않음. 그래서 반드시 Create Database를 수행 한 후 catalog.sql 스크립트를 추가로 실행

     - 크게 Static Dictionary와  Dynamic Dictionary로 나눔. Static Dictionary는 딕셔너리에 저장된 정보들이 자동으로 변경되지 않음


Static Dictionary를 analyzed(해당 테이블 전체 스캔 하므로 사용 시 주의) 사용하여 수동으로 정보 update

SQL> conn scott/tiger

SQL> show user;

USER is "SCOTT"

SQL> create table stest (no number);


Table created.


SQL> begin

  2  for i in 1..100 loop

  3  insert into stest values(i);

  4  end loop;

  5  commit;

  6  end;

  7  /


PL/SQL procedure successfully completed.


SQL> select count(*) from stest;


  COUNT(*)

----------

       100


SQL> select table_name,num_rows from user_tables

  2  where table_name='STEST';


TABLE_NAME NUM_ROWS

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

STEST


SQL> analyze table stest compute statistics;


Table analyzed.


SQL> select table_name,num_rows from user_tables where table_name='STEST';


TABLE_NAME NUM_ROWS

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

STEST      100


딕셔너리의 주요 내용

1.데이터베이스의 논리적인 구조와 물리적인 구조 정보들

2. 객체의 정의와 공간 사용 정보들

3. 제약조건에 관련된 정보들

4. 사용자에 관련된 정보들

5. Role, Privilege 등에 관련된 정보들

6. 감사 및 보안등에 관련된 정보들

 

딕셔너리 카테고리(Static Dictionary)

  • USER_XXX
    해당 사용자가 생성한 내용만 볼 수 있는 딕셔너리 ex)user_tables, user_indexes
  • ALL_XXX
    해당 사용자가 생성한 것과 생성하지 않아도 접근이 가능한 내용을 볼 수 있는 딕셔너리 ex)all_tables, all_indexes
  • DBA_XXX
    데이터베이스에 생성되어 있는 모든 내용을 다 볼 수 있는 딕셔너리. DBA라는 권한을 가지고 있는 사용자만 조회 가능 ex)dba_tables, dba_indexes
Dynamic Performance View - 실시간으로 변경되는 내용을 볼 수 있음. 조회하는 시점에 control file이나 메모리에서 데이터를 가져와서 보여줌. 이름이 v$로 시작
Static Dictionary는 instance가 open일 경우 조회 Dynamic Performance View는 nomount 상태부터 조회 가능

SQL> select count(*) from dictionary;


  COUNT(*)

----------

      2553


2. SYSAUX tablespace

 - 오라클 10g 부터 등장

 - 주로 오라클 서버의 성능 튜닝을 위한 데이터들이 저장


3. 일반 tablespace

 - 가장 일반적으로 많이 사용되는 tablespace로 관리자가 필요에 의해 만드는 tablespace

 - DBA의 뜻대로 만들고 삭제 가능


SQL> create tablespace haksa datafile '/app/oracle/oradata/testdb/haksa01.dbf' size 1M;


Tablespace created.


SQL> !cat tablespacequery.sql

select tablespace_name, status, contents, extent_management, segment_space_management from dba_tablespaces;


SQL> @tablespacequery 


TABLESPACE_NAME       STATUS CONTENTS  EXTENT_MAN SEGMEN

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

SYSTEM       ONLINE PERMANENT LOCAL      MANUAL

SYSAUX       ONLINE PERMANENT LOCAL      AUTO

UNDOTBS1       ONLINE UNDO  LOCAL      MANUAL

TEMP       ONLINE TEMPORARY LOCAL      MANUAL

USERS       ONLINE PERMANENT LOCAL      AUTO

EXAMPLE       ONLINE PERMANENT LOCAL      AUTO

HAKSA       ONLINE PERMANENT LOCAL      AUTO


SQL> !cat tablespacesize.sql

set line 200

col tablespace_name for a15

col MB for 9999

col file_name for a50


select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;


SQL> @tablespacesize


TABLESPACE_NAME    MB FILE_NAME

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

USERS    5 /app/oracle/oradata/testdb/users01.dbf

UNDOTBS1   85 /app/oracle/oradata/testdb/undotbs01.dbf

SYSAUX  490 /app/oracle/oradata/testdb/sysaux01.dbf

SYSTEM  680 /app/oracle/oradata/testdb/system01.dbf

EXAMPLE  100 /app/oracle/oradata/testdb/example01.dbf

HAKSA    1 /app/oracle/oradata/testdb/haksa01.dbf


SQL> !cat datafileuse.sql

set line 200

col file# for 999

col ts_name for a10

col total_blocks for 9999999

col used_blocks for 9999999

col pct_used for a10


select distinct d.file_id file#, d.tablespace_name ts_name, d.bytes/1024/1024 MB, d.bytes/8192 total_blocks, sum(e.blocks) used_blocks, to_char( nvl(round(sum(e.blocks)/(d.bytes/8192), 4),0) *100, '09.99') || '%' pct_used 

from dba_extents e, dba_data_files d

where d.file_id = e.file_id(+)

group by d.file_id, d.tablespace_name, d.bytes

order by 1,2;


SQL> @datafileuse


FILE# TS_NAME    MB TOTAL_BLOCKS USED_BLOCKS PCT_USED

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

    1 SYSTEM   680      87040  86024  98.83%

    2 SYSAUX   490      62720  59272  94.50%

    3 UNDOTBS1    85      10880   2088  19.19%

    4 USERS     5 640    400  62.50%

    5 EXAMPLE   100      12800   9952  77.75%

    6 HAKSA     1 128 00.00%



'IT > oracle' 카테고리의 다른 글

Extent와 Segment  (0) 2015.01.30
Temporary tablespace  (0) 2015.01.30
Undo Tablespace와 관리  (0) 2015.01.30
Tablespace 관리  (0) 2015.01.30
Tablespace File 이동  (0) 2015.01.30
Redo Log File 관리 하기  (0) 2015.01.29
Redo Log의 생성 원리  (0) 2015.01.28
Glossary  (0) 2015.01.28
Control File 다중화(Multiplexing)하기  (0) 2015.01.28
profile 설정  (0) 2015.01.28