ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ORACE] TABLESPACE
    Developer/DB 2012. 12. 27. 16:43

    출처 및 참조 사이트 :
    1. http://www.zetswing.com/bbs/board.php?bo_table=ORACLE_TIP&wr_id=21
    2. http://blog.naver.com/jyhwan?Redirect=Log&logNo=150135281011

     

    -- 개념 --
    * * * * TABLESPACE 이해 - 요약 * * * *
     . 테이블 스페이스는 논리적인 storage 개념이다.
     . 테이블 스페이스는 물리적으로 하나 이상의 데이터 파일로 구성된다.
     . 테이블 스페이스는 크게 SYSTEM 테이블 스페이스와 NON-SYSTEM(USER) 테이블 스페이스로 구분된다.
     . segment data , index, rollback, temporary segment등으로 구분된다.
     . segment는 하나 이상의 extent들로 구성된다.
     . extent 란 연속적으로 할당된 free block 의 모음이다.
     . extent 는 기본 storage 할당 단위이다.
     . DB Block(Oracle Block) 은 기본 IO단위이다.
     . Local Management Tablespace(지역관리), Dictionary Management Tablespace(딕셔너리 관리)
    * * * * * * * * * * * * * * * * * * * *


    * * * * * * * * * * * * * * * * * * * *
    1. BLOCK : 오라클에서 말하는 데이터 입출력의 최소 단위.
    2. EXTENT : SEGMENT의 할당 단위 ( 1 EXTENT는 8BLOCK)
    3. SEGMENT : 테이블, 인덱스를 합쳐서 SEGMENT 라고 부름.
    4. TABLESPACE : SEGMENT를 저장해 놓은 공간
    5. DATABASE : TABLESPACE를 모아놓은 것
    6. QOUTA : 쿼터, 특정 TABLESPACE에 데이터를 얼마나 저장할 수 있는지에 대한 정의
    * * * * * * * * * * * * * * * * * * * *


    * * * * 임시 테이블 스페이스 만드는 이유 * * * *
    오라클에서 명령을 실행하면 명열을 해당 영역에 바로 저장하지 않고
    임시 공간에 저장했다가 이후에 해당 영역으로 가져가 저장합니다.
    이러한 이유로 임시 테이블 스페이스를 만듭니다. 또한 정렬시에도 사용.
    * * * * * * * * * * * * * * * * * * * * * * * * *


    * * * * Storage Parameter * * * * * * *
    Storage Parameter는 데이터가 저장되는
    객체인 Table과 Index의 최적화를 위해 사용되어진다.
    DMT 방식에서 사용 되는 옵션이고, 현재는 Oracle9i 이후로 사용하지 않는 옵션이다. (9i 이후로는 LMT 사용)
    Storage 생성 옵션
    INITIAL : 테이블이나 인덱스가 작성될 때 최초로 할당되는 크기이다. 다르게 말하면
        Segment 생성에 처음 할당되는 extent 크기로 디폴트는 5개의 데이터 블록이다.
    NEXT : 데이터량이 늘어나서 세그먼트에 공간이 더 필요하게 될 때 확장되는 크기를 말한다.
    PCTINCREASE : NEXT만큼 확장할 때 NEXT 값에 추가로 확장될 비율을 뜻한다.
         정확하게는 NEXT * (1 - PCTINCREASE/100) 크기만큼 씩 확장된다.
         롤백 세그먼트는 0으로 고정되어 있으며 기본 값은 50이지만 0으로 세팅하기를 권장한다.
    MINEXTENTS : 객체가 작성될 때 초기에 확장되는 개수를 세팅함
    MAXEXTENTS : Segment 에 할당될 수 있는 전체 Extent 의 수. 디폴트 99개.
    OPTIMAL : 롤백세그먼트에만 적용. 디폴트는 NULL.
    FREELISTS : 테이블에 데이터가 입력될 때 메모리 상에서 빈 블록을 필요로 한다.
       이 속성은 메모리 상에 빈 블록을 미리 확보해 놓는 수이다.
    * * * * * * * * * * * * * * * * * * * *

    -- Tip. Hot  --

    1. 오라클 서로 다른 계정의 테이블 복사하기. (SCOTT 계정의 emp 테이블을 scott2 계정으로 복사.)
     - create table scott2.emp table space mytablespace as select * from scott.emp;
     - 방법2 : http://www.zetswing.com/bbs/board.php?bo_table=ORACLE_TIP&wr_id=31
     
    2. 현재 oracle db의 만들어진TABLESPACE 보기
     - system 으로 로그인 해서 select * from dba_tablespaces; 쿼리 실행
     - 해당 계정으로 로그인해서 select distinct tablespace_name from user_tables; 쿼리 실행

     - select * from user_tablespaces;

    3. TABLESPACE 에 포함된 테이블 알아보기
     - SELECT TABLESPACE_NAME, TABLE_NAME FROM USER_TABLES WHERE TABLESPACE_NAME = '테이블스페이스명';

    4. 현재 ORACLE서버에 만들어져있는 TABLESPACE보기(SYSTEM계정에서 실행)
     - SELECT file_name, tablespace_name, bytes, status FROM DBA_DATA_FILES;
      * FILE_NAME : datafile의 물리적인 위치와 파일명을 알 수 있습니다.
      * TABLESPACE_NAME : 테이블 스페이스의 이름을 알 수 있습니다.
      * BYTES : 테이블 스페이스의 크기를 알수 있습니다.
      * STATUS : 테이블 스페이스의 이용 가능 여부를 알 수 있습니다.

    5. 현재 계정에서 사용할수 있는 테이블의 용량 조회
     - SELECT * FROM USER_SEGMENTS;

    6. TABLESPACE별 사용 가능한 공간의 확인
     - SELECT tablespace_name, SUM(bytes), MAX(bytes) FROM DBA_FREE_SPACE GROUP BY tablespace_name;
     - 용량 확인
     SELECT A.TABLESPACE_NAME
               , ROUND(A.BYTES,2) TOT_SIZE
               , ROUND((A.BYTES-B.BYTES),2) USE_SIZE
               , ROUND(B.BYTES,2) FREE_SIZE
        FROM (SELECT B.TABLESPACE_NAME
        , SUM(B.BYTES)/1024/1024/1024 BYTES
       FROM DBA_DATA_FILES B
       GROUP BY B.TABLESPACE_NAME
       ) A
        , (SELECT A.TABLESPACE_NAME
           , SUM(A.BYTES)/1024/1024/1024 BYTES
       FROM DBA_FREE_SPACE A
       GROUP BY A.TABLESPACE_NAME
       ) B
     WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME (+)
     ORDER BY 1
     
    7. TABLESPACE 생성
    CREATE TABLESPACE 스페이스명    
    DATAFILE '저장위치'    
    SIZE 테이블 스페이스 크기    
    AUTOEXTEND ON -- 자동 확장할건지 여부    
    NEXT 증가사이즈    
    MAXSIZE 최대크기;  

    8. TABLESPACE 변경
    ALTER TABLESPACE 스페이스명     -- 대상 TableSpace에서 명
    ADD DATAFILE filespec      -- 처음 TableSpace에서 생성한 물리적 파일과 다른 이름
    RENAME DATAFILE 'filename' to 'filename'   -- DATA 파일 이름 변경
    DEFAULT STORAGE storage_clause ;   -- ?
     
    9. TABLESPACE 제거
    DROP TABLESPACE 스페이스명
    INCLUDING CONTENTS         -- TableSpace의 모든 세그먼트 삭제, 즉 포함된 object, segment를 지움
    CASCADE CONSTRAINTS        -- 삭제된 TableSpace내의 테이블의 기본키와 유일키를 참조하는 다른
                  TableSpace의 테이블로부터 참조 무결성 제약조건을 삭제, (참조 무결성 깨지더라도 다지우겠다.)
    AND DATAFILES ;          -- 실 파일 삭제
     
    10. TABLESPACE + STORAGE 생성          --**oracle 9i로 이후로는 LMT 사용으로 사용하지 않는다. 추세 DMT
    CREATE TABLESPACE 스페이스명    
    DATAFILE 'E:\app\kipf_iam.dbf'     -- 저장위치
    SIZE 50M         -- 테이블 스페이스 크기    
    AUTOEXTEND ON         -- 자동 확장할건지 여부    
    NEXT 10M         -- 증가사이즈    
    MAXSIZE 100M         -- 최대크기
    DEFAULT STORAGE (       ** 스토리지 설정
     INITIAL 10K        -- 첫번째 Extents 크기
     NEXT 10K        -- 다음 Extents 크기
     MINEXTENTS 2       -- 생성할 Extents의 최소값
     MAXEXTENTS 50       -- 생성할 Extents의 최대값
     PCTINCREASE 50       -- Extents의 증가율(default값 50)
    ) ONLINE            -- 활성시키기  ONLINE(활성) :: OFFLINE(비활성)
     
     
    11. TABLESPACE + SEGMENT 생성     -- 미확실        
    CREATE TABLESPACE 스페이스명    
    DATAFILE 'E:\app\kipf_iam.dbf'     -- 저장위치
    SIZE 50M         -- 테이블 스페이스 크기    
    AUTOEXTEND ON         -- 자동 확장할건지 여부    
    NEXT 10M         -- 증가사이즈    
    MAXSIZE 100M         -- 최대크기
    LOGGING          -- LOGGING(활성) :: NOLOGGING(비활성)
    EXTENT MANAGEMENT LOCAL      -- 8i 부터 추가 됐으며 9i부터 디폴트
    SEGMENT SPACE MANAGMENT AUTO;     -- 9i 부터 추가 됐으며 10g 에 디폴트


    12. TEMPORARY TABLESPACE 생성      --** TEMPORARY TABLESPACE 생성
    CREATE TEMPORARY TABLESPACE 스페이스명    
    TEMPFILE 'E:\app\kipf_iam.dbf'     -- 저장위치
    SIZE 50M         -- 테이블 스페이스 크기    
    EXTENT MANAGEMENT LOCAL      -- Default 값임. SEGEMENT SPACE MANAGEMENT를 AUTO로 지정할 수 없다.
    AUTOALLOCATE 65536K       -- SORT_AREA_SIZE의 배수로 설정 크기[K:M]

    13. 세그먼트 (테이블, 인덱스) 재구성
    SQL> ALTER TABLE USER01.TAB01 MOVE TABLESPACE TS_DATA;            -- 테이블스페이스를 지정하지 않으면 현재 저장된 테이블스페이스에 재구성한다.
    SQL> ALTER INDEX USER01.IX_TAB01_01 REBUILD TABLESPACE TS_INDX;   -- 테이블스페이스를 지정하지 않으면 현재 저장된 테이블스페이스에 재구성한다.

     

     

    14. 현재 oracle 서버의 모든 계정 확인
     - select * from all_users;

     
    15. 사용자 생성 및 TABLESPACE , 인덱스TABLESPACE 지정
    CREATE USER [유저명]
    IDENTIFIED BY [비밀번호]
    DEFAULT TABLESPACE [테이블스페이스이름]
    TEMPORARY TABLESPACE [TEMP테이블스페이스이름]
    QUOTA UNLIMITED ON [INDEX테이블스페이스이름]


    16. 권한 생성(뷰 포함)
    GRANT CONNECT, RESOURCE TO [유저명];
    GRANT CREATE VIEW TO [유저명] ;

    17. 사용자 삭제
    DROP USER [유저명] CASCADE;

    (ex)
    CREATE TABLESPACE kipf_iam
    DATAFILE 'E:\app\kipf_iam.dbf'
    SIZE 500M
    AUTOEXTEND ON
    NEXT 100M
    MAXSIZE 1G

    'Developer > DB' 카테고리의 다른 글

    [ORACLE] 비밀번호 정책 확인 하기  (0) 2013.03.13
    [JSP]파일 업로드 기능 구현 참조 사이트  (0) 2013.03.04
    [ORACE] to_date  (0) 2013.01.07
    [ORACLE]START WITE CONNECT By PRIOR  (0) 2013.01.04
© 2018 T-Story. All right reserved.