테이블 스페이스 개념이 궁금합니다. 0 2 7,055

by guest [DB 모델링/설계] tablespace oracle [2019.10.14 16:09:55]


여태 db를 써오면서 신경 쓰지 않은 부분이고 교육 시에도 특별히 언급되는 경우는 없어서

그리고 다른 dbms인 sql server에는 없는 개념이라 생소한데 

 

혼란스러운게 

계정 만들면서 테이블 스페이스를 만들지 않아도 된다는 점이랑 

여러 계정이 동시에 같은 테이블 스페이스를 물릴 수 있다는 점이 이해가 안 갑니다. (한 계정이 여러 테이블 스페이스는 물릴 수 없는 게 맞죠?)

테이블 스페이스가 정확히 뭐 때문에 있는 건가요? 데이터 보유하는 파일의 용량을 제한하기 위한 것인가요?

 

이 테이블 스페이스에 차지하는 용량의 기준이 어떻게 되나요? 예를 들어서 'abc' 라고 데이터를 넣었다 하면 3byte 차지하게 되는 건가요?

그리고 임시파일(temp, backup) 이런 것이 생성되어서 용량에 영향을 주는 것인가요? 

 

용량이 꽉 찼을 때는 계속 사용하려면 전체 사이즈를 늘리거나 아니면 예전 데이터를 삭제하거나 둘 중 하나인가요?

by ㅇㅇ준 [2019.10.14 17:16:01]

DBA_USERS 를 조회해보면 DEFAULT TABLESPACE가 있습니다.

오라클 설치시 기본적으로 생성되는 TABLESPACE가 있어서 생성시에는 별도로 생성하지 않아도 가능은 합니다.

USER를 생성할 때 DEFAULT TABLESPACE, TEMPORARY TABLESPACE를 지정할 수 있구요

TABLE, INDEX 생성시 별도의 TABLESPACE를 지정하지않으면 DEFAULT TABLEPSPACE에 생성됩니다.

 

TABLESPACE 를 하나만 생성하고 그쪽에 모든 데이터를 쌓는 경우도 있고 여러개의 TABLESPACE로 구분하여 몇몇 TABLE,INDEX를 그룹지어 넣는 경우도 있습니다.

TABLESPACE를 여러개 만드는 이유는 복구를 위함이 크다고 생각합니다.

asm/os file system 에 TABLESPACE에 대한 DATAFILE 을 생성하고 용량이 허용하는 만큼 자동 증가하도록 설정하도록할수도 있고 수동으로 datafile을 생성해줘야하도록 설정할 수도있습니다.

이전 데이터를 삭제해도 segment 사이즈는 줄 지 않고 truncate, drop, 테이블 재생성 작업을 통해 용량을 줄일 수 있겠습니다


by 임상준 [2019.10.17 16:50:17]

물리적 데이터파일을 묶어서 만든 논리적인 저장공간 개념이라고 보시면 됩니다. 계정이랑 상관 없어요.

용량의 기준은 db 블럭 단위겠죠, 'abc' 가 3 byte 인건 데이터 기준에서 논리적인 길이이구요..

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입