Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

การโคลน Oracle EBS ด้วยเวอร์ชัน 19c Database

โพสต์นี้กล่าวถึงกระบวนการของการโคลนแบบทีละขั้นตอนด้วย Oracle®E-Business Suite® (EBS) R12.2 ภายในองค์กรบนฐานข้อมูลเวอร์ชัน 19c โดยใช้ Recovery Manager (RMAN) การสำรองข้อมูลแบบ Hot บน Red Hat® Enterprise Linux® เซิร์ฟเวอร์ ขั้นตอนเหล่านี้ใช้กับระบบปฏิบัติการที่แตกต่างกันด้วย

โคลน EBS

ในการโคลน EBS คุณต้องทำตามขั้นตอนระดับสูงต่อไปนี้:

  1. เรียกใช้ยูทิลิตีพรีโคลนบนฐานข้อมูลต้นทางและโหนดแอปพลิเคชัน
  2. สำรองฐานข้อมูลคอนเทนเนอร์ฐานข้อมูล (CDB) แบบเต็มพร้อมที่เก็บถาวรโดยใช้การสำรองข้อมูล RMAN Hot และคัดลอกไปยังโหนดเป้าหมาย
  3. ล้างฐานข้อมูลเป้าหมายและโหนดแอปพลิเคชัน
  4. คัดลอกไบนารีแอปพลิเคชันต้นทางและไบนารีฐานข้อมูลไปยังโหนดเป้าหมาย
  5. กำหนดค่า $Oracle_Home บนโหนดฐานข้อมูลเป้าหมาย
  6. กู้คืนและกู้คืนฐานข้อมูล
  7. ดำเนินการตามขั้นตอนหลังการคืนค่าบนโหนดฐานข้อมูลเป้าหมาย
  8. กำหนดค่าแอปพลิเคชันบนโหนดแอปพลิเคชันเป้าหมาย
  9. ทำตามขั้นตอนหลังโคลนบนโหนดแอปพลิเคชัน
  10. เริ่มบริการแอปพลิเคชันเป้าหมาย

นี่คือขั้นตอนโดยละเอียด:

1. เรียกใช้ยูทิลิตี้พรีโคลน

เรียกใช้ยูทิลิตีพรีโคลนบนโหนดฐานข้อมูลต้นทางและโหนดแอปพลิเคชันเพื่อสร้างไดรเวอร์และไฟล์การกำหนดค่า ยูทิลิตีนี้กำหนดค่าฐานข้อมูลและไบนารีของแอปพลิเคชันบนโหนดเป้าหมายก่อนที่จะคัดลอกฐานข้อมูลและไบนารีของแอปพลิเคชันไปยังโหนดเป้าหมาย

ก. รันคำสั่งต่อไปนี้เพื่อซอร์สไฟล์สภาพแวดล้อมฐานข้อมูลแบบเสียบได้ (PDB) บนโหนดฐานข้อมูลที่ $ORACLE_HOME:

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

สำรองฐานข้อมูล CDB ทั้งหมดพร้อมไฟล์เก็บถาวรโดยใช้ RMAN Hot backup และคัดลอกไปยังโหนดเป้าหมาย:

ก. รันคำสั่งต่อไปนี้เพื่อซอร์สไฟล์สภาพแวดล้อม CDB ที่ $ORACLE_HOME:

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;
}

หลังจากสำรองข้อมูลเสร็จแล้ว ให้ย้ายไปยังตำแหน่งเป้าหมายหรือ Network File System (NFS) แชร์จุดเชื่อมต่อสำรองไปยังโหนดเป้าหมายเพื่อประหยัดเวลา

3. ทำความสะอาด

ล้างฐานข้อมูลเป้าหมายและโหนดแอปพลิเคชัน

รันขั้นตอนต่อไปนี้บนโหนดฐานข้อมูล:

