본문 바로가기
ORACLE DBMS

BACKUP & RECOVERY #1 파일 이관 -일반 유저의 테이블이 sysaux에 있을 경우

by Boggi 2024. 8. 23.
반응형

● 일반 유저의 테이블이 sysaux에 있을 때 테이블 이관하기

 

테이블 스페이스 지정을 안 하고 TABLE을 생성해서 SYSAUX에 생성 됨

SYS@ORA19C>SELECT owner, table_name, tablespace_name, status FROM dba_tables WHERE owner='HR';

OWNER                TABLE_NAME           TABLESPACE_NAME      STATUS
-------------------- -------------------- -------------------- --------
HR                   REGIONS                               EXAMPLE              VALID
HR                   COUNTRIES                                                          VALID
HR                   LOCATIONS                            EXAMPLE              VALID
HR                   DEPARTMENTS                      EXAMPLE              VALID
HR                   JOBS                                        EXAMPLE              VALID
HR                   EMPLOYEES                           EXAMPLE              VALID
HR                   JOB_HISTORY                        EXAMPLE              VALID
HR                   EXCEPTIONS                          EXAMPLE              VALID
HR                   TEST                                          SYSAUX               VALID

 

데이터파일의 위치 확인

SYS@ORA19C>SELECT name FROM v$datafile;
NAME
--------------------------------------------------------------------------------
..
/u01/app/oracle/oradata/ORA19C/sysaux01.dbf
..

 

테이블 이관(MOVE)

ALTER TABLE hr.test MOVE TABLESPACE EXAMPLE;

 

이관이 잘 됐는지 확인

SYS@ORA19C>SELECT owner, table_name, tablespace_name, status FROM dba_tables WHERE owner='HR';


OWNER                TABLE_NAME           TABLESPACE_NAME      STATUS
-------------------- -------------------- -------------------- --------
HR                   REGIONS                               EXAMPLE              VALID
HR                   COUNTRIES                                                          VALID
HR                   LOCATIONS                            EXAMPLE              VALID
HR                   DEPARTMENTS                      EXAMPLE              VALID
HR                   JOBS                                        EXAMPLE              VALID
HR                   EMPLOYEES                           EXAMPLE              VALID
HR                   JOB_HISTORY                        EXAMPLE              VALID
HR                   EXCEPTIONS                          EXAMPLE              VALID
HR                   TEST                                         EXAMPLE              VALID

 

 

 

●인덱스 이관

 

테이블 스페이스 지정하지 않고 인덱스가 있는 테이블 생성하기

CREATE TABLE test2_inx(id number,
                       CONSTRAINT PK_TEST2_INX PRIMARY KEY(id));

 

테이블 확인하기

SYS@ORA19C>SELECT owner, table_name, tablespace_name, status FROM dba_tables WHERE owner='HR' AND TABLE_NAME='TEST2_INX';

OWNER                TABLE_NAME           TABLESPACE_NAME      STATUS
--------------------      --------------------               --------------------              ----------
HR                            TEST2_INX                       SYSAUX                  VALID

 

인덱스 확인하기

SYS@ORA19C>SELECT owner, index_name, table_name FROM dba_indexes WHERE owner='HR' AND TABLE_NAME='TEST2_INX';

OWNER                INDEX_NAME           TABLE_NAME
--------------------       --------------------          --------------------
HR                         PK_TEST2_INX         TEST2_INX

 

인덱스 이관하기(REBUILD)

ALTER INDEX HR.PK_TEST2_INX REBUILD TABLESPACE EXAMPLE ONLINE;

 

테이블과 인덱스 이관 확인

SELECT * fROM dba_segments WHERE owner='HR' AND segment_type = 'TABLE';
SELECT * fROM dba_segments WHERE owner='HR' AND segment_type = 'INDEX';

 

 

#꿀팁! 만약 옮길 데이터나 인덱스가 많으면 리터럴 문자를 사용하자!

SELECT 'ALTER TABLE '||owner||'.'||table_name||' MOVE TABLESPACE EXAMPLE;' FROM dba_tables WHERE owner = 'HR';

SELECT 'ALTER INDEX '||owner||'.'||index_name||' REBUILD TABLESPACE EXAMPLE ONLINE;' FROM dba_indexes WHERE owner='HR';

 

※ 파일 이관시 알아야 할 점

파일을 옮기면 rowid가 변경된다.