D.B./Oracle

[ORACLE] 테이블 스페이스 생성,삭제, 계정생성 및 권한설정

미련곰 2010. 5. 10. 16:44

▣ 테이블스페이스의 생성
   - 옵션절을 생략할 경우 밑줄친 옵션이 디폴트 값입니다.
   - tablespace_name : 생성할 테이블 스페이스 명
   - DATAFILE : 새로 생성하는 테이블스페이스가 사용할 데이터 파일
   - filespec : 디렉토리 경로명을 포함한 파일명
   - size : 새로 생성되는 데이터 파일의 크기

   - ONLINE/OFFLINE
       ONLINE : 새로 생성되는 테이블 스페이스를 활성화 시키며, 생성 후 바로 사용할 수 있게 함
       OFFLINE : 테이블 스페이스를 비활성화 시키며, 생성 후 바로 사용할 수 없음

   - PERMANT/TEMPORARY : TEMPORARY 옵션을 사용하면 생성하는 테이블스페이스는
                                         임시 테이블스페이스가 됩니다. 

 
- DEFAULT STORAGE
     * INITIAL : 테이블 스페이스의 맨 첫번째 Extents의 크기
     * NEXT : 다음 Extents의 크기
     * MINEXTENTS : 생성할 Extents의 최소 값
     * MAXEXTENTS : 생성할 Extents의 최대 값
     * PCTINCREASE : Extents의 증가율, Default값은 50 입니다

테이블 스페이스 생성 예제

-- sysdba권한으로 접속을 합니다.
SQL> conn sys/manager as sysdba

-- 테이블스페이스 생성
SQL>CREATE TABLESPACE storm
         DATAFILE 'C:\ORACLE\ORADATA\app_data.dbf' SIZE 100M
         DEFAULT STORAGE
             (INITIAL    10K
              NEXT      10K
              MINEXTENTS 2
              MAXEXTENTS 50
              PCTINCREASE 50)

▣ 테이블스페이스의 자동 확장

▣ 생성한 데이터파일이 다 채워졌을 경우 자동으로 데이터 파일을 확장하는 방법 입니다.

AUTOEXTEND 옵션을 사용 하시면 됩니다.

▣ AUTOEXTEND 옵션 사용법
   - ON 아니면 OFF
   - CREATE DATABASE, CREATE TABLESPACE, ALTER TABLESPACE에서
     사용 할 수 있습니다.

▣ AUTOEXTEND 사용 예제

SQL> ALTER TABLESPACE storm
          ADD DATAFILE 'C:\ORACLE\ORADATA\app_data02.dbf' SIZE 200M
          AUTOEXTEND ON NEXT 10M
          MAXSIZE 500M;

storm 테이블스페이스에 200M 데이터 파일을 추가 했는데요, 
이 데이터 파일의 크기인 200M를 전부 사용하게 되면 500M이 될 때까지 자동으로  10M 증가합니다.



▣ AUTOEXTEND 의 OFF

 SQL>  ALTER DATABASE DATAFILE ‘C:\ORACLE\ORADATA\app_data02.dbf'
                 AUTOEXTEND OFF;

App_data02.dbf파일의 자동확장을 중지 시킵니다.



개발계정을 생성 및 권한 부여

  sqlplus system/oracle

CREATE USER dosudev   // dosudev 계정생성/
IDENTIFIED BY oracle   // Password를 oracle로 설정
DEFAULT TABLESPACE prjdosu  // prjdosu 의 테이블 스페이스를 사용한다.
QUOTA unlimited ON prjdosu   // prjdosu 테이블스페이스의 내용을 모두 쓸수 있다.
TEMPORARY TABLESPACE temp ;  // 임시영역


▣ 계정에 대한 권한 설정.
GRANT  CREATE SESSION     ,CREATE TABLE  //  로그인, 테이블 생성 권한
 ,CREATE SEQUENCE   ,CREATE VIEW  // 등등.. '_';
TO dosudev ;


▣ Tablespace 생성.   
    CREATE TABLESPACE TS_NAME
    DATAFILE  '/dev/vx/rdsk/dg_01/TS_NAME_FILE01.dbf' SIZE modifyM
    DEFAULT STORAGE (INITIAL 512K   NEXT 1M   MINEXTENTS 1   MAXEXTENTS 2147483645   PCTINCREASE 0) ;   

▣ 데이터 파일 추가
    ALTER TABLESPACE TS_NAME ADD DATAFILE 'C:\OHome\Data11.dbf' SIZE 1M;

▣ 데이터 파일 크기변경.
    ALTER DATABASE DATAFILE/TMMPFILE 'C:\OHome\Data11.dbf' RESIZE 3M;   

▣ 데이터 파일 속성변경 : 자동 확장
    ALTER DATABASE DATAFILE 'C:\OHome\Data11.dbf' AUTOEXTEND ON/OFF;   
    Alter Tablespace TS_NAME offline/online;   

▣ Tablespace 삭제
    Alter tablespace TS_NAME  offline;
    Drop tablespace TS_NAME  including contents and datafiles;

-----------------------------------------------------------------------------------------
▣ Tablespace 삭제
 
  - Tablespace가 더이상 필요없는 경우 Tablespace와 내용을 삭제
 
  - Drop Tablespace 권한 필요
 
  - Tablespace 삭제시 주의 사항
     1. Tablespace를 삭제하면 데이터 복구가 불가능하므로 삭제할 Tablespace에 있는 데이터가 나중에 필요없는지 여부를 판단한 후 삭제
     2. Tablespace삭제 전과 후 데이터베이스 Full backup필요 => 나중에 문제 발생시 복구가 가능하도록 하기 위해
    
  - Tablespace를 Oracle에서 삭제한 후 OS명령어(Del,rm)로 삭제된 Tablespace의 데이터파일을 삭제해야 함
 
  - 사용중인 세그먼트가 들어 있는 Tablespace삭제불가(Tablespace의 테이블 현재 사용중인 경우, Tablespace에 사용중인 Rollback Segment가 포함된 경우)
    => Tablespace를 Offline상태로 변경한 후에만 삭제 가능
   
  - Tablespace삭제한 후 Tablespace에 대한 정보는 데이터딕셔너리에 남아 있으나 Tablespace상태가 INVALID
 
  - ex) DROP TABLESPACE sp_test INCLUDING CONTENTS
    => INCLUDING CONTENTS : Tablespace내에 데이터가 존재하는 경우
    => CASCADE CONSTRAINTS : Primary key, Foreign Key 등의 Constraint조건을 연속으로 삭제하는 경우



[참고자료 사용 예제]

CREATE TABLESPACE DB_DATA
DATAFILE '/oradata/test/db_data.dbf' SIZE 500M
AUTOEXTEND ON NEXT 50M
DEFAULT STORAGE( INITIAL 500K
                 NEXT 500K
                 MINEXTENTS 10 
                 MAXEXTENTS 121
                 PCTINCREASE 50);

CREATE USER dbuser
IDENTIFIED BY dbpassword
DEFAULT TABLESPACE DB_DATA
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON DB_DATA;

GRANT CREATE SESSION, DBA TO dbuser;




출처 : http://blog.naver.com/hi30000/120026607959
         http://demo.initech.com/?document_srl=539
         http://javaiyagi.tistory.com/entry/oracle-TABLESPACE-생성
         http://blog.naver.com/cosmosb612/80038885233