Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

버전 19c 데이터베이스를 사용한 Oracle EBS 복제

이 게시물에서는 Red Hat® Enterprise Linux®에서 RMAN(복구 관리자) 핫 백업을 사용하여 버전 19c 데이터베이스에서 온프레미스 Oracle®E-Business Suite®(EBS) R12.2로 복제하는 프로세스에 대해 설명합니다. 서버. 이 단계는 다른 운영 체제에도 적용됩니다.

EBS 복제

EBS 복제를 수행하려면 다음 상위 수준 단계를 완료해야 합니다.

  1. 소스 데이터베이스 및 애플리케이션 노드에서 사전 복제 유틸리티를 실행합니다.
  2. RMAN 핫 백업을 사용하여 아카이브가 있는 전체 CDB(컨테이너 데이터베이스) 데이터베이스를 백업하고 대상 노드에 복사합니다.
  3. 대상 데이터베이스와 애플리케이션 노드를 정리합니다.
  4. 소스 애플리케이션 바이너리와 데이터베이스 바이너리를 대상 노드에 복사합니다.
  5. 대상 데이터베이스 노드에서 $Oracle_Home을 구성합니다.
  6. 데이터베이스를 복원하고 복구합니다.
  7. 대상 데이터베이스 노드에서 복원 후 단계를 수행합니다.
  8. 대상 애플리케이션 노드에서 애플리케이션을 구성합니다.
  9. 애플리케이션 노드에서 복제 후 단계를 수행합니다.
  10. 대상 애플리케이션 서비스를 시작합니다.

자세한 단계는 다음과 같습니다.

1. 사전 복제 유틸리티 실행

소스 데이터베이스 노드 및 애플리케이션 노드에서 사전 복제 유틸리티를 실행하여 드라이버 및 구성 파일을 생성합니다. 이 유틸리티는 데이터베이스 및 애플리케이션 바이너리를 대상 노드에 복사하기 전에 대상 노드에서 데이터베이스 및 애플리케이션 바이너리를 구성합니다.

ㅏ. 다음 명령을 실행하여 $ORACLE_HOME의 데이터베이스 노드에서 플러그형 데이터베이스(PDB) 환경 파일을 소싱합니다.

cd $ORACLE_HOME
. <PDB_NAME>_hostname.env
cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
perl adpreclone.pl dbTier

비. 애플리케이션 노드에서 다음 명령을 실행합니다.

. EBSApps run (Source RUN FS)
cd $ADMIN_SCRIPTS_HOME
perl adpreclone.pl appsTier

2. CDB 백업

RMAN 핫 백업을 사용하여 아카이브가 있는 전체 CDB 데이터베이스를 백업하고 대상 노드에 복사합니다.

ㅏ. $ORACLE_HOME에서 CDB 환경 파일을 소싱하려면 다음 명령을 실행하십시오.

cd $ORACLE_HOME
. <CDB_NAME>_hostname.env
connect target /

비. 다음 명령을 실행하여 이 단계를 완료하십시오.

run {
 allocate channel d1 type disk;
 allocate channel d2 type disk;
 allocate channel d3 type disk;
 allocate channel d4 type disk;

 BACKUP as compressed backupset FULL FILESPERSET 10 FORMAT '<Backup location>/<SID>_bk_%s_%p_%t.bak' DATABASE;
 BACKUP as compressed backupset filesperset 10 FORMAT '<Backup location>/<SID>_arch_%s_%p_%t.bak' ARCHIVELOG ALL skip inaccessible;
 BACKUP FORMAT '<Backup location>/<SID>_cntrl_%s_%p_%t.bak' CURRENT CONTROLFILE;
 
 RELEASE CHANNEL d1;
 RELEASE CHANNEL d2;
 RELEASE CHANNEL d3;
 RELEASE CHANNEL d4;
}

백업을 완료한 후 대상 위치로 이동하거나 NFS(Network File System)에서 백업 마운트 지점을 대상 노드와 공유하여 시간을 절약하세요.

3. 정리

대상 데이터베이스와 애플리케이션 노드를 정리합니다.

데이터베이스 노드에서 다음 단계를 실행하십시오.

ㅏ. 정리하기 전에 다음과 같은 중요한 구성 파일 및 디렉토리를 백업하십시오.

  • $CONTEXT_FILE
  • 환경 파일
  • dbs
  • $TNS_ADMIN 디렉토리.

