코드 :
다음과 같이 12c ts20000 테이블 스페이스를 19c 로 TTS 이관 하시오
--12c
--ts20000 테이블 스페이스를 read only 로 변경합니다.
select t.name, d.enabled, d.name
from v$tablespace t, v$datafile d
where t.ts# = d.ts#;
alter tablespace ts20000 read only;
--ts20000 테이블 스페이스를 테이블 스페이스 레벨로 export pump 합니다.
expdp directory=datapump_dir dumpfile=ts20000.dmp transport_tablespace=y tablespaces=ts20000
--ts20000.dbf 와 ts20000.dmp 파일을 scp 명령어로 oracle 19c 리눅스로 보냅니다.
scp /home/oracle/pump_ora12c/ts20000.dmp oracle@192.168.23.152:/home/oracle/pump_ora19c/
scp /u01/app/oracle/oradata/ora12/ts20000.dbf oracle@192.168.23.152:/home/oracle/oradata
코드 :
--19c
drop user sh2 cascade;
create user sh2
identified by sh2
default tablespace users
temporary tablespace temp
quota unlimited on users;
grant connect, resource to sh2;
grant create view to sh2;
grant create sequence to sh2;
impdp transport_datafiles='/home/oracle/oradata/ts20000.dbf' directory=datapump_dir dumpfile=ts20000.dmp remap_schema=sh:sh2
--tablespace READ WRITE 복구 (sys에서 실행)
ALTER TABLESPACE ts20000 READ WRITE;
GRANT CREATE DATABASE LINK TO sh2;
--기본 테이블스페이스 변경 (sys에서 실행)
ALTER USER sh2 DEFAULT TABLESPACE ts20000;
--새 테이블스페이스(ts20000)에 무제한 할당량 부여
ALTER USER sh2 QUOTA UNLIMITED ON ts20000;
-- (선택사항) 기존 users 테이블스페이스의 할당량 회수
-- 만약 더 이상 users를 못 쓰게 하려면 실행하세요.
ALTER USER sh2 QUOTA 0 ON users;
--DB Link 생성 (sh2 에서 실행)
DROP DATABASE LINK sh_link;
CREATE DATABASE LINK sh_link
CONNECT TO sh
IDENTIFIED BY sh
USING '192.168.23.102:1521/ora12';
코드 :
-- 테이블
SELECT table_name FROM user_tables
MINUS
SELECT table_name FROM user_tables@sh_link;
SELECT table_name FROM user_tables@sh_link
MINUS
SELECT table_name FROM user_tables;
-- 인덱스
SELECT index_name FROM user_indexes
MINUS
SELECT index_name FROM user_indexes@sh_link;
SELECT index_name FROM user_indexes@sh_link
MINUS
SELECT index_name FROM user_indexes;
-- 제약
SELECT constraint_name FROM user_constraints
MINUS
SELECT constraint_name FROM user_constraints@sh_link;
SELECT constraint_name FROM user_constraints@sh_link
MINUS
SELECT constraint_name FROM user_constraints;
-- 시퀀스
SELECT sequence_name FROM user_sequences
MINUS
SELECT sequence_name FROM user_sequences@sh_link;
SELECT sequence_name FROM user_sequences@sh_link
MINUS
SELECT sequence_name FROM user_sequences;
-- 시너님
SELECT synonym_name FROM user_synonyms
MINUS
SELECT synonym_name FROM user_synonyms@sh_link;
SELECT synonym_name FROM user_synonyms@sh_link
MINUS
SELECT synonym_name FROM user_synonyms;
-- 뷰
SELECT view_name FROM user_views
MINUS
SELECT view_name FROM user_views@sh_link;
SELECT view_name FROM user_views@sh_link
MINUS
SELECT view_name FROM user_views;
--갯수 확인
-- 테이블
SELECT count(*) FROM user_tables
union all
SELECT count(*) FROM user_tables@sh_link;
--14개 동일
-- 인덱스
SELECT count(*) FROM user_indexes
union all
SELECT count(*) FROM user_indexes@sh_link;
--28개 동일
-- 제약
SELECT count(*) FROM user_constraints
union all
SELECT count(*) FROM user_constraints@sh_link;
--137개 동일
-- 시퀀스
SELECT count(*) FROM user_sequences
union all
SELECT count(*) FROM user_sequences@sh_link;
--0개 동일
-- 시너님
SELECT count(*) FROM user_synonyms
union all
SELECT count(*) FROM user_synonyms@sh_link;
--0개 동일
-- 뷰
SELECT count(*) FROM user_views
union all
SELECT count(*) FROM user_views@sh_link;
--0개 동일