부리부리

ORACLE 8장 TABLESPACE AND DATAFILE 본문

ORACLE

ORACLE 8장 TABLESPACE AND DATAFILE

구리불주먹 2019. 1. 24. 18:18
반응형
SMALL

--8장p1

DATAFILES은 TABLESPACE안에 있음 

실제로는 DATAFILE안에는 더작게 DATA가있음 

그 DATA가 모여 TABLE과 OBJECT로 이루어짐

이것이 TABLESPACE안에 있는거



--P2

SYSTEM TABLESPACE

CONTAINS THE SYSTEM UNDO SEGMENT란 - 자체적으로 UNDOTBS를 내장되어있음 

(ROLLBACK 하기전 저장소/UNDOTBS01.DBF)


--P3

USERDATA01.DBF는 ORADATA라는 TABLESPCE 안에 있는거 




--P4

기본 TABLESPACE를 만들면 안에는 8K단위로 만들어짐


LOCALLY MANAGED TABLESPACE -주로 사용함


직접 BLOCK으로 와서 HEADER를 읽어서 저장함

그러므로 속도가 빠름


DICTIONARY-MANAGED TABLESPACE -SYSTEM이 사용함(잘안하는거..)


BLOCK에는  HEADER가 있음

HEADER에는 앞뒤에 OBJECT ID나 자기자신에 저장공간 용량 정보등을 가지고있음

HEADER 가 2KB 나머지 6KB는 데이터 저장공간임 (쉽게 보면,,,)

저장공간을 DICTIONARY에 저장함 / 근데 사용자가 저장하려고 하면 DICTIONARY를 통해서 

BLOCK으로 저장함 -> DICTIONARY에서 BLOCK의 저장공간 수정 



--P5

EXTENT MANAGEMENT LOCAL -EXTENT는 LOCAL이 관리

UNIFORM SIZE 128K -500M 공간이 있는상태에서 공간이 꽉 차면 똑같이 128KB씩 늘림



--P6
DEFAULT STORAGE -저장방법
INITIAL 1M -500M이 꽉차면 처음 한번은 1M로 늘림 / 그다음엔 1M씩 늘림
PCTINCREASE 0 -EX)0이 면 똑같은 크기로 늘리지만, 10이면 처음부터 끝까지 총 저장공간에서 10프로만큼의 공간을 늘림

--P7

UNDO DATABLESPACE를 직접 만들수있음

UNDO SEGMENT에 저장

UNDO SPACE를 만들어놓고 TABLE은 만들수없다 (사용은 무조건 취소의 저장기능만)

반드시 복구해줘야하는 TABLESPACCE중하나


--P8

TEMPORARY TABLESPACE 는 사용자가 정렬할때 그 공간을 만들어줄때 

PGA가 우선정렬하지만 공간이 작음/그러므로 정렬을 위해 TEMPORARY 로 간다

만약에 없으면 (TEMPORARAY DISK망가졌을때) SYSTEM TABLESPACE로 감

영구적인 데이터는 저장할수없음 /왜냐면 껐다 키면 사라지는 공간이기때문에 

LOCAL이 관리함




--P12

새로운 DEFAULT값을 지정해주기 전까지 삭제할수없다 

TEMP1이 DEFAULT면 1은 삭제못함 2까지 만들고 DEFAULT지정해주고 삭제가능

OFFLINE시킬수없다 중요하니까 !

한번만들어진 TEMPORARY TABLESPACE는 삭제하기전까진 TEMPORARY TABLESPACE임(다른걸로 바꿀수 없다)



--P14

SYSTEM TABLESPACE는 OFFILNE할수없음 (ORACLE을 OFFLINE할수없음)

UNDO SEGMENT도 OFFLINE할수없음 (취소기능사용못함)



--P20

일반 TABLESPACE를 위치를 바꿀때

LOG의 위치를 바꿀때도 동일한 명령어를 사용함



--P21

마운트상태에서 

SYSTEM TABLESPACE를 OPEN하지않고 옮기고 싶을때 



--P22
INCLUDING CONTENTS 란
TABLESPACE안에 논리적인 DATAFILE만 지우고 실제파일은 남아있음(TABLESPACE도 지워짐)

파일까지 지우고 싶으면
INCLUDING AND DATAFILES 를 적어줘야됨 