비. 대상 OH를 제거하고 데이터베이스를 삭제하십시오.

씨. oraInventory의 콘텐츠 제거 .

UTL 디렉토리에는 심볼릭 링크가 없어야 합니다. 심볼릭 링크가 있으면 제거하고 물리적 디렉터리 구조를 만듭니다.

애플리케이션 노드에서 다음 단계를 실행하십시오.

ㅏ. RUN 백업 및 PATCH $CONTEXT_FILE$TNS_ADMIN RUN FS 디렉토리 .비. 대상 노드 RUN FS를 기록해 둡니다. 응용 프로그램 node.c를 정리하기 전에. FS1 청소 , FS2 , FS_NEoraInventory 디렉토리.

4. 바이너리 복사

소스 애플리케이션 바이너리 및 데이터베이스 바이너리를 대상 노드에 복사하려면 다음 단계를 수행하십시오.

ㅏ. 데이터베이스 노드에서 버전 19.0.0(19c) 바이너리를 복사하여 targetdatabase 서버로 전송합니다.

비. 애플리케이션 노드에서 EBSapp만 전송 RUN FS 디렉토리 소스에서 대상 RUN FS 아래의 대상 노드로 .

5. $Oracle_Home 구성

대상 데이터베이스 노드에서 $Oracle_Home을 구성합니다.

adcfgclone.pl을 실행하기 전에 $Oracle_Home을 구성하려면 oraInventory를 정리하세요. 예배 규칙서. 새 서버에서 처음으로 복제를 수행하는 경우 다음 단계만 실행하고 모든 입력에 대한 값을 제공하십시오. 다음 단계를 수행하십시오.

ㅏ. 컨텍스트 파일 생성:

cd $ORACLE_HOME/appsutil/clone/bin
perl adclonectx.pl contextfile=<Source database context file> template=$ORACLE_HOME/appsutil/template/adxdbctx.tmp [pairsfile=<Pairs file Path>]

perl adcfgclone.pl dbTechStack <Full Path of CONTEXT_FILE>

비. listener.ora 만들기 및 tnsnames.ora :

cd $ORACLE_HOME/appsutil
./txkSetCfgCDB.env -dboraclehome=<ORACLE_HOME>

cd $ORACLE_HOME/appsutil/bin
perl txkGenCDBTnsAdmin.pl -dboraclehome=$ORACLE_HOME -cdbname=<target CDB NAME> \
-cdbsid=<SID> -dbport=<Target DB port> -outdir=$ORACLE_HOME/appsutil/log \
-israc=<yes/no> [-virtualhostname=<virtual hostname>]

씨. 복제된 인스턴스가 반복되는 경우 CONTEXT_FILE을 사용합니다. 대상 데이터베이스 바이너리를 구성하기 위한 백업:

cd <RDBMS ORACLE_HOME>/appsutil/clone/bin
perl adcfgclone.pl dbTechStack <Full Path of CONTEXT_FILE backup location>

디. 복제된 인스턴스가 반복되는 경우 dbs를 되돌립니다. 및 TNS 구성 후에 모든 구성 파일과 초기화 매개변수가 손상되지 않도록 파일을 수정합니다.

이자형. 리스너를 시작합니다.

6. 데이터베이스를 복원하고 복구합니다.

$Oracle_Home을 구성한 후 이전에 수행한 백업을 사용하여 대상 데이터베이스 복원을 시작합니다.

ㅏ. 복원하기 전에 대상 노드에서 다음 매개변수가 올바른지 확인하십시오.

  • db_file_name_convert
  • log_file_name_convert

비. nomount에서 대상 데이터베이스 시작 상태를 확인하고 다음 RMAN 명령을 실행하여 데이터베이스를 복원하십시오.

Rman auxiliary /
run
{
   allocate auxiliary channel d1 device type disk;
   allocate auxiliary channel d2 device type disk;
   allocate auxiliary channel d3 device type disk;
   duplicate database to '<CDB NAME>' backup location '<RMAN backup     location>' nofilenamecheck;
   release channel d1;
   release channel d2;
   release channel d3;
}

7. 복원 후 단계 대상

대상 데이터베이스 노드에서 사후 복원 단계를 수행합니다.

