Data Base_Oracle/SQL

SQL_TABLESPACE 연결, 확인 & DATA DICTIONARY (2)

pathas 2020. 1. 13. 22:27

TABLESPACE 연결

§ 형식

▶ 계정 연결
[ SQL> create user 계정명 identified by 암호 default tablespace 테이블스페이스명; ]

 

※ 해당 계정에서 만든 모든 테이블, 뷰, 시퀀스 등이 연결한 테이블스페이스에 저장됨

 

▶ 테이블 연결
[ SQL> create table 테이블명 tablespace 테이블스페이스명; ]

 

※ 따로 설정하지 않으면 [tablespace users]가 생략된 상태로 테이블이 생성됨
→ 작업 내용이 USERS 테이블스페이스에 저장

# 예제

▶ sys 계정에서 oradata2를 테이블스페이스로 갖는 kim2 유저 생성
[ SQL> create user kim2 identified by kim2 default tablespace oradata2;
사용자가 생성되었습니다. ]

 

※ kim2계정에서 작업한 모든 내용은 oradata2 테이블스페이스에 저장됨

 

▶ sys 계정에서 oradata2를 테이블스페이스로 갖는 t2테이블 생성
[ SQL> create table t2(c1 number) tablespace oradata2;
테이블이 생성되었습니다. ]

 

※ t2테이블에서 작업한 내용은 oradata2 테이블스페이스에 저장

 

▶ kim2 계정에서 oradata2를 테이블스페이스로 갖는 test테이블 생성
[ SQL> create table test(id number);
테이블이 생성되었습니다. ]

 

※ kim2 계정은 기본 테이블스페이스로 oradata2가 연결되어 있기 때문에
테이블을 생성하면 자동으로 oradata2에 저장됨


TABLE SPACE 확인_DATA DICTIONARY

※ user_users

해당 계정과 계정에 연결된 테이블스페이스의 정보를 담고 있는 Oracle 시스템 테이블

▷ [ SQL> desc user_users ]

이름 널? 유형
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
... ... ...
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
... ... ...

※ user_tables

해당 계정의 테이블과 연결된 테이블스페이스 정보를 갖고 있는 Oracle 시스템 테이블

▷ [ SQL> desc user_tables ]

이름 널? 유형
TABLE_NAME NOT NULL VARCHAR2(30)
TABLESPACE_NAME   VARCHAR2(30)
... ... ...

# 예제

▶ kim2 계정에서 현재 계정과 계정에 연결되어 있는 default tablespace 확인
[ SQL> select username,default_tablespace from user_users; ]

USERNAME DEFAULT_TABLESPACE
KIM2 ORADATA2

▶ kim2 계정 내의 테이블과 테이블에 연결되어 있는 tablespace 확인
[ SQL> select table_name,tablespace_name from user_tables; ]

TABLE_NAME TABLESPACE_NAME
TEST ORADATA2

테이블스페이스를 계정/테이블에 연결하고, 연결된 테이블스페이스를 확인하는 방법에 대해 알아보았습니다.

작업 내용 또는 계정에 따른 저장 공간의 분리가 필요하다면 테이블스페이스를 사용할 수 있겠습니다.