Bài viết này thảo luận về quy trình nhân bản (cloning) từng bước với Oracle® E-Business Suite® (EBS) R12.2 tại chỗ (on-premise) trên Database phiên bản 19c bằng cách sử dụng Recovery Manager (RMAN) Hot backup trên máy chủ Red Hat® Enterprise Linux®. Các bước này cũng áp dụng cho các hệ điều hành khác.
Nhân bản EBS (EBS Cloning)
Để thực hiện nhân bản EBS, bạn cần hoàn thành các bước cấp cao sau:
- Chạy tiện ích pre-clone trên node database và application nguồn.
- Sao lưu toàn bộ Container Database (CDB) với archive log bằng RMAN Hot backup và sao chép sang node đích.
- Dọn dẹp node database và application đích.
- Sao chép nhị phân (binaries) ứng dụng và database nguồn sang node đích.
- Cấu hình $Oracle_Home trên node database đích.
- Khôi phục (restore) và phục hồi (recover) database.
- Thực hiện các bước sau khôi phục trên node database đích.
- Cấu hình ứng dụng trên node application đích.
- Thực hiện các bước sau nhân bản trên node application.
- Khởi động dịch vụ ứng dụng đích.
Dưới đây là các bước chi tiết:
1. Chạy tiện ích pre-clone
Chạy tiện ích pre-clone trên node database nguồn và node application để tạo driver và file cấu hình. Tiện ích này cấu hình nhị phân database và application trên các node đích trước khi sao chép nhị phân database và application sang node đích.
a. Chạy các lệnh sau để source file môi trường pluggable database (PDB) trên node database tại $ORACLE_HOME:
cd $ORACLE_HOME
. <PDB_NAME>_hostname.env
cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
perl adpreclone.pl dbTier
b. Chạy các lệnh sau trên node application:
. EBSApps run (Source RUN FS)
cd $ADMIN_SCRIPTS_HOME
perl adpreclone.pl appsTier
2. Sao lưu CDB
Sao lưu toàn bộ CDB database với archive log bằng RMAN Hot backup và sao chép sang node đích:
a. Chạy các lệnh sau để source file môi trường CDB tại $ORACLE_HOME:
cd $ORACLE_HOME
. <CDB_NAME>_hostname.env
connect target /
b. Chạy các lệnh sau để hoàn thành bước này:
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;
}
Sau khi hoàn thành bản sao lưu, di chuyển đến vị trí đích hoặc chia sẻ điểm mount bản sao lưu qua Network File System (NFS) sang node đích để tiết kiệm thời gian.
3. Dọn dẹp
Dọn dẹp node database và application đích.
Chạy các bước sau trên node database:
a. Sao lưu các file cấu hình và thư mục quan trọng sau trước khi dọn dẹp:
- $CONTEXT_FILE
- file môi trường (environment files)
- dbs
- thư mục $TNS_ADMIN.
b. Xóa target OH và drop database.
c. Xóa nội dung oraInventory.
Lưu ý rằng thư mục UTL không nên có symbolic link. Nếu có symbolic link, hãy xóa chúng và tạo cấu trúc thư mục vật lý.
Chạy các bước sau trên node application:
a. Sao lưu RUN và PATCH $CONTEXT_FILE và thư mục $TNS_ADMIN của RUN FS. b. Ghi nhớ RUN FS của node đích trước khi dọn dẹp node application. c. Dọn dẹp thư mục FS1, FS2, FS_NE, và oraInventory.
4. Sao chép nhị phân (binaries)
Thực hiện các bước sau để sao chép nhị phân ứng dụng và database nguồn sang node đích.
a. Trên node database, sao chép và chuyển nhị phân phiên bản 19.0.0 (19c) sang máy chủ database đích.
b. Trên node application, chỉ chuyển thư mục EBSapps của RUN FS từ nguồn sang đích dưới RUN FS đích.
5. Cấu hình $Oracle_Home
Cấu hình $Oracle_Home trên node database đích.
Trước khi chạy adcfgclone.pl để cấu hình $Oracle_Home, hãy dọn dẹp thư mục oraInventory. Nếu bạn đang làm cloning lần đầu trên máy chủ mới, chỉ chạy các bước sau và cung cấp giá trị cho tất cả các đầu vào. Thực hiện các bước sau:
a. Tạo file context:
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>
b. Tạo listener.ora và 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>]
c. Nếu đây là instance cloned lặp lại, sử dụng bản sao CONTEXT_FILE để cấu hình nhị phân database đích:
cd <RDBMS ORACLE_HOME>/appsutil/clone/bin
perl adcfgclone.pl dbTechStack <Full Path of CONTEXT_FILE backup location>
d. Nếu đây là instance cloned lặp lại, khôi phục lại file dbs và TNS để tất cả file cấu hình và tham số init được giữ nguyên sau cấu hình.
e. Khởi động listener.
6. Khôi phục và phục hồi database
Sau khi bạn cấu hình $Oracle_Home, bắt đầu khôi phục database đích bằng bản sao lưu bạn đã thực hiện trước đó:
a. Trước khi khôi phục, kiểm tra các tham số sau đúng trên node đích.
- db_file_name_convert
- log_file_name_convert
b. Khởi động database đích ở trạng thái nomount và chạy lệnh RMAN sau để khôi phục database:
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. Các bước sau khôi phục trên đích
Thực hiện các bước sau khôi phục trên node database đích.
Sau khi khôi phục CDB database xong và bạn mở instance CDB, hoàn thành các bước sau:
a. Source file env CDB và thay đổi tên PDB vì bạn khôi phục nó với tên PDB nguồn. Sử dụng các lệnh sau để thay đổi tên PDB đích:
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
b. Source file env PDB và thực hiện lệnh sau để đặt giá trị UTL_FILE_DIR đích trong Oracle Database:
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=getUtlFileDir
c. Chạy lệnh sau để chỉnh sửa file <PDB Name>_utlfiledir.txt dưới Oracle_Home/dbs và thay đổi đường dẫn UTL cho phù hợp:
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=setUtlFileDir
d. Chạy script sau cho mỗi đường dẫn trong <PDB Name>_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;
e. Sử dụng lệnh sau để chạy adautocfg.sh:
cd <$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME>
sh adautocfg.sh
8. Cấu hình ứng dụng đích
Cấu hình ứng dụng trên node application đích:
a. Trước khi bắt đầu adcfgclone.pl, dọn dẹp thư mục PATCH FS, FS_NE, và oraInventory.
b. Chạy các lệnh sau để cấu hình ứng dụng:
cd <COMMON_TOP>/clone/bin
export TIMEDPROCESS_TIMEOUT=-1
export T2P_JAVA_OPTIONS="-Djava.io.tmpdir=<Temp directory location>"
perl ./adcfgclone.pl appsTier dualfs
c. Cung cấp tất cả đầu vào ở đây.
d. Nếu đây là instance cloned lặp lại, bạn cũng có thể sử dụng bản sao CONTEXT_FILE. Chạy lệnh sau:
perl ./adcfgclone.pl appsTier <location of CONTEXT_FILE backup> dualfs
9. Các bước sau clone trên Application node
Thực hiện các bước sau clone trên node Application:
a. Sau khi cấu hình ứng dụng, thay đổi mật khẩu apps, sysadmin, và custom schema (nếu có) bằng lệnh FNDCPASS.
b. Sau khi thay đổi mật khẩu apps, chạy Autoconfig trên node database và node application.
c. Thực hiện các bước tùy chỉnh khác, nếu có, cho instance cloned.
10. Khởi động dịch vụ ứng dụng đích
Bây giờ bạn có thể khởi động tất cả dịch vụ ứng dụng của instance clone đích và thực hiện tất cả các kiểm tra sanity cho các instance cloned.
Kết luận
Sử dụng các bước trước đó, bạn có thể nhân bản hoặc làm mới (refresh) instance PROD sang server non-prod với database phiên bản 19c có kiến trúc multitenant.
Sử dụng tab Feedback để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi. Bạn cũng có thể bắt đầu cuộc hội thoại với chúng tôi.