CDB 데이터베이스 복원이 완료되고 CDB 인스턴스를 연 후 다음 단계를 완료하십시오.

ㅏ. CDB 환경 파일을 소싱하고 소스 PDB 이름으로 복원했으므로 PDB 이름을 변경하십시오. 다음 명령을 사용하여 대상 PDB 이름을 변경하십시오.

sqlplus / as sysdba
 SQL> alter pluggable database "<Source PDB Name>" close;
 SQL> alter pluggable database "<Source PDB Name>" unplug into '<ORACLE_HOME>/dbs/<Source PDB Name>_PDBDesc.xml';
 SQL> drop pluggable database "<Source PDB Name>";
 SQL> create pluggable database "<Target PDB Name>" using '<ORACLE_HOME>/dbs/<PDB Name>_PDBDesc.xml' NOCOPY SERVICE_NAME_CONVERT=('ebs_<Source PDB Name>','ebs_<Target PDB Name>','<Source PDB Name>_ebs_patch','<Target PDB Name>_ebs_patch');
 SQL> alter pluggable database "<Target PDB Name>" open read write;
 SQL> alter pluggable database all save state instances=all;
 SQL> sho pdbs

CON_ID CON_NAME                       OPEN MODE  RESTRICTED
------ ------------------------------ ---------- ----------
     2 PDB$SEED                       READ ONLY  NO
     4 <PDB Name>                     READ WRITE NO

비. PDB 환경 파일을 소싱하고 다음 명령을 수행하여 대상UTL_FILE_DIR을 설정합니다. Oracle 데이터베이스의 값:

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=getUtlFileDir

씨. 다음 명령을 실행하여 _utlfiledir.txt를 편집합니다. Oracle_Home/dbs 아래의 파일 그에 따라 UTL 경로를 변경하십시오.

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=setUtlFileDir

디. _utlfiledir.txt의 각 경로에 대해 다음 스크립트를 실행합니다. :

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=createDirObject

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=syncUtlFileDir -skipautoconfig=yes

cd $ORACLE_HOME/appsutil/install/$CONTEXT_NAME
sqlplus / as sysdba @adupdlib.sql <libext>

clean FND_NODE table

sqlplus apps/<Source Apps password>

EXEC FND_CONC_CLONE.SETUP_CLEAN;

Commit;

이자형. 다음 명령을 사용하여 adautocfg.sh를 실행합니다. :

cd <$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME>
sh adautocfg.sh

8. 대상 애플리케이션 구성

대상 애플리케이션 노드에서 애플리케이션 구성:

ㅏ. adcfgclone.pl을 시작하기 전에 , PATCH FS 정리 , FS_NEoraInventory 디렉토리.

비. 다음 명령을 실행하여 애플리케이션을 구성하십시오.

cd <COMMON_TOP>/clone/bin
export TIMEDPROCESS_TIMEOUT=-1
export T2P_JAVA_OPTIONS="-Djava.io.tmpdir=<Temp directory location>"
perl ./adcfgclone.pl appsTier dualfs

씨. 여기에 모든 정보를 입력하세요.

디. 반복 복제 인스턴스인 경우 CONTEXT_FILE의 백업을 사용할 수도 있습니다. 다음 명령을 실행하십시오.

perl ./adcfgclone.pl appsTier <location of CONTEXT_FILE backup> dualfs

9. 애플리케이션 복제 후 단계

애플리케이션 노드에서 복제 후 단계 수행:

ㅏ. 애플리케이션을 구성한 후 FNDCPASS를 사용하여 앱, sysadmin 및 사용자 지정 스키마 암호(있는 경우)를 변경합니다. 명령.

비. 앱 비밀번호 변경 후 Autoconfig 실행 데이터베이스 노드와 애플리케이션 노드에서.

씨. 복제된 인스턴스에 대해 다른 사용자 정의 단계를 수행합니다(있는 경우).

10. 대상 응용 프로그램 서비스 시작

이제 대상 복제 인스턴스의 모든 애플리케이션 서비스를 시작하고 복제된 인스턴스에 대한 완전성 검사를 수행할 수 있습니다.

결론

이전 단계를 사용하여 다중 테넌트 아키텍처가 있는 버전 19c 데이터베이스가 있는 비프로덕션 서버에 PROD 인스턴스를 복제하거나 새로 고칠 수 있습니다.

피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.