ก. สำรองข้อมูลไฟล์การกำหนดค่าและไดเร็กทอรีที่สำคัญต่อไปนี้ก่อนที่คุณจะล้างข้อมูล:

  • $CONTEXT_FILE
  • ไฟล์สภาพแวดล้อม
  • dbs
  • ไดเรกทอรี $TNS_ADMIN

ข. ลบเป้าหมาย OH และวางฐานข้อมูล

ค. ลบเนื้อหาของ oraInventory .

โปรดทราบว่า UTL ไดเร็กทอรีไม่ควรมีลิงก์สัญลักษณ์ หากมีลิงก์สัญลักษณ์ ให้ลบออกและสร้างโครงสร้างไดเร็กทอรีจริง

เรียกใช้ขั้นตอนต่อไปนี้บนโหนดแอปพลิเคชัน:

ก. สำรองข้อมูลของ RUN และ PATCH $CONTEXT_FILE และ $TNS_ADMIN ไดเรกทอรีของ RUN FS .ข. จดบันทึกโหนดเป้าหมาย RUN FS ก่อนทำความสะอาดแอพพลิเคชั่น node.c. ทำความสะอาด FS1 , FS2 , FS_NE และ oraInventory ไดเรกทอรี

4. คัดลอกไบนารี

ทำตามขั้นตอนต่อไปนี้เพื่อคัดลอกไบนารีแอปพลิเคชันต้นทางและไบนารีฐานข้อมูลไปยังโหนดเป้าหมาย

ก. บนโหนดฐานข้อมูล ให้คัดลอกและถ่ายโอนไบนารีเวอร์ชัน 19.0.0(19c) ไปยังเซิร์ฟเวอร์ฐานข้อมูลเป้าหมาย

ข. บนโหนดแอปพลิเคชัน ให้โอนเฉพาะ EBSapps ไดเรกทอรีของ 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 ไฟล์เพื่อให้ไฟล์การกำหนดค่าและพารามิเตอร์ init ทั้งหมดไม่เสียหายหลังการกำหนดค่า

อี เริ่มผู้ฟัง

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. กำหนดเป้าหมายขั้นตอนหลังการคืนค่า

ทำตามขั้นตอน post -restore บนโหนดฐานข้อมูลเป้าหมาย

หลังจากการกู้คืนฐานข้อมูล CDB เสร็จสิ้นและคุณเปิดอินสแตนซ์ CDB ให้ทำตามขั้นตอนต่อไปนี้:

ก. ซอร์สไฟล์ CDB env และเปลี่ยนชื่อ PDB เนื่องจากคุณกู้คืนเป็น PDBname ต้นทาง ใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนชื่อ 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 env และดำเนินการคำสั่งต่อไปนี้เพื่อกำหนดเป้าหมาย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_NE และ oraInventory ไดเรกทอรี

ข. เรียกใช้คำสั่งต่อไปนี้เพื่อกำหนดค่าแอปพลิเคชัน:

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 คำสั่ง

ข. หลังจากเปลี่ยนรหัสผ่านแอปแล้ว ให้เรียกใช้ Autoconfig บนโหนดฐานข้อมูลและโหนดแอปพลิเคชัน

ค. ทำตามขั้นตอนอื่นๆ ที่กำหนดเอง หากมี สำหรับอินสแตนซ์ที่โคลน

10. เริ่มบริการแอปพลิเคชันเป้าหมาย

ตอนนี้คุณสามารถเริ่มบริการแอปพลิเคชันทั้งหมดของอินสแตนซ์โคลนเป้าหมายและทำการตรวจสอบความสมบูรณ์ของอินสแตนซ์ที่โคลนแล้ว

บทสรุป

เมื่อใช้ขั้นตอนก่อนหน้านี้ คุณสามารถโคลนหรือรีเฟรชอินสแตนซ์ PROD ไปยังเซิร์ฟเวอร์ที่ไม่ใช่ผลิตภัณฑ์ที่มีฐานข้อมูลเวอร์ชัน 19c ที่มีสถาปัตยกรรมแบบหลายผู้รับได้

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณสามารถเริ่มการสนทนากับเราได้