데이터베이스 연구실.log

TTS 구조와 조건

TTS 검사 집합, 메타데이터, 데이터 파일 대응이며 검사 대상 불일치와 전체 이행 결과는 확인 불가

TRANSPORT_TABLESPACESTRANSPORT_DATAFILESV$TRANSPORTABLE_PLATFORMTTSTRANSPORT_SET_CHECKREAD ONLYSelf-contained

#핵심 요약

TTS는 메타데이터 덤프와 실제 데이터 파일을 함께 옮기는 방식으로 수업 자료에 설명되어 있음

이동 집합의 Self-contained 검사, 소스 READ ONLY, 문자셋, 플랫폼, Endian 호환성 확인이 필요함

시퀀스, 프로시저, 함수, 뷰는 TTS만으로 이전되지 않는다고 수업 자료가 구분함

#개념과 동작 원리

구간 실습의 설명
이동 전 DBMS_TTS.TRANSPORT_SET_CHECK 후 TRANSPORT_SET_VIOLATIONS에서 위반 확인
집합 경계 테이블, 인덱스, 외래키 참조가 이동 집합 밖에 걸치는지 확인
변경 차단 소스 테이블스페이스를 READ ONLY로 바꾸고 데이터 파일 복사 중 변경을 막음
기존 도구 exp의 TRANSPORT_TABLESPACE와 TABLESPACES로 메타데이터 Export, imp의 DATAFILES로 복사 파일 지정
Data Pump expdp의 TRANSPORT_TABLESPACES, impdp의 TRANSPORT_DATAFILES 사용
타깃 준비 객체 소유 사용자와 파일 접근 권한, Data Pump라면 DIRECTORY, 실제 OS 경로 준비
사후 확인 타깃 READ WRITE, 데이터 파일 등록, 테이블, 인덱스, 제약조건 확인, 사용자 기본 저장 위치, Quota 설정

실습의 「불일치 시」에는 READ WRITE 전환 후 테이블 MOVE와 인덱스 REBUILD로 저장 위치를 옮기는 명령이 있음(확인 불가)
어떤 위반을 해결했는지와 재검사 출력은 기재 없음

#주요 용어와 구성 요소

구문 의미
ts_list 실제로 이동할 테이블스페이스 이름들을 쉼표로 나열하는 검사 집합임
incl_constraints 참조 무결성 제약을 검사에 포함할지 지정하며 기본값은 FALSE임
full_check TRUE는 들어오는 의존성과 나가는 의존성을 함께 검사하며 기본 FALSE와 구분함

#필수 명령어 또는 SQL

항목 실행 조건
작업 대상 이동 집합의 문자셋, 플랫폼, 의존성, 메타데이터 덤프, 데이터 파일과 타깃 등록
필요 권한 검사는 SYSDBA 예시, TTS Export는 전체 Export 역할, Import는 해당 전체 Import 역할과 DIRECTORY, 파일 접근 권한 필요
바꿀 입력값 <TS_NAME> 목록, <USERNAME>, 파일별 경로, <TARGET_HOST>
결과 해석 위반이 없는 의존성 검사와 문자셋, 플랫폼 호환성 통과는 별개이며 실습 전체 이동 완료 출력은 기재 없음

#호환성과 이동 집합 확인 (양쪽)

SQL*Plus (SYSDBA, 소스·타깃)조회만 함
SELECT property_name, property_value
  FROM database_properties
 WHERE property_name IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

SELECT d.platform_name, t.endian_format
  FROM v$database d, v$transportable_platform t
 WHERE d.platform_name = t.platform_name;

EXEC DBMS_TTS.TRANSPORT_SET_CHECK('<TS_NAME>', TRUE);
SELECT * FROM transport_set_violations;

결과 해석: 두 DB의 문자셋과 Endian이 같고 TRANSPORT_SET_VIOLATIONS가 비어 있을 때 진행함
문자셋이 다르면 문자셋 호환성에서 다른 방법을 검토함

