database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 8772 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 8772
특정 TABLE을 다른 TABLESPACE로 옮기는 방법
작성자
정재익(advance)
작성일
2001-12-08 01:27
조회수
5,232

특정 TABLE을 다른 TABLESPACE로 옮기는 방법

 

현재 user가 사용중인 tablespace의 특정 테이블을 다른 tablespace의 
  영역으로 옮기는 방법은 다음과 같다.

  예를 들어 SCOTT user의 DEPT table이 현재 USERS tablespace에 있는 경우,
  이것을 TOOLS tablespace로 옮기는 경우 다음과 같은 순서대로 작업을 
  하여야 한다.

(1) DEPT table을 export한다.

    os> exp scott/tiger file=file_name.dmp tables=dept

(2) 이전하고자 하는 tablespace인 TOOLS가 없는 경우에는 다음과 같이 
    생성한다. datafile의 위치나 크기는 임의로 설정한다.

    os> svrmgrl (7.2이하의 경우 sqldba lmode=y)
    SVRMGR> CONNECT INTERNAL;
    SVRMGR> CREATE TABLESPACE tools 
            DATAFILE '/user1/oracle_data/tools01.dbf' SIZE 100M;

(3) 옮기고자 하는 table의 owner인 SCOTT의 default talbespace를 
    table을 새로 위치시킬 tablespace인 TOOLS로 임시 지정한다.

    SVRMGR> alter user scott default tablespace tools;

(4) SCOTT가 임시로 TOOLS에만 insert 가능하도록 다음과 같이 조치한다.
    
    SVRMGR> revoke unlimited tablespace from scott;
    SVRMGR> alter user scott quota 0 on users;

(5) (1)에서 export받은 DEPT를 다시 SCOTT user로 import한다.

    os> imp scott/tiger file=file_name.dmp full=y commit=y

(6) IMPORT 후 각 TABLE이 해당 TABLESPACE로 변경되었는지 확인

    os> sqlplus scott/tiger
    SQL> select tablespace_name from user_tables where table_name = 'DEPT';

(7) SCOTT의 권한 및 default tablespace를 원상태로 복구시킨다.

    SVRMGR> grant unlimited tablespace to scott;
    SVRMGR> alter user scott default tablespace users;

* 이자료는 Oracle Korea Customer Support Technical Bulletins를 참조했습니다.
이 글에 대한 댓글이 총 1건 있습니다.

좀더 효율적인 방법

 

다 아시리라 생각하지만 적어봅니다.

 

CREATE TABLE AS SELECT 기능인데 UNRECOVERABLE option과

CPU가 여유있다면 PARALLEL(DEGREE parallel서버수)를 주고

재생성한다면 다음과 같은 면에서 장점이 있습니다.

1. export의 과정을 거치지 않으므로 속도면에서 훨씬 빠름

2. User의 default테이블스페이스를 바꾸지 않아도 됨

3. Parallel Option으로 시스템의 사정에 따라

적절히 대응

4. Storage 파라메터를 다시 재구성 가능함

5. Temporary table이나 다른 테이블과 Join도 가능

단점

1. create as select시 column에 defaults가 걸려 있다면

이는 ALTER TABLE명령으로 다시 수행

2. Parallel Option을 사용했다면 수행 후

반드시 ALTER TABLE TABLE명 noparallel;로 수정할 것

3. Index를 재구성할 수 있는 DDL문을 가지고 있어야한다.

4. 권한 재구성

Step>

1. a table에 대한 constraint와 index를만드는 DDL문 생성

2. create table a_new

unrecoverable

parallel(degree 4)

tablespace tools

as select * from a ;

3. drop table a;

4. rename a_new to a;

5. alter table a noparallel;

6. Constraint와 Index 재구성 (1번 항목에서 생성한 DDL로)

7. 권한 재 부여

4. rename a

advance님이 2001-12-08 01:28에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8853Oracle 8 - Database Administration (1)
정재익
2001-12-12
14342
8827Oracle 8 - SQL & PL/SQL (2)
정재익
2001-12-11
15399
8825Oracle 8 - SQL & PL/SQL (1)
정재익
2001-12-11
14599
8772특정 TABLE을 다른 TABLESPACE로 옮기는 방법 [1]
정재익
2001-12-08
5232
8771DB 이름과 오라클 SID 를 변경하는 방법
정재익
2001-12-08
8393
8770OPS 란 - 간략한 개요
정재익
2001-12-08
8156
8769OS 명령으로 DATAFILE을 삭제한 경우:ORA-1157,1110
정재익
2001-12-08
5533
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.074초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다