ارتقاء اوراکل از نسخه 18c به 19c با استفاده از ابزار AutoUpgrade

ابزار 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).

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@ www.linkedin.com/in/vahid-usefzadeh-918bb289

Comment (1)

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.