联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
随着硬件生命周期,数据库等保要求等,不少客户需要把数据库从11.2.0.4版本升级到19c.对于这样的客户的核心生产库升级,一般考虑到回退情况,大部分会选择异机进行升级,提供一个完整版测试
在源库(11.2.0.4)中做升级之前检查
--触发器检查(禁用和启用脚本生成)
SELECT 'ALTER TRIGGER ' || owner || '.' || trigger_name || ' DISABLE;' AS disable_commands
FROM dba_triggers
WHERE trigger_type IN ('BEFORE EVENT', 'AFTER EVENT')
AND triggering_event LIKE '%DDL%'
AND status = 'ENABLED';
SELECT 'ALTER TRIGGER ' || owner || '.' || trigger_name || ' ENABLE;' AS disable_commands
FROM dba_triggers
WHERE trigger_type IN ('BEFORE EVENT', 'AFTER EVENT')
AND triggering_event LIKE '%DDL%'
AND status = 'ENABLED';
--收集字典统计信息
EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;
EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
--检查时区信息
select * from v$timezone_file;
select distinct owner from dba_tab_columns where
DATA_TYPE='TIMESTAMP(6) WITH TIME ZONE';
--物化视图刷新检查
SELECT DISTINCT(TRUNC(last_refresh)) FROM dba_snapshot_refresh_times;
SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;
--无效index检查
set linesize 400
select owner,index_name from dba_indexes where status in ('INVALID','UNUSABLE') ;
select index_owner,index_name,partition_name,status from dba_ind_partitions where status in ('INVALID','UNUSABLE') ;
--清空审计表和所属表空间检查
truncate table aud$;
SELECT owner,tablespace_name FROM dba_tables WHERE table_name='AUD$';
--清理19c中无法升级组件
alter session set nls_language='American';
SET ECHO ON;
SET SERVEROUTPUT ON;
@olspreupgrade.sql
@emremove.sql
@catnoamd.sql
@catnoexf.sql
@$ORACLE_HOME/apex/apxremov.sql
@?/rdbms/admin/utlprp.sql 32
select owner,object_type from dba_objects where object_name =upper('htmldb_system');
drop package htmldb_system;
drop public synonym htmldb_system;
--检查数据文件不处于备份状态
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
--清空回收站
PURGE DBA_RECYCLEBIN;
--检查 SYS 及 SYSTEM默认表空间
SELECT username, default_tablespace FROM dba_users WHERE username in ('SYS','SYSTEM');
--检查组件状态
set pagesize 500
set linesize 400
col comp_name for a40
select substr(comp_name,1,40) comp_name, status, substr (version,1,10) version from dba_registry order by comp_name;
--记录无效对象
create table system.invalid_obj_10g_beforeup tablespace sysaux as select substr(object_name,1,40) object_name,
substr(owner,1,15) owner, object_type from dba_objects where status='INVALID' order by owner,object_type;
--禁用Block Change Tracking
SELECT filename, status, bytes FROM v$block_change_tracking;
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
--执行 preupgrade 脚本
$ORACLE_HOME/jdk/bin/java -jar /u01/xff/preupgrade.jar FILE TEXT DIR /tmp
@/tmp/preupgrade_fixups.sql
--执行dbupgdiag.sql脚本
alter session set nls_language='American';
SET ECHO ON;
SET SERVEROUTPUT ON;
@dbupgdiag.sql
rman备份还原数据库
--在11.2.0.4库备份操作 backup filesperset = 5 as compressed backupset database format '/u01/rmanback/full_%T_%U.rman'; sql 'alter system archive log current'; sql 'alter system archive log current'; Backup filesperset = 10 as compressed backupset archivelog all format '/u01/rmanback/arch_%T_%U.rman' not backed up delete input; backup format '/u01/rmanback/ctl_%T_%U.rman' current controlfile; --在19c库还原操作 SQL>startup nomount pfile='/tmp/pfile' RMAN> restore controlfile from '/u01/rmanback/ctl_20251003_0a459rsp_1_1.rman'; RMAN> alter database mount; RMAN> catalog start with '/u01/orabak/'; RMAN> restore database; RMAN> recover database; --可以增量追加归档 SQL> alter database open resetlogs upgrade;
正式升级操作(19c环境)
startup pfile='/u01/xff/pfile.upgrade' mount; alter database open upgrade; export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 cd $ORACLE_HOME/bin ./dbupgrade sqlplus / as sysdba startup @?/rdbms/admin/utlusts.sql TEXT @?/rdbms/admin/utlrp.sql 32 @?/rdbms/admin/utlusts.sql TEXT set pagesize500 set linesize 400 col comp_name for a40 select substr(comp_name,1,40) comp_name, status, substr (version,1,10) version from dba_registry order by comp_name;
升级完成后操作
--执行postupgrade_fixups @/tmp/postupgrade_fixups.sql --收集字典统计信息 EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS; EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; --升级时区 cd $ORACLE_HOME/rdbms/admin @utltz_countstats.sql @utltz_countstar.sql @?/rdbms/admin/utltz_upg_check.sql @?/rdbms/admin/utltz_upg_apply.sql
主要日志
--升级操作日志
[oracle@oracledb:/u01/app/oracle/product/19c/db/bin]$ ./dbupgrade
Argument list for [/u01/app/oracle/product/19c/db/rdbms/admin/catctl.pl]
For Oracle internal use only A = 0
Run in c = 0
Do not run in C = 0
Input Directory d = 0
Echo OFF e = 1
Simulate E = 0
Forced cleanup F = 0
Log Id i = 0
Child Process I = 0
Log Dir l = 0
Priority List Name L = 0
Upgrade Mode active M = 0
SQL Process Count n = 0
SQL PDB Process Count N = 0
Open Mode Normal o = 0
Start Phase p = 0
End Phase P = 0
Reverse Order r = 0
AutoUpgrade Resume R = 0
Script s = 0
Serial Run S = 0
RO User Tablespaces T = 0
Display Phases y = 0
Debug catcon.pm z = 0
Debug catctl.pl Z = 0
catctl.pl VERSION: [19.0.0.0.0]
STATUS: [Production]
BUILD: [RDBMS_19.16.0.0.0DBRU_LINUX.X64_220701]
/u01/app/oracle/product/19c/db/rdbms/admin/orahome = [/u01/app/oracle/product/19c/db]
/u01/app/oracle/product/19c/db/bin/orabasehome = [/u01/app/oracle/product/19c/db]
catctlGetOraBaseLogDir = [/u01/app/oracle/product/19c/db]
Analyzing file /u01/app/oracle/product/19c/db/rdbms/admin/catupgrd.sql
Log file directory = [/tmp/cfgtoollogs/upgrade20251003103800]
catcon::set_log_file_base_path: ALL catcon-related output will be written to
[/tmp/cfgtoollogs/upgrade20251003103800/catupgrd_catcon_15770.lst]
catcon::set_log_file_base_path: catcon: See [/tmp/cfgtoollogs/upgrade20251003103800/catupgrd*.log]
files for output generated by scripts
catcon::set_log_file_base_path: catcon: See [/tmp/cfgtoollogs/upgrade20251003103800/catupgrd_*.lst]
files for spool files, if any
Number of Cpus = 4
Database Name = orcl
DataBase Version = 11.2.0.4.0
catcon::set_log_file_base_path: ALL catcon-related output will be written to
[/u01/xxx/upgrade20251003103801/catupgrd_catcon_15770.lst]
catcon::set_log_file_base_path: catcon: See [/u01/xxx/upgrade20251003103801/catupgrd*.log]
files for output generated by scripts
catcon::set_log_file_base_path: catcon: See [/u01/xxx/upgrade20251003103801/catupgrd_*.lst]
files for spool files, if any
Log file directory = [/u01/xxx/upgrade20251003103801]
Parallel SQL Process Count = 4
Components in [orcl]
Installed [APS CATALOG CATJAVA CATPROC CONTEXT JAVAVM ORDIM OWM SDO XDB XML XOQ]
Not Installed [APEX DV EM MGW ODM OLS RAC WK]
DataBase Version = 11.2.0.4.0
------------------------------------------------------
Phases [0-107] Start Time:[2025_10_03 10:38:01]
------------------------------------------------------
*********** Executing Change Scripts ***********
Serial Phase #:0 [orcl] Files:1 Time: 30s
*************** Catalog Core SQL ***************
Serial Phase #:1 [orcl] Files:5 Time: 18s
Restart Phase #:2 [orcl] Files:1 Time: 0s
*********** Catalog Tables and Views ***********
Parallel Phase #:3 [orcl] Files:19 Time: 9s
Restart Phase #:4 [orcl] Files:1 Time: 0s
************* Catalog Final Scripts ************
Serial Phase #:5 [orcl] Files:7 Time: 7s
***************** Catproc Start ****************
Serial Phase #:6 [orcl] Files:1 Time: 5s
***************** Catproc Types ****************
Serial Phase #:7 [orcl] Files:2 Time: 4s
Restart Phase #:8 [orcl] Files:1 Time: 0s
**************** Catproc Tables ****************
Parallel Phase #:9 [orcl] Files:70 Time: 9s
Restart Phase #:10 [orcl] Files:1 Time: 0s
************* Catproc Package Specs ************
Serial Phase #:11 [orcl] Files:1 Time: 25s
Restart Phase #:12 [orcl] Files:1 Time: 0s
************** Catproc Procedures **************
Parallel Phase #:13 [orcl] Files:95 Time: 2s
Restart Phase #:14 [orcl] Files:1 Time: 0s
Parallel Phase #:15 [orcl] Files:122 Time: 4s
Restart Phase #:16 [orcl] Files:1 Time: 0s
Serial Phase #:17 [orcl] Files:25 Time: 1s
Restart Phase #:18 [orcl] Files:1 Time: 0s
***************** Catproc Views ****************
Parallel Phase #:19 [orcl] Files:32 Time: 6s
Restart Phase #:20 [orcl] Files:1 Time: 0s
Serial Phase #:21 [orcl] Files:3 Time: 4s
Restart Phase #:22 [orcl] Files:1 Time: 1s
Parallel Phase #:23 [orcl] Files:25 Time: 79s
Restart Phase #:24 [orcl] Files:1 Time: 0s
Parallel Phase #:25 [orcl] Files:12 Time: 49s
Restart Phase #:26 [orcl] Files:1 Time: 0s
Serial Phase #:27 [orcl] Files:1 Time: 0s
Serial Phase #:28 [orcl] Files:4 Time: 1s
Serial Phase #:29 [orcl] Files:1 Time: 0s
Restart Phase #:30 [orcl] Files:1 Time: 0s
*************** Catproc CDB Views **************
Serial Phase #:31 [orcl] Files:1 Time: 0s
Restart Phase #:32 [orcl] Files:1 Time: 0s
Serial Phase #:34 [orcl] Files:1 Time: 0s
***************** Catproc PLBs *****************
Serial Phase #:35 [orcl] Files:297 Time: 9s
Serial Phase #:36 [orcl] Files:1 Time: 0s
Restart Phase #:37 [orcl] Files:1 Time: 0s
Serial Phase #:38 [orcl] Files:10 Time: 2s
Restart Phase #:39 [orcl] Files:1 Time: 0s
*************** Catproc DataPump ***************
Serial Phase #:40 [orcl] Files:3 Time: 21s
Restart Phase #:41 [orcl] Files:1 Time: 0s
****************** Catproc SQL *****************
Parallel Phase #:42 [orcl] Files:13 Time: 50s
Restart Phase #:43 [orcl] Files:1 Time: 1s
Parallel Phase #:44 [orcl] Files:11 Time: 3s
Restart Phase #:45 [orcl] Files:1 Time: 0s
Parallel Phase #:46 [orcl] Files:3 Time: 0s
Restart Phase #:47 [orcl] Files:1 Time: 0s
************* Final Catproc scripts ************
Serial Phase #:48 [orcl] Files:1 Time: 5s
Restart Phase #:49 [orcl] Files:1 Time: 0s
************** Final RDBMS scripts *************
Serial Phase #:50 [orcl] Files:1 Time: 8s
************ Upgrade Component Start ***********
Serial Phase #:51 [orcl] Files:1 Time: 0s
Restart Phase #:52 [orcl] Files:1 Time: 0s
********** Upgrading Java and non-Java *********
Serial Phase #:53 [orcl] Files:2 Time: 161s
***************** Upgrading XDB ****************
Restart Phase #:54 [orcl] Files:1 Time: 0s
Serial Phase #:56 [orcl] Files:3 Time: 9s
Serial Phase #:57 [orcl] Files:3 Time: 1s
Parallel Phase #:58 [orcl] Files:10 Time: 1s
Parallel Phase #:59 [orcl] Files:25 Time: 2s
Serial Phase #:60 [orcl] Files:4 Time: 3s
Serial Phase #:61 [orcl] Files:1 Time: 0s
Serial Phase #:62 [orcl] Files:32 Time: 1s
Serial Phase #:63 [orcl] Files:1 Time: 0s
Parallel Phase #:64 [orcl] Files:6 Time: 4s
Serial Phase #:65 [orcl] Files:2 Time: 8s
Serial Phase #:66 [orcl] Files:3 Time: 29s
**************** Upgrading ORDIM ***************
Restart Phase #:67 [orcl] Files:1 Time: 0s
Serial Phase #:69 [orcl] Files:1 Time: 0s
Parallel Phase #:70 [orcl] Files:2 Time: 14s
Restart Phase #:71 [orcl] Files:1 Time: 0s
Parallel Phase #:72 [orcl] Files:2 Time: 0s
Serial Phase #:73 [orcl] Files:2 Time: 0s
***************** Upgrading SDO ****************
Restart Phase #:74 [orcl] Files:1 Time: 0s
Serial Phase #:76 [orcl] Files:1 Time: 16s
Serial Phase #:77 [orcl] Files:2 Time: 0s
Restart Phase #:78 [orcl] Files:1 Time: 0s
Serial Phase #:79 [orcl] Files:1 Time: 8s
Restart Phase #:80 [orcl] Files:1 Time: 0s
Parallel Phase #:81 [orcl] Files:3 Time: 10s
Restart Phase #:82 [orcl] Files:1 Time: 0s
Serial Phase #:83 [orcl] Files:1 Time: 2s
Restart Phase #:84 [orcl] Files:1 Time: 0s
Serial Phase #:85 [orcl] Files:1 Time: 4s
Restart Phase #:86 [orcl] Files:1 Time: 0s
Parallel Phase #:87 [orcl] Files:4 Time: 28s
Restart Phase #:88 [orcl] Files:1 Time: 0s
Serial Phase #:89 [orcl] Files:1 Time: 0s
Restart Phase #:90 [orcl] Files:1 Time: 0s
Serial Phase #:91 [orcl] Files:2 Time: 4s
Restart Phase #:92 [orcl] Files:1 Time: 0s
Serial Phase #:93 [orcl] Files:1 Time: 0s
Restart Phase #:94 [orcl] Files:1 Time: 1s
******* Upgrading ODM, WK, EXF, RUL, XOQ *******
Serial Phase #:95 [orcl] Files:1 Time: 6s
Restart Phase #:96 [orcl] Files:1 Time: 0s
*********** Final Component scripts ***********
Serial Phase #:97 [orcl] Files:1 Time: 1s
************* Final Upgrade scripts ************
Serial Phase #:98 [orcl] Files:1 Time: 22s
******************* Migration ******************
Serial Phase #:99 [orcl] Files:1 Time: 15s
*** End PDB Application Upgrade Pre-Shutdown ***
Serial Phase #:100 [orcl] Files:1 Time: 0s
Serial Phase #:101 [orcl] Files:1 Time: 0s
Serial Phase #:102 [orcl] Files:1 Time: 35s
***************** Post Upgrade *****************
Serial Phase #:103 [orcl] Files:1 Time: 14s
**************** Summary report ****************
Serial Phase #:104 [orcl] Files:1 Time: 0s
*** End PDB Application Upgrade Post-Shutdown **
Serial Phase #:105 [orcl] Files:1 Time: 0s
Serial Phase #:106 [orcl] Files:1 Time: 0s
Serial Phase #:107 [orcl] Files:1 Time: 50s
------------------------------------------------------
Phases [0-107] End Time:[2025_10_03 10:51:23]
------------------------------------------------------
Grand Total Time: 802s
LOG FILES: (/u01/xxx/upgrade20251003103801/catupgrd*.log)
Upgrade Summary Report Located in:
/u01/xxx/upgrade20251003103801/upg_summary.log
Grand Total Upgrade Time: [0d:0h:13m:22s]
--组件状态
SQL>@?/rdbms/admin/utlusts.sql TEXT
Oracle Database Release 19 Post-Upgrade Status Tool 10-03-2025 10:53:4
Database Name: ORCL
Component Current Full Elapsed Time
Name Status Version HH:MM:SS
Oracle Server UPGRADED 19.16.0.0.0 00:05:52
JServer JAVA Virtual Machine UPGRADED 19.16.0.0.0 00:01:28
Oracle XDK UPGRADED 19.16.0.0.0 00:00:16
Oracle Database Java Packages UPGRADED 19.16.0.0.0 00:00:05
OLAP Analytic Workspace UPGRADED 19.16.0.0.0 00:00:04
Oracle Text UPGRADED 19.16.0.0.0 00:00:18
Oracle Workspace Manager UPGRADED 19.16.0.0.0 00:00:26
Oracle Real Application Clusters OPTION OFF 19.16.0.0.0 00:00:00
Oracle XML Database UPGRADED 19.16.0.0.0 00:00:58
Oracle Multimedia UPGRADED 19.16.0.0.0 00:00:13
Spatial UPGRADED 19.16.0.0.0 00:01:11
Oracle OLAP API UPGRADED 19.16.0.0.0 00:00:05
Datapatch 00:00:19
Final Actions 00:00:37
Post Upgrade 00:00:12
Total Upgrade Time: 00:11:54
Database time zone version is 14. It is older than current release time
zone version 32. Time zone upgrade is needed using the DBMS_DST package.
--编译无效对象
SQL>@?/rdbms/admin/utlrp.sql 32
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2025-10-03 10:53:48
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2025-10-03 10:55:35
DOC> The following query reports the number of invalid objects.
DOC>
DOC> If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of exceptions caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC> Note: Typical compilation errors (due to coding errors) are not
DOC> logged into this table: they go into DBA_ERRORS instead.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
0
--编译之后组件状态正常
SQL>@?/rdbms/admin/utlusts.sql TEXT
Oracle Database Release 19 Post-Upgrade Status Tool 10-03-2025 10:55:3
Database Name: ORCL
Component Current Full Elapsed Time
Name Status Version HH:MM:SS
Oracle Server VALID 19.16.0.0.0 00:05:52
JServer JAVA Virtual Machine VALID 19.16.0.0.0 00:01:28
Oracle XDK VALID 19.16.0.0.0 00:00:16
Oracle Database Java Packages VALID 19.16.0.0.0 00:00:05
OLAP Analytic Workspace VALID 19.16.0.0.0 00:00:04
Oracle Text VALID 19.16.0.0.0 00:00:18
Oracle Workspace Manager VALID 19.16.0.0.0 00:00:26
Oracle Real Application Clusters OPTION OFF 19.16.0.0.0 00:00:00
Oracle XML Database VALID 19.16.0.0.0 00:00:58
Oracle Multimedia VALID 19.16.0.0.0 00:00:13
Spatial VALID 19.16.0.0.0 00:01:11
Oracle OLAP API VALID 19.16.0.0.0 00:00:05
Datapatch 00:00:19
Final Actions 00:00:37
Post Upgrade 00:00:12
Post Compile 00:01:47
Total Upgrade Time: 00:13:41
Database time zone version is 14. It is older than current release time
zone version 32. Time zone upgrade is needed using the DBMS_DST package.
--时区升级之后结果
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
2 FROM DATABASE_PROPERTIES
3 WHERE PROPERTY_NAME LIKE 'DST_%'
4 ORDER BY PROPERTY_NAME;
PROPERTY_NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
DST_PRIMARY_TT_VERSION
32
DST_SECONDARY_TT_VERSION
0
DST_UPGRADE_STATE
NONE
3 rows selected.
具体参考:Oracle 19c – 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)
