همانطور که می دانید، اوراکل در نسخه 21c، معماری non-CDB را ساپورت نمی کند بنابرین برای ارتقا نسخه non-CDB به 21c، باید قبل از ارتقا، دیتابیس non-CDB را به یک PDB تبدیل کنیم. قبلا نحوه انتقال و ارتقا دیتابیسی با معماری non-CDB به نسخه 21c را با استفاده از قابلیت Replay Upgrade توضیح دادیم در این متن از ابزار Autoupgrade برای این کار استفاده خواهیم کرد.
تفاوت عمده Autoupgrade و Replay Upgrade، به تبدیل non-cdb به pdb برمیگردد چرا که در زمان استفاده از Replay Upgrade، عملیات plug/unplug باید توسط DBA انجام شود اما در زمان استفاده از ابزار Autoupgradeء، DBA صرفا باید یک فایل پیکربندی را ایجاد کند و مابقی عملیات توسط این ابزار انجام می شود.
در ادامه متن، مراحل ارتقا non-cdb از نسخه 19c به نسخه 21c را توضیح خواهیم داد.
مرحله اول: فایل پیکربندی autoupgrade را متناسب با محیطی که در آن هستیم، ایجاد می کنیم. قرار است صرفا دیتابیس noncdb19 را ارتقا دهیم بنابرین مشخصات این دیتابیس را در قسمت زیر و در فایل کانفیگ AutoConfig.sh ثبت می کنیم:
[oracle@oLinux7 ~]$ cat AutoConfig.sh
UP_TO_21c.autoupg_log_dir=/home/oracle/AutoUP_TO_21c
UP_TO_21c.sid=noncdb19
UP_TO_21c.source_home=/oracle19c/home
UP_TO_21c.log_dir=/home/oracle/AutoUP_TO_21c
UP_TO_21c.target_home=/oracle21c/home
UP_TO_21c.target_base=/oracle21c/base
UP_TO_21c.target_version=21.0.0
UP_TO_21c.target_cdb=db21c
ایجاد دایرکتوری تعیین شده برای پارامتر log_dir:
[oracle@oLinux7 ~]$ mkdir -p /home/oracle/AutoUP_TO_21c
مرحله 2: پس از تنظیم متغیر محیطی مربوط به اوراکل 21c، دستور AutoUpgrade را در فاز ANALYZE اجرا می کنیم:
* انجام این مرحله نیازی به downtime ندارد.
[oracle@oLinux7 ~]$ java -jar /oracle21c/home/rdbms/admin/autoupgrade.jar -config /home/oracle/AutoConfig.sh -mode ANALYZE
No parameter ‘global.autoupg_log_dir’ found in config file, using /oracle19c/base/cfgtoollogs/autoupgrade
AutoUpgrade tool launched with default options
Processing config file …
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 databases will be analyzed
Type ‘help’ to list console commands
upg>
با اجرای دستور status در خط فرمان upg>، میزان پیشرفت مرحله ANALYZE را مشاهده می کنید:
upg> status
با پایان یافتن پروسه ANALYZE، پیام زیر در خط فرمان نمایش داده خواهد شد:
upg> Job 100 completed
——————- Final Summary ——————–
Number of databases [ 1 ]
Jobs finished [1]
Jobs failed [0]
Jobs pending [0]
————- JOBS FINISHED WITH ERROR ————-
Job 100 for noncdb19
Please check the summary report at:
/oracle19c/base/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/oracle19c/base/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
همانطور که می بینید، در بین فایلهای log، یکی از فایلهای ایجاد شده به فرمت html است که قسمت اصلی این فایل را در قسمت زیر می بینید:
این خروجی نشان می دهد که بعضی از پیش نیازها باید به صورت دستی و با مداخله DBA برطرف شوند:
+قرار دادن دیتابیس در مود archive log:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1644163728 bytes
Fixed Size 8897168 bytes
Variable Size 587202560 bytes
Database Buffers 1040187392 bytes
Redo Buffers 7876608 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
+تنظیم FRA:
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE =100g;
System altered.
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST =’ /oracle19c/fra’;
System altered.
بعد از اجرای دستور فوق، مجددا دستور ANALYZE را اجرا می کنیم. گزارش html ایجاد شده نشان می دهد که ANALYZE بدون خطا اجرا شده است:
مرحله سوم: برای انجام گام نهایی، دستور Autoupgrade را در مود deploy اجرا می کنیم:
[oracle@oLinux7 ~]$ java -jar /oracle21c/home/rdbms/admin/autoupgrade.jar -config /home/oracle/AutoConfig.sh -mode deploy
No parameter ‘global.autoupg_log_dir’ found in config file, using /oracle19c/base/cfgtoollogs/autoupgrade
AutoUpgrade tool launched with default options
Processing config file …
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 databases will be processed
Type ‘help’ to list console commands
بعد از انجام فاز Deploy، پیام زیر در خط فرمان نمایش داده خواهد شد:
upg> Job 102 completed
——————- Final Summary ——————–
Number of databases [ 1 ]
Jobs finished [1]
Jobs failed [0]
Jobs pending [0]
Please check the summary report at:
/oracle19c/base/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/oracle19c/base/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
خروجی فایل html تایید می کند که عملیات ارتقا به درستی انجام شده است:
NONCDB19 در دیتابیس 21c به صورت نرمال open شده بنابرین ارتقا به درستی انجام شده است:
[oracle@oLinux7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 21.0.0.0.0 – Production on Thu Sep 30 07:35:52 2021
Version 21.3.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
———- —————————— ———- ———-
2 PDB$SEED READ ONLY NO
3 PDB18C MOUNTED
4 NONCDB19 READ WRITE NO