여태 db를 써오면서 신경 쓰지 않은 부분이고 교육 시에도 특별히 언급되는 경우는 없어서
그리고 다른 dbms인 sql server에는 없는 개념이라 생소한데
혼란스러운게
계정 만들면서 테이블 스페이스를 만들지 않아도 된다는 점이랑
여러 계정이 동시에 같은 테이블 스페이스를 물릴 수 있다는 점이 이해가 안 갑니다. (한 계정이 여러 테이블 스페이스는 물릴 수 없는 게 맞죠?)
테이블 스페이스가 정확히 뭐 때문에 있는 건가요? 데이터 보유하는 파일의 용량을 제한하기 위한 것인가요?
이 테이블 스페이스에 차지하는 용량의 기준이 어떻게 되나요? 예를 들어서 'abc' 라고 데이터를 넣었다 하면 3byte 차지하게 되는 건가요?
그리고 임시파일(temp, backup) 이런 것이 생성되어서 용량에 영향을 주는 것인가요?
용량이 꽉 찼을 때는 계속 사용하려면 전체 사이즈를 늘리거나 아니면 예전 데이터를 삭제하거나 둘 중 하나인가요?
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, 테이블 재생성 작업을 통해 용량을 줄일 수 있겠습니다