FK가 연결되어있을때 모두 지울수 있게 하는건
CASCADE CONSTRAINTS도 적어줘야함

--P23

DB_CREATE_FILE_DEST 위치


db_create_file_dest = spfile 




--P25

V$를 많이 사용함


★실습★



SYS@TestDB> SELECT TABLESPACE_NAME,STATUS,CONTENTS,

  2  EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT

  3  FROM DBA_TABLESPACES;


TABLESPACE_NAME                STATUS    CONTENTS  EXTENT_MAN SEGMEN

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

SYSTEM                         ONLINE    PERMANENT LOCAL      MANUAL-DICTIONARY

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


6 개의 행이 선택되었습니다.

PERMANENT - 영구적

SYS@TestDB>SAVE DT.SQL


-위치정보와 사이즈정보를 볼수있음


SYS@TestDB> SELECT TABLESPACE_NAME,BYTES,FILE_NAME FROM DBA_DATA_FILES;


TABLESPACE_NAME       BYTES FILE_NAME

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

USERS              11796480 C:\APP\ITWILL\ORADATA\TESTDB\

                            USERS01.DBF


UNDOTBS1           99614720 C:\APP\ITWILL\ORADATA\TESTDB\

                            UNDOTBS01.DBF


SYSAUX            639631360 C:\APP\ITWILL\ORADATA\TESTDB\

                            SYSAUX01.DBF


SYSTEM            723517440 C:\APP\ITWILL\ORADATA\TESTDB\

                            SYSTEM01.DBF


TABLESPACE_NAME       BYTES FILE_NAME

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


EXAMPLE                    104857600 C:\APP\ITWILL\ORADATA\TESTDB\

                                      EXAMPLE01.DBF


-TEMP


SYS@TestDB> SELECT TABLESPACE_NAME , BYTES,FILE_NAME FROM DBA_TEMP_FILES;


TABLESPACE_NAME       BYTES FILE_NAME

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

TEMP               30408704 C:\APP\ITWILL\ORADATA\TESTDB\

                            TEMP01.DBF



SYS@TestDB> CREATE TABLESPACE INSA

  2  DATAFILE 'C:\APP\ITWILL\ORADATA\TESTDB\INSA01.DBF' SIZE 10M

  3  SEGMENT SPACE MANAGEMENT AUTO;


테이블스페이스가 생성되었습니다.


SYS@TestDB> @DT


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

INSA             ONLINE    PERMANENT LOCAL      AUTO


7 개의 행이 선택되었습니다.


ALTER TABLESPACE INSA OFFLINE; 후

INSA01.DBF파일을 윈도우에서 ADISK\DISK1으로 옮기고


SYS@TestDB> ALTER TABLESPACE INSA RENAME

  2  DATAFILE 'C:\APP\ITWILL\ORADATA\TESTDB\INSA01.DBF'

  3  TO

  4  'C:\ADISK\DISK1\INSA01.DBF';



SYS@TestDB> ALTER TABLESPACE USERS RENAME

  2  DATAFILE 'C:\app\itwill\oradata\TestDB\USERS01.DBF'

  3  TO 'C:\aDisk\disk2\USERS01.DBF';


-SYSTEM01을 옮길땐 SYSTEM SHUTDOWN 하고 옮겨야함

SYS@TestDB>STARTUP MOUNT

SYS@TestDB> ALTER DATABASE RENAME

  2  FILE 'C:\app\itwill\oradata\TestDB\SYSTEM01.DBF'

  3  TO 'C:\aDisk\disk3\SYSTEM01.DBF';


데이타베이스가 변경되었습니다.


-TABLESPACE 삭제


SYS@TestDB> DROP TABLESPACE INSA

  2  INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;


테이블스페이스가 삭제되었습니다.


->AND DATAFILES CASCADE CONSTRAINTS;

실제 WINDOWS경로에 있는 파일도 사라짐


반응형
LIST

'ORACLE' 카테고리의 다른 글

INDEX 단편화  (0) 2019.01.28
ORACLE 6장 CONTROL FILE  (0) 2019.01.24
ORACLE 7장 REDO LOGFILE  (0) 2019.01.24
ORACLE 구조  (0) 2019.01.23
ORACLE PACKAGE (PROCEDURE 묶음)  (0) 2019.01.22