RMAN 증분 백업으로 M5 Cross-Endian XTTS를 사용하여 Oracle Database를 OCI로 마이그레이션
소개
이 사용지침서에서는 전체 전송 가능한 데이터 펌프 및 RMAN 증분 백업과 함께 M5 Cross Endian Platform Migration을 사용하여 Oracle Database를 OCI(Oracle Cloud Infrastructure)로 마이그레이션하는 방법에 대해 설명합니다.
이 방법을 사용하면 엔디언 형식이 다른 시스템 간에 마이그레이션하는 동시에 애플리케이션 작동 중지 시간을 최소화할 수 있습니다.
이 프로세스는 소스에서 대상으로의 전체 백업 복사본으로 시작됩니다. 그런 다음 증분 백업을 적용하여 대상이 소스와 거의 동기화되도록 유지합니다. 작동 중지 시간은 최종 증분 백업 및 메타데이터 내보내기/가져오기 중에만 필요합니다.
환경 세부 정보
- 소스 데이터베이스(비CDB):
- 데이터베이스 버전:
19.29.0.0 - 운영 체제:
AIX
- 데이터베이스 버전:
- 대상 데이터베이스(비CDB):
- 데이터베이스 버전:
19.29.0.0 (OCI) - 운영 체제:
Oracle Linux
- 데이터베이스 버전:
목표
- RMAN 증분 백업과 함께 XTTS(교차 플랫폼 전송 가능 테이블스페이스)를 사용하여 다운타임을 최소화하면서 엔디언 플랫폼 간에 데이터를 이전합니다.
필수 조건
-
소스 및 대상 데이터베이스는
ARCHIVELOG모드여야 합니다. -
이 절차에서는 원본 데이터베이스에 대해 최소 v19.18 버전을 지원합니다. Oracle Database 26ai로의 업그레이드가 지원됩니다.
-
테이블스페이스
SYSTEM,SYSAUX,UNDO및TEMP는 제외됩니다. 다른 모든 테이블스페이스는dbmig_ts_list.txt에 포함되어야 합니다. -
교차 플랫폼은 Enterprise Edition에서만 가능합니다. 이 절차는 Standard Edition에서 사용할 수 없습니다.
-
문자 집합은 원본 데이터베이스와 대상 데이터베이스에서 동일해야 합니다.
-
대상 데이터베이스에서
db_create_file_dest매개변수를 설정해야 합니다. -
19.10 이상 KB107134에 대한 MOS 노트 데이터 펌프 권장 사전 예방 패치를 검토하고 소스 및 대상 모두에서 19.18 이상 데이터베이스에 대해 필요한 모든 수정 사항을 적용합니다.
-
MOS 노트 Data Pump Recommended Proactive Patches For 23ai / 26ai KB160561을 검토하고 대상의 26ai 이상 데이터베이스에 대해 필요한 모든 수정 사항을 적용합니다.
-
블록 변경 사항 추적을 활성화하여 Incremental 백업의 성능을 향상시킵니다(선택 사항).
-
테이블스페이스는
READ WRITE모드여야 합니다. -
READ ONLY모드의 테이블스페이스는 표준 XTTS를 사용하여 이전할 수 있습니다. -
COMPATIBLE매개변수는 소스와 대상에서 동일해야 합니다(최소19.0.0.0). -
RMAN는
BACKUPSET를 사용해야 합니다.COPY를 사용하지 않아야 합니다.
작업 1: 소스 데이터베이스 준비
-
다음 query를 실행하여 원본 데이터베이스의 엔디언 형식을 확인합니다.
col PLATFORM_NAME for a50 select platform_name, platform_id, endian_format from v$transportable_platform; -
전송될 소스 데이터베이스의 테이블스페이스를 식별합니다. 모든 테이블스페이스를 이전하는 경우 다음 질의를 실행합니다.
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX'); -
Transport Set 위반 확인:
exec dbms_tts.transport_set_check('<comma-separated tablespace list>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS; -
(선택 사항) 소스 데이터베이스에서 블록 변경 사항 추적을 사용으로 설정하여 증분 백업의 성능을 향상시킵니다.
-
모든 테이블스페이스가 원본 데이터베이스에서 온라인 상태인지 확인합니다.
작업 2: Target Database 준비
-
새 users 테이블스페이스를 생성합니다.
select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI'; select TABLESPACE_NAME from dba_tablespaces order by 1; set long 99999 SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;위의 DDL(데이터 정의어) 출력을 사용하고 아래와 같이 디스크 그룹 이름을 바꾸고 새 users 테이블스페이스를 생성합니다.
CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2' SIZE 1073741824 AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE ENCRYPTION USING 'AES256' ENCRYPT DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;다음 질의를 사용하여 기본 테이블스페이스가 USERS인 모든 데이터베이스 사용자에게 새 사용자 테이블스페이스 USERS_OCI를 지정합니다.
select 'alter user '||username||' default tablespace USERS_OCI;' from dba_users where default_tablespace='USERS';위 select 질의에 대한 출력은 새 users 테이블스페이스를 재지정한 후 0을 반환해야 합니다.
select count(*) from dba_users where default_tablespace='USERS'; ALTER DATABASE DEFAULT TABLESPACE USERS_OCI; drop tablespace users including contents and datafiles; select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS'; -
Target Database에 임시 테이블스페이스를 생성합니다. 소스에 대해 다음 query를 실행하고 테이블스페이스 세부 정보를 수집합니다.
소스에서 다음 query를 실행합니다.
select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';그런 다음 Target Database에 임시 테이블스페이스를 생성합니다. 예:
create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
작업 3: 증분 M5 XTTS 단계
작업 3.1: 초기 단계
-
최신 M5 스크립트를 다운로드하고 M5 Cross Endian Platform Migration using Full Transportable Data Pump Export/Import and RMAN Incremental Backups (Doc ID 2999157.1)에서 압축을 풉니다. 소스와 대상 간에 공유되는 NFS 공유에 작업 디렉토리를 만듭니다. NFS 공유에 대한 경로는 소스와 대상 모두에서 동일해야 합니다.
NFS 공유가 불가능한 경우 로컬 저장소를 사용합니다. 소스 호스트에 디렉토리를 생성하고 대상 호스트에 복사합니다. 이 작업은 프로세스 전체에서 여러 번 반복되어야 합니다. 소스 및 대상 호스트의 경로는 동일해야 합니다. 그렇지 않은 경우 이 절차의 범위를 벗어난 스크립트에 다양한 변경이 필요합니다.
mkdir -p <Shared_location>/XTTS_Migration mkdir -p <Shared_location>/XTTS_Migration/Backup mkdir -p <Shared_location>/XTTS_Migration/DPPUMP cd <Shared_location> unzip DBMIG.zip파일에는 다음이 포함됩니다.
dbmig_driver_m5.sh: 마이그레이션 드라이버 스크립트입니다.impdp.sh: 드라이버 스크립트를 임포트합니다.log디렉토리: 런타임에 생성됩니다. RMAN 백업 로그, 이전 로그 및 추가 로그를 저장합니다.rman_mig_bkp.log: 중앙화된 마이그레이션 로그 파일.rman_mig_bkp.lck: 동시 드라이버 실행을 방지하기 위해 모든 백업의 시작 부분에 생성된 잠금 파일입니다. 드라이버 실행이 중단되면 잠금이 제거되지 않습니다. Lock을 제거하기 전에 문제를 조사하고 해결해야 합니다.
cmd디렉토리: 런타임에 생성됩니다. RMAN 백업 및 복원 스크립트를 저장합니다.dbmig_driver.properties: 환경 변수.dbmig_ts_list.txt: 콤마로 구분된 테이블스페이스 목록입니다.
-
사용 중인 환경을 반영하도록 dbmig_driver.properties(cmd 디렉토리)의 변수를 수정합니다. 여기서 구성 파일
dbmig_driver.properties섹션의 매개변수 설명을 참조하십시오. M5 Cross Endian Platform Migration using Full Transportable Data Pump Export/Import and RMAN Incremental Backups.dbmig_driver.properties 샘플 파일
############################################################ #Source database properties #my_M5_prop_version=2 # - # - ORACLE_HOME Path to Oracle Home # - ORACLE_SID SID of the source database # - SRC_SCAN Connect string to source database via SCAN. # If no SCAN, specify source database network name. # Enclose in single quotes # Example: '@myhost-scan/db1' # Example: '@localhost/pdb1' # - MIG_PDB Accepted values: 0, 1 # Choose 0 if source is non-CDB # Choose 1 if source is a PDB # - PDB_NAME If source is a PDB, specify PDB name. # Else leave blank # Example: PDB1 # - BKP_FROM_STDBY Accepted values: 0, 1 # Choose 0 to back up from primary database, # or if Data Guard is not in use. # Choose 1 to back up from standby database. ############################################################ export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=soldb1918 export SRC_SCAN='@scan1/soldb1918' export MIG_PDB=0 export PDB_NAME= export BKP_FROM_STDBY=0 ############################################################ #Source Data Pump settings # - SOURCE_DPDMP Directory path of the directory DATA_PUMP_DIR # Example: /u01/app/oracle/m5/data_pump_dir # - SOURCE_DPIR Data Pump Directory, typically DATA_PUMP_DIR # - SYSTEM_USR Username for Data Pump export. # Do not use SYS AS SYSDBA # Example: SYSTEM # - DP_TRACE Data Pump trace level. # Use 0 to disable trace. # Use 3FF0300 to full transportable tracing # See MOS Doc ID 286496.1 for details. # - DP_PARALLEL Data Pump parallel setting. # Accepted values: 1 to 999 # Example: 16 ############################################################ export SOURCE_DPDMP=<Shared_location>/XTTS_Migration/DPPUMP export SOURCE_DPDIR=DATA_PUMP_DIR export SYSTEM_USR=SYSTEM export DP_TRACE=0 export DP_PARALLEL=1 export DP_ENC_PROMPT=N ############################################################ #Source RMAN settings # - BKP_DEST_TYPE Accepted values: DISK, SBT_TAPE # Choose DISK to backup up to local storage # Choose SBT_TAPE to use ZDLRA # - BKP_DEST_PARM If BKP_DEST_TYPE=DISK, enter location for backup: # Example: /u01/app/oracle/m5/rman # If BKP_DEST_TYPE=SBT_TAPE, enter channel configuration: # Example: "'%d_%U' PARMS \"SBT_LIBRARY=<oracle_home>/lib/libra.so,SBT_PARMS=(RA_WALLET='location=file:<oracle_home>/dbs/zdlra credential_alias=<zdlra-connect-string>')\"" # - CAT_CRED If you use RMAN catalog or ZDLRA, specify connect string to catalog database # Example: <scan-name>:<port>/<service> # - SECTION_SIZE Section size used in RMAN backups # - CHN Number of RMAN channels allocated ############################################################ export BKP_DEST_TYPE=DISK export BKP_DEST_PARM=<Shared_location>/XTTS_Migration/Backup export CAT_CRED= export SECTION_SIZE=64G export CHN=8 ############################################################ #Destination host settings #If specified, the script transfers the RMAN backups and #Data Pump dump file to the destination via over SSH. #SSH equivalence is required. # - DEST_SERVER Network name of the destination server. # Leave blank if you manually transfer # backups and dump files # - DEST_USER User for SSH connection # Example: oracle # - DEST_WORKDIR The script working directory on destination # Example: /u01/app/oracle/m5 # - DEST_DPDMP The directory path used by DATA_PUMP_DIR # in destination database # Example: /u01/app/oracle/m5/data_pump_dir ############################################################ export DEST_SERVER=srvadm01 export DEST_USER=oracle export DEST_WORKDIR=<Shared_location>/XTTS_Migration export DEST_DPDMP=<Shared_location>/XTTS_Migration/DPDUMP ############################################################ #Advanced settings #Normally, you don't need to edit this section ############################################################ export WORKDIR=$PWD export LOG_DIR=${WORKDIR}/log export CMD_DIR=${WORKDIR}/cmd export PATH=$PATH:$ORACLE_HOME/bin export DT='date +%y%m%d%H%M%S' export CMD_MKDIR='which mkdir' export CMD_TOUCH='which touch' export CMD_CAT='which cat' export CMD_RM='which rm' export CMD_AWK='which awk' export CMD_SCP='which scp' export CMD_CUT='which cut' export CMD_PLATFORM='uname' if [[ "$CMD_PLATFORM" = "Linux" ]]; then export CMD_GREP="/usr/bin/grep" else if [[ "$CMD_PLATFORM" = "AIX" ]]; then export CMD_GREP="/usr/bin/grep" else if [[ "$CMD_PLATFORM" = "HPUX" ]]; then export CMD_GREP="/usr/bin/grep" else export CMD_GREP='which ggrep' fi fi fi export my_M5_prop_version=2소스 및 대상 데이터베이스에서 데이터 펌프 덤프 파일에 대한 디렉토리를 생성합니다.
create directory M5_XTTS_MIG as '<Shared_Location>/XTTS_Migration/DPDUMP'; grant read,write on directory M5_XTTS_MIG to sys,system;
작업 3.2: 레벨 0 백업 및 복원
-
소스 시스템에서 환경 변수(
ORACLE_HOME및ORACLE_SID)가 소스 데이터베이스로 설정된 상태로 Oracle 사용자로 로그인한 다음 백업을 실행합니다.cd <Shared_location> nohup sh dbmig_driver_m5.sh L0 & -
공유 NFS를 사용하지 않는 경우 작업 디렉토리를 대상 호스트에 복사합니다.
-
대상 시스템에서 데이터 파일을 복원합니다.
대상에서 환경을 대상 데이터베이스로 설정합니다. 드라이버 스크립트는 복원 스크립트를 만듭니다. 이 정보는 cmd 디렉토리에 저장됩니다.
cd <Shared_location>/XTTS_Migration cp nohup.out nohup.out_L0 ls -ltra cmd/restore_L0_* rman target / cmdfile=<restore_cmdfile_name>RMAN 로그 파일 확인:
egrep "WARN-|ORA-" log/restore_*.log
태스크 3.3: 롤포워드 단계
이 단계 중에 증분 백업이 원본 데이터베이스에 생성되어 대상 시스템으로 전송됩니다.
백업이 대상 엔디언 형식으로 변환되고 대상 데이터 파일에 적용됩니다. 이 프로세스는 대상 데이터베이스를 동기화 상태로 유지하기 위해 여러 번 반복될 수 있습니다.
각 증분 백업은 이전 백업보다 작으며 최종 작동 중지 시간이 줄어듭니다.
주: 대상에 백업을 적용하지 않고 소스에 대해 여러 백업을 실행할 수 있습니다.
- 소스에서 소스 데이터베이스의 레벨 1(L1) Incremental 백업을 실행합니다.
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1 &
-
공유 NFS를 사용하지 않는 경우 작업 디렉토리를 대상 호스트에 복사합니다.
-
대상 시스템의 데이터 파일 복사본에 Incremental 백업을 적용합니다. 대상 시스템에서 적절한 환경 변수가 설정된 Oracle 유저로 로그인하고 다음과 같이 롤포워드 데이터 파일 단계를 실행합니다.
대상 시스템에서 해당 환경 변수가 설정된 Oracle 유저로 로그인합니다. 드라이버 스크립트는 복원 스크립트를 만듭니다. cmd 디렉토리에 저장됩니다. 즉, 최신 복원 스크립트를 사용하여 대상 데이터베이스에서 레벨 1(L1) 백업을 복원합니다.
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1_*
cp nohup.out nohup.out_3
rman target / cmdfile=<restore_cmdfile_name>
RMAN 로그 파일 확인:
egrep "WARN-|ORA-" log/restore_*.log
롤포워드 단계는 대상 데이터베이스에 연결하고 전송 중인 각 테이블스페이스에 대해 테이블스페이스의 데이터 파일에 증분 백업을 적용합니다.
데이터베이스 컷오버 창까지 롤포워드 단계를 반복합니다.
작업 3.4: 최종 증분 백업 단계
- 임포트가 완료될 때까지 소스 및 대상에서 다음 감사 관련 매개변수를 사용 안함으로 설정합니다. 임포트가 완료된 후 다시 사용으로 설정:
show parameter audit_sys_operations
show parameter audit_trail
alter system set audit_trail=none scope=spfile sid='*';
alter system set audit_sys_operations=FALSE scope=spfile sid='*';
srvctl stop database -d ${ORACLE_UNQNAME}
srvctl start database -d ${ORACLE_UNQNAME}
show parameter audit_sys_operations
show parameter audit_trail
- 소스에서 소스 데이터베이스의 최종 레벨 1(L1) Incremental 백업을 실행합니다.
스크립트는 다음을 수행합니다. - 시스템 암호에 대한 프롬프트 - 테이블스페이스를 읽기 전용 모드로 설정합니다. - 최종 증분 백업을 실행합니다. - 데이터 펌프 엑스포트를 실행합니다.
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1F &
-
공유 NFS를 사용하지 않는 경우 작업 디렉토리를 대상 호스트에 복사합니다.
-
대상 데이터 파일에 마지막 증분 백업을 적용합니다.
대상에서 환경을 대상 데이터베이스로 설정합니다. 드라이버 스크립트는 복원 스크립트를 만듭니다. 이 정보는 cmd 디렉토리에 저장됩니다.
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1F_*
최종 복원 스크립트를 사용하여 대상 데이터베이스에서 최종 레벨 1(L1) 백업을 복원합니다.
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_5
nohup rman target / cmdfile=<restore_cmdfile_name> &
RMAN 로그 파일 확인:
egrep "WARN-|ORA-" log/restore_*.log
작업 3.5: 데이터 펌프 임포트
-
대상에서 임포트 드라이버 스크립트(impdp.sh)를 편집합니다. 대상 데이터베이스에 대한 정보를 사용하여 변수를 채웁니다.
ORACLE_HOME: Oracle 홈에 대한 경로ORACLE_SID: 대상 서버 데이터베이스 SIDORACLE_CONNECT_STRING: 접속 문자열DATA_PUMP_PARALLEL: 병렬 레벨DATA_PUMP_TRACE: 추적 레벨
가져오기 드라이버 스크립트는 다음 네 가지 매개변수를 사용합니다.
expdp_dumpfile: Name of the Data Pump dump file, e.g., exp_UP19_240206134155.dmp
rman_last_restore_log: Relative path to the last RMAN restore log
run-mode: One of the below:
test: Generates the Data Pump parameter file. Does not start Data Pump.
test-readonly. Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Does not start Data Pump.
run: Generates the Data Pump parameter file. Starts Data Pump to perform the import.
run-readonly: Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Starts Data Pump to perform the import.
DP_ENC_PROMPT:
One of the below
Y: Will prompt the user for an encryption password in case one was used for the export
N: Will not prompt the user for an encryption password.
생성된 데이터 펌프 파라미터 파일의 정확성을 확인하려면 임포트 드라이버 스크립트를 테스트 모드로 시작합니다.
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> test N
드라이버 스크립트는 현재 디렉토리에 파라미터 파일을 생성합니다. 검사합니다.
$ vi imp_<oracle_sid>_<timestamp>_xtts.par
생성된 데이터 펌프 파라미터 파일은 변경하지 마십시오. 파라미터 파일을 변경해야 하는 경우 원하는 파라미터 파일이 생성되도록 드라이버 스크립트의 코드를 변경합니다.
실행 모드에서 드라이버 임포트 스크립트를 시작하여 Data Pump 임포트를 수행합니다.
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> run N
항상 데이터 펌프 로그 파일을 검토합니다. Data Pump가 성공적으로 나열되더라도 항상 Data Pump 로그 파일에서 critical 오류를 검토해야 합니다.
- 임포트가 완료된 후 소스 및 대상 데이터베이스에서 감사 매개변수를 다시 사용으로 설정합니다.
show parameter audit_sys_operations
show parameter audit_trail
alter system set audit_trail=<value before migration taken above> scope=spfile sid='*';
alter system set audit_sys_operations=<value before migration taken above> scope=spfile sid='*';
srvctl stop database -d ${ORACLE_UNQNAME}
srvctl start database -d ${ORACLE_UNQNAME}
show parameter audit_sys_operations
show parameter audit_trail
- 전송된 데이터를 검증합니다.
rman target sys/<password>@<target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
validate tablespace <comma-separated tablespace list> check logical;
- users 테이블스페이스를 지정하여 Target Database 준비에서 수행한 변경 사항을 되돌립니다.
select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
Execute the alter commands generated by above select query.
select count(*) from dba_users where default_tablespace='USERS_OCI';
ALTER DATABASE DEFAULT TABLESPACE USERS;
drop tablespace USERS_OCI including contents and datafiles;
select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
소스 및 대상 데이터베이스의 데이터를 검증합니다.
관련 링크
승인
- 작성자 - Pavan Yennampelli(주요 클라우드 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Migrate Oracle Database to OCI Using M5 Cross-Endian XTTS with RMAN Incremental Backups
G56676-01