এই পোস্টে অন-প্রিমাইস Oracle® E-Business Suite® (EBS) R12.2 কে ১৯c ডেটাবেস ভার্সনে Recovery Manager (RMAN) হট ব্যাকআপ ব্যবহার করে Red Hat® Enterprise Linux® সার্ভারে ধাপে ধাপে ক্লোনিং প্রক্রিয়া আলোচনা করা হয়েছে। এই ধাপগুলি বিভিন্ন অপারেটিং সিস্টেমের জন্যও প্রযোজ্য।
EBS ক্লোনিং
EBS ক্লোনিং সম্পাদন করতে, আপনাকে নিম্নলিখিত হাই-লেভেল ধাপগুলি সম্পন্ন করতে হবে:
- সোর্স ডেটাবেস এবং অ্যাপ্লিকেশন নোডে প্রি-ক্লোন ইউটিলিটি চালান।
- RMAN হট ব্যাকআপ ব্যবহার করে আর্কাইভসহ পূর্ণ কন্টেইনার ডেটাবেস (CDB) ডেটাবেস ব্যাকআপ লিন এবং টার্গেট নোডে কপি করুন।
- টার্গেট ডেটাবেস এবং অ্যাপ্লিকেশন নোড পরিষ্কার করুন।
- সোর্স অ্যাপ্লিকেশন বাইনারি এবং ডেটাবেস বাইনারি টার্গেট নোডে কপি করুন।
- $Oracle_Home টার্গেট ডেটাবেস নোডে কনফিগার করুন।
- ডেটাবেসগুলো রিস্টোর এবং রিকভার করুন।
- টার্গেট ডেটাবেস নোডে পোস্ট-রিস্টোর ধাপসমূহ সম্পন্ন করুন।
- টার্গেট অ্যাপ্লিকেশন নোডে অ্যাপ্লিকেশন কনফিগার করুন।
- অ্যাপ্লিকেশন নোডে পোস্ট-ক্লোন ধাপসমূহ সম্পন্ন করুন।
- টার্গেট অ্যাপ্লিকেশন সার্ভিস শুরু করুন।
বিস্তারিত ধাপগুলো নিচে দেওয়া হলো:
১. প্রি-ক্লোন ইউটিলিটি চালান
ড্রাইভার এবং কনফিগারেশন ফাইল তৈরি করার জন্য সোর্স ডেটাবেস নোড এবং অ্যাপ্লিকেশন নোডে প্রি-ক্লোন ইউটিলিটি চালান। এই ইউটিলিটি ডেটাবেস এবং অ্যাপ্লিকেশন বাইনারি কপি করার আগে টার্গেট নোডে সেগুলো কনফিগার করে।
ক. ডেটাবেস নোডে $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 ২. 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) শেয়ার করে ব্যাকআপ মাউন্ট পয়েন্ট টার্গেট নোডে সময় বাঁচাতে।
৩. পরিষ্কার করুন
টার্গেট ডেটাবেস এবং অ্যাপ্লিকেশন নোড পরিষ্কার করুন।
ডেটাবেস নোডে নিচের ধাপগুলো চালান:
ক. পরিষ্কার করার আগে নিচের গুরুত্বপূর্ণ কনফিগারেশন ফাইল এবং ডিরেক্টরির ব্যাকআপ নিন:
- $CONTEXT_FILE
- এনভায়রনমেন্ট ফাইল
- dbs
- $TNS_ADMIN ডিরেক্টরি।
খ. টার্গেট OH সরান এবং ডেটাবেস ড্রপ করুন।
গ. oraInventory-এর কন্টেন্ট সরান।
দ্রষ্টব্য যে UTL ডিরেক্টরিগুলোতে সিম্বলিক লিংক থাকা উচিত না। যদি সিম্বলিক লিংক থাকে, তবে সেগুলো সরিয়ে ফিজিক্যাল ডিরেক্টরি স্ট্রাকচার তৈরি করুন।
অ্যাপ্লিকেশন নোডে নিচের ধাপগুলো চালান:
ক. RUN এবং PATCH $CONTEXT_FILE এবং RUN FS-এর $TNS_ADMIN ডিরেক্টরির ব্যাকআপ নিন। খ. অ্যাপ্লিকেশন নোড পরিষ্কার করার আগে টার্গেট নোডের RUN FS নোট করুন। গ. FS1, FS2, FS_NE, এবং oraInventory ডিরেক্টরি পরিষ্কার করুন।
৪. বাইনারি কপি করুন
সোর্স অ্যাপ্লিকেশন বাইনারি এবং ডেটাবেস বাইনারি টার্গেট নোডে কপি করার জন্য নিচের ধাপগুলো অনুসরণ করুন।
ক. ডেটাবেস নোডে, ১৯.০.০ (১৯c) বাইনারি টার্গেট ডেটাবেস সার্ভারে কপি ও ট্রান্সফার করুন।
খ. অ্যাপ্লিকেশন নোডে, শুধু সোর্স থেকে টার্গেট নোডে টার্গেট RUN FS-এর অধীনে RUN FS-এর EBSapps ডিরেক্টরি ট্রান্সফার করুন।
৫. $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 ফাইলগুলো রিভার্ট করুন।
ঙ. লিসেনার শুরু করুন।
৬. ডেটাবেস রিস্টোর এবং রিকভার করুন
$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; } ৭. টার্গেট পোস্ট-রিস্টোর ধাপ
টার্গেট ডেটাবেস নোডে পোস্ট-রিস্টোর ধাপসমূহ সম্পন্ন করুন।
CDB ডেটাবেস রিস্টোর শেষ হলে এবং CDB ইনস্ট্যান্স খোলার পর, নিচের ধাপগুলো সম্পন্ন করুন:
ক. CDB env ফাইল সোর্স করুন এবং 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 env ফাইল সোর্স করুন এবং Oracle ডেটাবেসে টার্গেট UTL_FILE_DIR মান সেট করতে নিচের কমান্ড চালান:
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=getUtlFileDir গ. Oracle_Home/dbs-এর অধীনে <PDB Name>_utlfiledir.txt ফাইল এডিট করে UTL পাথ অনুযায়ী পরিবর্তন করুন:
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=setUtlFileDir ঘ. <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; ঙ. adautocfg.sh চালাতে নিচের কমান্ড ব্যবহার করুন:
cd <$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME> sh adautocfg.sh ৮. টার্গেট অ্যাপ্লিকেশন কনফিগার করুন
টার্গেট অ্যাপ্লিকেশন নোডে অ্যাপ্লিকেশন কনফিগার করুন:
ক. 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 ৯. অ্যাপ্লিকেশন পোস্ট-ক্লোন ধাপ
অ্যাপ্লিকেশন নোডে পোস্ট-ক্লোন ধাপসমূহ সম্পন্ন করুন:
ক. অ্যাপ্লিকেশন কনফিগার করার পর, FNDCPASS কমান্ড ব্যবহার করে apps, sysadmin, এবং কাস্টম স্কিমা পাসওয়ার্ড পরিবর্তন করুন, যদি থাকে।
খ. apps পাসওয়ার্ড পরিবর্তন করার পর, ডেটাবেস নোড এবং অ্যাপ্লিকেশন নোডে Autoconfig চালান।
গ. ক্লোনড ইনস্ট্যান্সের জন্য অন্যান্য কাস্টম ধাপ সম্পন্ন করুন, যদি থাকে।
১০. টার্গেট অ্যাপ্লিকেশন সার্ভিস শুরু করুন
এখন আপনি টার্গেট ক্লোন ইনস্ট্যান্সের সকল অ্যাপ্লিকেশন সার্ভিস শুরু করতে পারেন এবং ক্লোনড ইনস্ট্যান্সের জন্য সকল স্যানিটি চেক সম্পন্ন করতে পারেন।
উপসংহার
উপরোক্ত ধাপগুলো ব্যবহার করে, আপনি মাল্টিটেনান্ট আর্কিটেকচার সহ ১৯c ডেটাবেস ভার্সনে PROD ইনস্ট্যান্সকে নন-প্রোড সার্ভারে ক্লোন বা রিফ্রেশ করতে পারেন।
যেকোনো মন্তব্য বা প্রশ্নের জন্য Feedback ট্যাব ব্যবহার করুন। আপনি আমাদের সাথে কথা বলা শুরু করতে পারেন।