반응형
● 일반 유저의 테이블이 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가 변경된다.
'ORACLE DBMS' 카테고리의 다른 글
IMPORT & EXPORT 유틸리티 사용하기 - table레벨 (1) | 2024.09.10 |
---|---|
BACKUP & RECOVERY #3 CONTROL FILE 백업 (0) | 2024.08.24 |
sql프롬프트 변경하기 (0) | 2024.08.24 |
BACKUP & RECOVERY #2 초기 파라미터 백업 (0) | 2024.08.23 |
BACKUP & RECOVERY #0 DBA 명심할 부분 (0) | 2024.08.23 |