#Data Pump로 옮기기

소스 SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE DIRECTORY dpump AS '/home/oracle/dpump';
GRANT READ, WRITE ON DIRECTORY dpump TO <USERNAME>;
ALTER TABLESPACE <TS_NAME> READ ONLY;
oracle 계정 셸 (소스)객체 또는 설정을 변경함
expdp directory=dpump dumpfile=<TS_NAME>_tts.dmp transport_tablespaces=<TS_NAME>
scp /home/oracle/dpump/<TS_NAME>_tts.dmp oracle@<TARGET_HOST>:/home/oracle/
scp <SOURCE_DATA_DIR>/<TS_NAME>.dbf oracle@<TARGET_HOST>:<TARGET_DATA_DIR>/
타깃 SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE DIRECTORY dpump AS '/home/oracle/dpump';
CREATE USER <USERNAME> IDENTIFIED BY <PASSWORD>;
GRANT CREATE SESSION, CONNECT, RESOURCE TO <USERNAME>;
GRANT READ, WRITE ON DIRECTORY dpump TO <USERNAME>;
oracle 계정 셸 (타깃)객체 또는 설정을 변경함
mv /home/oracle/<TS_NAME>_tts.dmp /home/oracle/dpump/
impdp directory=dpump dumpfile=<TS_NAME>_tts.dmp \
  transport_datafiles='<TARGET_DATA_DIR>/<TS_NAME>.dbf'
타깃 SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER TABLESPACE <TS_NAME> READ WRITE;
ALTER USER <USERNAME> DEFAULT TABLESPACE <TS_NAME>;
ALTER USER <USERNAME> QUOTA UNLIMITED ON <TS_NAME>;
SELECT tablespace_name, file_name FROM dba_data_files;

결과 해석:

순서는 READ ONLY → 메타데이터 Export → 덤프와 데이터 파일 복사 → 타깃에 객체 소유 계정 준비 → TRANSPORT_DATAFILES로 Import → 타깃 READ WRITE → 계정 기본 테이블스페이스와 Quota

타깃에는 객체를 소유할 계정이 먼저 있어야 하고, 같은 이름의 테이블스페이스가 이미 있으면 붙일 수 없음

소스를 다시 READ WRITE로 돌릴지는 업무에 따라 정하며, 수업 자료도 백업용으로 보내는 경우가 아니면 필요한지 의문으로 남겼음

타깃 계정 생성 키워드는 IDENTIFIED임

#구문과 옵션 설명

본문의 TRANSPORT_SET_CHECK 두 번째 TRUE는 incl_constraints이며 full_check=TRUE를 지정한 호출이 아님
TRANSPORT_TABLESPACES는 메타데이터를 내보내고 TRANSPORT_DATAFILES는 복사된 데이터 파일을 지정함
검사 집합, READ ONLY 대상, Export 목록, 실제 파일 목록이 일치해야 함

#사용 조건과 주의사항

DUMP 설명 첫 줄의 데이터 파일 확장자와 실제 명령의 확장자가 다름
실제 파일은 DBA_DATA_FILES의 경로로 확인하는 대상으로 정리함

실습 Export, Import의 실제 실행 계정은 확인 불가이며 필요한 권한은 단계별로 구분함

READ ONLY 구간은 서비스 쓰기를 막을 수 있으며 실습에서는 중단 시간에 영향을 줄 수 있다고 설명함

Endian이 다를 때 변환이 필요하다는 설명은 있으나 변환 작업과 결과는 기재 없음

TTS Export에는 DATAPUMP_EXP_FULL_DATABASE 역할과 이동 집합 전체의 READ ONLY 상태가 필요함
작업 계정의 기본 테이블스페이스는 이동 집합 밖의 쓰기 가능한 공간이어야 함
DBMS_TTS 검사는 EXECUTE_CATALOG_ROLE 조건을 적용하고, Import 계정, DIRECTORY, 대상 파일 접근 권한을 별도로 확인함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기