ابزار AutoUpgrade ارتقا دیتابیس اوراکل به نسخه بالاتر را با مداخله کمتر DBA امکان پذیر می کند همچنین این ابزار، قابلیت ارتقا همزمان چندین دیتابیس را فراهم خواهد کرد(صرفا از طریق یک فایل config).
در این متن قصد داریم با استفاده از این ابزار، دیتابیسی را از نسخه 18c به نسخه 19c ارتقا دهیم.
قبل از شروع عملیات ارتقاء، باید اوراکل نسخه 19c را در ماشین یا سروری که اوراکل نسخه 18c در آن در حال اجرا می باشد، نصب کنیم. طریقه نصب اوراکل نسخه 19c را قبلا در مطلب جدایی شرح دادیم(در صورت نیاز می توانید به آن رجوع کنید.)
بعد از نصب اوراکل نسخه 19c، با استفاده از فایل autoupgrade.jar که در مسیر ORACLE_HOME/rdbms/admin$ قرار دارد، ارتقاء خودکار دیتابیس را انجام خواهیم داد.
[root@stb ~]# cd /19c/home/rdbms/admin
[root@stb admin]# ls -l autoupgrade.jar
-rw-r–r– 1 oracle oinstall 3360892 Feb 8 2019 autoupgrade.jar
توجه: این ابزار با جاوا نسخه 8 قابل اجرا می باشد.
برای اجرای ارتقاء از طریق ابزار AutoUpgrade، باید مشخصات دیتابیسهایی که قرار است به نسخه بالاتر ارتقاء پیدا کنند را در قالب یک فایل config تعیین کرد.
این config file شامل دو نوع پارامتر LOCAL و GLOBAL می باشد که پارامترهای LOCAL صرفا برای یک دیتابیس خاص تعریف می شوند و تنظیمات مربوط به پارامترهای GLOBAL، همه دیتابیسهایی که قرار است از طریق این config file ارتقاء پیدا کنند را شامل خواهد شد.
برای آشنایی با بعضی از این پارامترها و همچنین ساختار config fileها، با کمک دستور زیر فایل نمونه ای را ایجاد می کنیم.
[oracle@stb ~]$ java -jar /19c/home/rdbms/admin/autoupgrade.jar -create_sample_file config
Created sample configuration file /home/oracle/sample_config.cfg
قسمتی از متن فایل ایجاد شده:
# sample config file
# Database number 1
global.autoupg_log_dir=/19c
upg1.dbname=employee
upg1.start_time=NOW
upg1.source_home=/u01/app/oracle/product/11.2.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.1.0/dbhome_1
upg1.sid=emp
upg1.log_dir=/scratch/auto
upg1.upgrade_node=node1
upg1.target_version=19.1
#upg1.run_utlrp=yes
#upg1.timezone_upg=yes
# Database number 2
#upg2.dbname=database name
#upg2.start_time=dd/mm/yyyy hh:mm:ss | now
#upg2.source_home=Path to source version of Oracle database
#upg2.target_home=Path to target version of Oracle database
#upg2.sid=Value of Oracle SID
#upg2.log_dir=Path to log dir
#upg2.upgrade_node=Node name
#upg2.target_version= 12.2.0.1
#upg2.run_utlrp=[yes|no]
#upg2.timezone_upg=[yes|no]
بعد از مشاهده ساختار پارامترفایل AutoUpgrade، فایلی را متناسب با محیطی که در آن هستیم، ایجاد می کنیم. قرار است صرفا دیتابیسی با db_nameه prim را ارتقا دهیم مشخصات این دیتابیس را در قسمت زیر و در فایل کانفیگ up.cfg مشاهده می کنید:
[oracle@stb ~]$ vi up.cfg
# Database number 1
upg1.dbname=prim
upg1.start_time=NOW
upg1.source_home=/18c/home
upg1.target_home=/19c/home
upg1.sid=stb
upg1.log_dir=/19c
upg1.upgrade_node=stb
upg1.target_version=19.3
#upg1.run_utlrp=yes
#upg1.timezone_upg=yes
پروسه ارتقا در این روش در سه فاز ANALYZE، FIXUP و DEPLOY/UPGRADE قابل اجراست که در ادامه در طی سه مرحله، عملیات AutoUpgrade را توضیح خواهیم داد.
گام اول(ANALYZE): به عنوان گام نخست می بایست AutoUpgrade را در فاز ANALYZE اجرا کرد. با انجام این کار، بر روی دیتابیس source(همان دیتابیسی که قرار است ارتقا پیدا کند) بررسی های لازم انجام شده و در نهایت مشخص خواهد شد که این دیتابیس پیش نیازهای لازم را برای ارتقا به اوراکل نسخه 19c از طریق ابزار AutoUpgrade را داراست یا خیر.
البته انجام این فاز نیازی به downtime ندارد و دیتابیس می تواند بدون هرگونه اختلالی به کارش ادامه دهد.
[oracle@stb ~]$ java -jar /19c/home/rdbms/admin/autoupgrade.jar -config /home/oracle/up.cfg -mode ANALYZE
Autoupgrade tool launched with default options
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 databases will be analyzed
Enter some command, type ‘help’ or ‘exit’ to quit
upg>
با اجرای دستور status در خط فرمان <upg، میزان پیشرفت مرحله ANALYZE را مشاهده می کنید:
upg> status
—————- Config ——————-
User configuration file [/home/oracle/up.cfg]
General logs location [/19c/cfgtoollogs/upgrade/auto]
Mode [ANALYZE]
DB upg fatal errors ORA-00600,ORA-07445
DB Post upgrade abort time [60] minutes
DB upg abort time [1440] minutes
DB restore abort time [120] minutes
DB drop GRP abort time [3] minutes
——————- Jobs ——————-
Total databases in configuration file [1]
Total Non-CDB being processed [1]
Total CDB being processed [0]
Jobs finished successfully [0]
Jobs finished/aborted [0]
jobs in progress [1]
———— Resources —————-
Threads in use [18]
JVM used memory [33] MB
CPU in use [13%]
Processes in use [18]
با پایان یافتن پروسه ANALYZE، پیام زیر در خط فرمان مشاهده خواهد شد:
upg>
Job 100 for PRIM FINISHED
هم نام با شماره جاب(100)، دایرکتوری ای در مسیری که برای پارامتر upg1.log_dir در فایل config تعیین شده، ایجاد خواهد شد که شامل اطلاعاتی در مورد این مرحله می باشد:
[oracle@stb ~]$ cd /19c/
[oracle@stb 19c]$ ls -l
drwxr-xr-x 3 oracle oinstall 115 Mar 13 07:12 100
drwxr-xr-x 4 oracle oinstall 37 Mar 12 16:20 base
drwxr-xr-x 3 oracle oinstall 21 Mar 13 07:08 cfgtoollogs
drwxr-xr-x 69 oracle oinstall 4096 Mar 12 16:20 home
drwxr-xr-x 2 oracle oinstall 113 Mar 13 07:11 temp
[oracle@stb 19c]$ cd 100/
[oracle@stb 100]$ ls -l
-rw-r–r– 1 oracle oinstall 0 Mar 13 07:11 autoupgrade_err.log
-rw-r–r– 1 oracle oinstall 48279 Mar 13 07:12 dbupgrade_20200313.log
-rw-r–r– 1 oracle oinstall 81 Mar 13 07:11 dbupgrade_20200313_user.log
drwxr-xr-x 2 oracle oinstall 4096 Mar 13 07:12 prechecks
[oracle@stb 100]$ cd prechecks
[oracle@stb prechecks]$ ls -l
-rw-r–r– 1 oracle oinstall 119105 Mar 13 07:12 prechecks_prim.log
-rw-r–r– 1 oracle oinstall 2782 Mar 13 07:12 prim_checklist.cfg
-rw-r–r– 1 oracle oinstall 2295 Mar 13 07:12 prim_checklist.json
-rw-r–r– 1 oracle oinstall 2695 Mar 13 07:12 prim_checklist.xml
-rw-r–r– 1 oracle oinstall 25507 Mar 13 07:12 prim_preupgrade.html
-rw-r–r– 1 oracle oinstall 9275 Mar 13 07:12 prim_preupgrade.log
همانطور که می بینید، در بین فایلهای log، یکی از فایلهای ایجاد شده به فرمت html می باشد:
این فایل شامل قسمتهای مختلفی است:
PreChecks Error
PreChecks Warning
PreChecks Recommend
PreChecks Info
PostChecks Warning
PostChecks Recommend
بدیهی است که قبل از ارتقا از طریق ابزار AutoUpgrade، باید خطاهای ذکر شده در این فایل برطرف شوند. در دیتابیس جاری، برای ارتقا به نسخه 19c، سه پیش نیاز اجباری وجود دارد:
CheckName: DB_RECOVERY_FILE_DEST FixUp Available: NO
CheckName: PURGE_RECYCLEBIN FixUp Available: YES
CheckName: ARCHIVE_MODE_ON FixUp Available: NO
بعضی از خطاها و هشدارها در فاز بعدی که FIXUP نام دارد، به صورت خودکار رفع خواهند شد اما برای برطرف کردن تعدادی از این خطاها، نیاز به مداخله DBA می باشد.
گام دوم(FIXUP): با اجرای ابزار AutoUpgrade در فاز FIXUP، پیش نیازهایی که به صورت خودکار قابل رفع هستند، مجددا شناسایی شده و سپس برطرف می شوند، به نوعی فاز FIXUP شامل فاز ANALYZE هم می باشد:
[oracle@stb ~]$ java -jar /19c/home/rdbms/admin/autoupgrade.jar -config /home/oracle/up.cfg -mode FIXUPS
Autoupgrade tool launched with default options
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 databases will be processed
Enter some command, type ‘help’ or ‘exit’ to quit
upg>
Job 101 for PRIM FINISHED
همانطور که در مرحله ANALYZE مشاهده شد، بعضی از پیش نیازها باید به صورت دستی و با مداخله DBA برطرف شوند:
+قرار دادن دیتابیس در مود archive log:
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1073740616 bytes
Fixed Size 8665928 bytes
Variable Size 700448768 bytes
Database Buffers 356515840 bytes
Redo Buffers 8110080 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 =’/19c/fra’;
System altered.
+تنظیم قابلیت flashback database:
SQL> alter database flashback on;
Database altered.
گام سوم(UPGRADE/DEPLOY): دو فاز ANALYZE و FIXUP در صورتی اجرا شده بودند که دیتابیس با نرم افزار اوراکل نسخه 18c در حال اجرا بود. برای انجام گام نهایی(upgrade)، نیاز است تا اجرای دیتابیس را در این نسخه(18c)، متوقف کرده و با آن را با کمک نرم افزار نسخه 19c و در مود upgrade اجرا نمود.
نکته: حالتهای DEPLOY و UPGRADE هر دو قابلیت ارتقا را فراهم می کنند اما در صورت استفاده از DEPLOY، عملیات ارتقا بدون اجرای دو فاز قبلی(ANALYZE و FIXUP) قابل انجام خواهد بود به عبارت دیگر، پروسه DEPLOY دو پروسه دیگر(ANALYZE و FIXUP) را در خودش دارد.
برای اجرای AutoUpgrade در فاز DEPLOY، مقدمات زیر را انجام می دهیم:
[oracle@stb ~]$ echo $ORACLE_HOME
/18c/home
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@stb ~]$ cp /18c/home/dbs/*.ora /19c/home/dbs/
[oracle@stb ~]$ export ORACLE_HOME=/19c/home
[oracle@stb ~]$ export PATH=$PATH:/19c/home/bin
[oracle@stb ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 13 08:08:25 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1073737800 bytes
Fixed Size 8904776 bytes
Variable Size 297795584 bytes
Database Buffers 759169024 bytes
Redo Buffers 7868416 bytes
Database mounted.
Database opened.
بعد از انجام مراحل فوق، گام نهایی autoupgrade را اجرا می کنیم:
[oracle@stb ~]$ java -jar /19c/home/rdbms/admin/autoupgrade.jar -config /home/oracle/up.cfg -mode DEPLOY
Autoupgrade tool launched with default options
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 databases will be processed
Enter some command, type ‘help’ or ‘exit’ to quit
upg>
با کمک دستور lsj لیست جابها را مشاهده می کنیم:
upg> lsj
+—-+——-+———+———+——-+————–+——–+——–+————+
|JOB#|DB NAME| STAGE|OPERATION| STATUS| START TIME|END TIME| UPDATED| MESSAGE|
+—-+——-+———+———+——-+————–+——–+——–+————+
| 102| PRIM|DBUPGRADE|EXECUTING|RUNNING|20/03/13 08:35| N/A|09:07:21|21%Upgraded |
+—-+——-+———+———+——-+————–+——–+——–+————+
Total jobs 1
upg> lsj
+—-+——-+———+———+——-+————–+——–+——–+————+
|JOB#|DB NAME| STAGE|OPERATION| STATUS| START TIME|END TIME| UPDATED| MESSAGE|
+—-+——-+———+———+——-+————–+——–+——–+————+
| 102| PRIM|DBUPGRADE|EXECUTING|RUNNING|20/03/13 08:35| N/A|09:13:30|32%Upgraded |
+—-+——-+———+———+——-+————–+——–+——–+————+
Total jobs 1
upg>
همانطور که می بینید، شماره جاب برابر با 102 می باشد و با مشاهده محتوای فایل log، روند پیشرفت ارتقا را مشاهده خواهیم کرد:
[oracle@stb ~]$ tail -f /19c/102/dbupgrade_20200313_user.log
2020-03-13 08:55:08.179 INFO [Upgrading] is [2%] completed for [prim]
+———+————+
|CONTAINER| PERCENTAGE|
+———+————+
| PRIM|UPGRADE [2%]|
+———+————+
2020-03-13 08:58:10.051 INFO [Upgrading] is [6%] completed for [prim]
+———+————+
|CONTAINER| PERCENTAGE|
+———+————+
| PRIM|UPGRADE [6%]|
+———+————+
2020-03-13 09:01:11.378 INFO [Upgrading] is [10%] completed for [prim]
+———+————-+
|CONTAINER| PERCENTAGE|
+———+————-+
| PRIM|UPGRADE [10%]|
+———+————-+
2020-03-13 09:07:21.627 INFO [Upgrading] is [21%] completed for [prim]
+———+————-+
|CONTAINER| PERCENTAGE|
+———+————-+
| PRIM|UPGRADE [21%]|
+———+————-+
2020-03-13 09:13:30.108 INFO [Upgrading] is [32%] completed for [prim]
+———+————-+
|CONTAINER| PERCENTAGE|
+———+————-+
| PRIM|UPGRADE [32%]|
+———+————-+
……
2020-03-13 10:03:59.186 INFO [Upgrading] is [91%] completed for [prim]
+———+————-+
|CONTAINER| PERCENTAGE|
+———+————-+
| PRIM|UPGRADE [91%]|
+———+————-+
مشاهده جزییات فازهای ارتقا:
[root@stb ~]# tail -f -n 1000 /19c/102/dbupgrade/autoupgrade20200313084852prim.log
Number of Cpus = 4
Database Name = stb
DataBase Version = 18.0.0.0.0
Parallel SQL Process Count = 4
Components in [stb]
Installed [APS CATALOG CATJAVA CATPROC CONTEXT DV JAVAVM OLS ORDIM OWM SDO XDB XML XOQ]
Not Installed [APEX EM MGW ODM RAC WK]
*******Upgrade being restarted on database stb from failed phase 0*******
——————————————————
Phases [0-107] Start Time:[2020_03_13 08:49:20]
——————————————————
*********** Executing Change Scripts ***********
Serial Phase #:0 [stb] Files:1 Time: 174s
*************** Catalog Core SQL ***************
Serial Phase #:1 [stb] Files:5 Time: 173s
Restart Phase #:2 [stb] Files:1 Time: 3s
*********** Catalog Tables and Views ***********
Parallel Phase #:3 [stb] Files:19 Time: 55s
Restart Phase #:4 [stb] Files:1 Time: 3s
************* Catalog Final Scripts ************
Serial Phase #:5 [stb] Files:7 Time: 41s
…..
******************* Migration ******************
Serial Phase #:99 [stb] Files:1 Time: 38s
*** End PDB Application Upgrade Pre-Shutdown ***
Serial Phase #:100 [stb] Files:1 Time: 3s
Serial Phase #:101 [stb] Files:1 Time: 0s
Serial Phase #:102 [stb] Files:1 Time: 65s
***************** Post Upgrade *****************
Serial Phase #:103 [stb] Files:1 Time: 72s
**************** Summary report ****************
Serial Phase #:104 [stb] Files:1 Time: 6s
*** End PDB Application Upgrade Post-Shutdown **
Serial Phase #:105 [stb] Files:1 Time: 2s
Serial Phase #:106 [stb] Files:1 Time: 0s
Serial Phase #:107 [stb] Files:1 Time: 33s
——————————————————
Phases [0-107] End Time:[2020_03_13 10:16:12]
——————————————————
Grand Total Time: 5236s
عملیات ارتقا به پایان رسید اما با توجه به پارامترهای تنظیم شده، انجام بعضی از عملیات نظیر بروزرسانی timezone و کامپایل اشیاهای نامعتبر باید بصورت دستی انجام شود.
SQL> select comp_name,version,status from dba_registry;
COMP_NAME VERSION STATUS
—————————————- ————— ———-
Oracle Database Catalog Views 19.0.0.0.0 UPGRADED
Oracle Database Packages and Types 19.0.0.0.0 UPGRADED
Oracle Real Application Clusters 19.0.0.0.0 UPGRADED
JServer JAVA Virtual Machine 19.0.0.0.0 UPGRADED
Oracle XDK 19.0.0.0.0 UPGRADED
Oracle Database Java Packages 19.0.0.0.0 UPGRADED
OLAP Analytic Workspace 19.0.0.0.0 UPGRADED
Oracle XML Database 19.0.0.0.0 UPGRADED
Oracle Workspace Manager 19.0.0.0.0 UPGRADED
Oracle Text 19.0.0.0.0 UPGRADED
Oracle Multimedia 19.0.0.0.0 UPGRADED
Spatial 19.0.0.0.0 UPGRADED
Oracle OLAP API 19.0.0.0.0 UPGRADED
Oracle Label Security 19.0.0.0.0 UPGRADED
Oracle Database Vault 19.0.0.0.0 UPGRADED
15 rows selected.
توجه: AutoUpgrade صرفا برای ارتقا به نسخه های 19.3.0، 18.5.0 و 12.2.0.1 قابل استفاده می باشد(2020/03).
Comment (1)