Oracle 19c自动升级实用程序(第1部分)

发布于:2021-02-08 15:10:20

0

326

0

Oracle Oracle 19c 自动升级 数据库

自动升级实用程序是Oracle 19c中的一项新功能,旨在实现升级过程的自动化–这不仅包括数据库升级,还包括升级前和升级后步骤的自动化。

考虑这样一种情况,作为DBA,您需要升级的数据库不是一个而是数百个,到目前为止,我们唯一的选择是手动或通过DBUA实用程序升级这些数据库中的每一个。

对于新的19c autoupgrade实用程序,我们要做的就是创建一个配置文件,其中包含需要升级的数据库的详细信息,然后使用基于Java的autoupgrade.jar文件。

Oracle 19c数据库软件中的$ ORACLE_HOME / rdbms / admin目录中提供了autoupgrade.jar文件。但是,建议使用可以从MOS说明2485457.1下载的autoupgrade.jar文件。

该实用程序需要Java8,我们可以使用Oracle19c数据库软件home中提供的Java8。

[oracle@host02 admin]$ pwd
/u01/app/oracle/product/19.3.0/dbhome_1/rdbms/admin

[oracle@host02 admin]$ export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1

[oracle@host02 admin]$ $ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -version
build.version 20190207
build.date 2019/02/07 12:35:56
build.label RDBMS_PT.AUTOUPGRADE_LINUX.X64_190205.1800

请注意从MOS下载的autoupgrade.jar文件版本的差异。

[oracle@host02 sf_software]$ cp autoupgrade.jar /home/oracle

[oracle@host02 sf_software]$ cd /home/oracle

[oracle@host02 ~]$ $ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -version
build.version 20190513
build.date 2019/05/13 16:59:48

autoupgrade实用程序可以在多种不同的模式下运行。

分析

在升级之前对数据库执行只读的升级前分析,并确定可能阻止成功升级的任何问题。在正常的数据库操作过程中,我们可以在源Oracle数据库home上以分析模式运行AutoUpgrade。

Analyze模式生成一个报告,该报告通过运行自动修复脚本或手动纠正操作来识别升级问题和如果不纠正可能发生的错误。

修正

在Fixup模式下,AutoUpgrade执行与在Analyze模式下相同的检查,但是在完成这些升级前检查之后,它会运行源数据库的自动Fixup,为数据库升级做准备。

部署

在部署模式下,autoupgrade实用程序执行数据库的实际升级,还执行许多升级后步骤,如重新编译无效对象和时区DST升级等。

这是一个配置文件的示例,我将使用它将两个12.2数据库升级到oracle19c。

[oracle@host01 admin]$ cat /tmp/config.txt
#
# Global logging directory pertains to all jobs
#
global.autoupg_log_dir=/u02/app/oracle/autoupgrade        # Top level logging directory (Required)

#
# Database 1
#
upg1.dbname=db1                                
upg1.source_home=/u02/app/oracle/product/12.2.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.3.0/dbhome_1
upg1.sid=db1                                  
upg1.start_time=09/06/2019 17:30:00                    
upg1.log_dir=/u02/app/oracle/autoupgrade/db1
upg1.upgrade_node=localhost                  
upg1.run_utlrp=yes  
upg1.timezone_upg=yes
upg1.target_version=12.2

#
# Database 2
#


upg2.dbname=db2                            # Database Name (Required)
upg2.source_home=/u02/app/oracle/product/12.2.0/dbhome_1 # Source Home (Required)
upg2.target_home=/u01/app/oracle/product/19.3.0/dbhome_1 # Target home (Required)
upg2.sid=db2                                 # Oracle Sid (Required)
upg2.start_time=09/06/2019 19:30:00                            # Start time of the operation (Required)
upg2.log_dir=/u02/app/oracle/autoupgrade/db2            # Local logging directory (Required)
upg2.upgrade_node=localhost                    # Upgrade node that operation will run on (Required)
upg2.run_utlrp=yes  # yes(default) to run utlrp as part of upgrade, no to skip it (Optional)
upg2.timezone_upg=yes # yes(default) to upgrade timezone if needed, no to skip it (Optional)
upg2.target_version=12.2                      # Oracle Home Target version number (Required)

在分析模式下执行自动升级。

自动升级控制台使我们能够监视、管理和控制由自动升级实用程序启动的作业。

例如,我们在控制台提示符中使用'lsj'命令,它将列出正在运行的升级作业以及进度和状态。

