ORACLE의 TABLESPACE, SCHEMA, USER 관계
TABLESPACE는 오라클 서버 단위 생성
USER는 1개의 TABLESPACE를 가질 수 있고, 이 TABLESPACE 내에 자신만의 TABLE 생성 공간인 SCHEMA를 갖는다.
SCHEMA는 USER 이름과 매핑된다.
그래서 다른 USER를 같은 TABLESPACE에 할당시키면 해당 TABLESPACE내에서
USER1.테이블명1
USER2.테이블명1
처럼 같은 테이블명을 가질 수 있다.
그리고 기본적으로 같은 TABLESPACE 내의 다른 USER의 테이블에 접근할 수 없다.
접근권한을 부여하여아 가능하다.
만약, 모든 사용자의 테이블에 접근하고자 한다면 DBA권한을 할당 받아야한다.
TABLESPACE > SCHEMA > TABLE
기본적으로 사용자 생성할때 TABLESPACE를 부여하지 않으면 SYSTEM 테이블스페이스를 가지게 된다.
따로 테이블스페이스를 지정해주는 습관을 가지도록 해야겠다.
(실제로 지금 프로젝트 중에 AS-IS의 DB덤프를 주지 않고 DDL과 DML문만 가지고 복제아닌 복제를 해야했는데
데이터가 많은 테이블의 DML을 넣던중에 TABLESPACE의 용량이 부족하다고 메시지가 출력되었고, SYSTEM 테이블스페이스의 용량을 늘렸다ㅋㅋㅋ 현재 11g버전을 사용하는데 이것도 무료버전은 모든 테이블스페이스를 통틀어 11g의 용량만 제공한다고 한다.)
[테이블스페이스 확인]
> SELECT TABLESPACE_NAME, FILE_NAME, BYTES FROM dba_data_files;
[사용자 확인]
> SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users;