[oracle@host02 autoupgrade]$ $ORACLE_HOME/jdk/bin/java -jar /home/oracle/autoupgrade.jar -config /tmp/config.txt -mode analyze
Autoupgrade tool launched with default options
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
2 databases will be analyzed
Type 'help' to list console commands
upg> lsj
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION|  STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
| 104|    DB1|PRECHECKS|PREPARING| RUNNING|19/06/09 16:57|     N/A|16:57:45|Remaining 49/71|
| 105|    DB2|    SETUP|PREPARING|FINISHED|19/06/09 16:57|     N/A|16:57:34|      Scheduled|
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
Total jobs 2

upg> lsj
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION|  STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
| 104|    DB1|PRECHECKS|PREPARING| RUNNING|19/06/09 16:57|     N/A|16:57:51|Remaining 15/71|
| 105|    DB2|    SETUP|PREPARING|FINISHED|19/06/09 16:57|     N/A|16:57:34|      Scheduled|
+----+-------+---------+---------+--------+--------------+--------+--------+---------------+
Total jobs 2

upg> tasks
+---+--------------+-------------+
| ID|          NAME|         Job#|
+---+--------------+-------------+
|  1|          main|      WAITING|
| 30|      jobs_mon|      WAITING|
| 31|       console|     RUNNABLE|
| 32|  queue_reader|      WAITING|
| 33|         cmd-0|      WAITING|
| 44| job_manager-0|      WAITING|
| 47|    event_loop|TIMED_WAITING|
| 48|    bqueue-104|      WAITING|
| 50|    checks-104|      WAITING|
| 51|rep_checks-104|TIMED_WAITING|
|105|    db1-puic-0|      WAITING|
|106|    db1-puic-1|      WAITING|
|170|      quickSQL|     RUNNABLE|
+---+--------------+-------------+

upg> status
---------------- Config -------------------
User configuration file    [/tmp/config.txt]
General logs location      [/u02/app/oracle/autoupgrade        # Top level logging directory (Required)/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 [2]
Total Non-CDB being processed         [2]
Total CDB being processed             [0]
Jobs finished successfully            [0]
Jobs finished/aborted                 [0]
jobs in progress                      [2]
------------ Resources ----------------
Threads in use                        [21]
JVM used memory                       [41] MB
CPU in use                            [13%]
Processes in use                      [14]

upg> Job 104 completed
Job 105 completed
------------------- Final Summary --------------------
Number of databases            [ 2 ]

Jobs finished successfully     [2]
Jobs failed                    [0]
Jobs pending                   [0]
------------- JOBS FINISHED SUCCESSFULLY -------------
Job 104 FOR DB1
Job 105 FOR DB2

[oracle@host02 autoupgrade]$

请注意为每个数据库创建的日志文件–由于我们只使用Analyze选项运行autoupgrade,因此创建的唯一目录是prechecks directory。

对于已分析的每个数据库,我们可以查看HTML文件,其中列出了预检查警告和建议。

[oracle@host01 prechecks]$ pwd
/u02/app/oracle/autoupgrade/db1/db1/104/prechecks
[oracle@host01 prechecks]$ ls -l
total 180
-rwx------. 1 oracle oinstall   1967 May 21 00:29 db1_checklist.cfg
-rwx------. 1 oracle oinstall   1616 May 21 00:29 db1_checklist.json
-rwx------. 1 oracle oinstall   1892 May 21 00:29 db1_checklist.xml
-rwx------. 1 oracle oinstall  23354 May 21 00:29 db1_preupgrade.html
-rwx------. 1 oracle oinstall   7619 May 21 00:29 db1_preupgrade.log
-rwx------. 1 oracle oinstall 138146 May 21 00:29 prechecks_db1.log



[oracle@host01 prechecks]$ pwd
/u02/app/oracle/autoupgrade/db2/db2/105/prechecks
[oracle@host01 prechecks]$ ls -lrt
total 180
-rwx------. 1 oracle oinstall 138147 May 21 00:29 prechecks_db2.log
-rwx------. 1 oracle oinstall   1901 May 21 00:29 db2_checklist.xml
-rwx------. 1 oracle oinstall   1976 May 21 00:29 db2_checklist.cfg
-rwx------. 1 oracle oinstall   7543 May 21 00:29 db2_preupgrade.log
-rwx------. 1 oracle oinstall   1625 May 21 00:29 db2_checklist.json
-rwx------. 1 oracle oinstall  23230 May 21 00:29 db2_preupgrade.html