Anuj Singh Oracle DBA

Search This Blog

Total Pageviews

Wednesday, 8 July 2026

Upgrade Oracle Database 19c Non-CDB to Oracle AI Database 26ai PDB using AutoUpgrade



Oracle Database Upgrade Guide
Upgrade Oracle Database 19c Non-CDB to Oracle AI Database 26ai PDB using AutoUpgrade




Source Database: Oracle Database 19c (19.3 Non-CDB)

Target Database: Oracle AI Database 26ai (23.26.1)

Upgrade Method: AutoUpgrade

Operating System: Oracle Linux

1. Objective

This document describes the procedure for upgrading an Oracle 19c Non-CDB database into an Oracle AI Database 26ai Pluggable Database (PDB) using Oracle AutoUpgrade.

2. Environment
Parameter	Value
Source Database	ORCL
Source Version	19.3.0.0
Target Version	Oracle AI Database 26ai (23.26.1)
Source Oracle Home	/u01/app/oracle/product/19.0.0/db_1
Target Oracle Home	/u01/app/oracle/product/26.0.0/dbhome_1
Target CDB	cdb26i
Target PDB	ORCL

3. Install Oracle AI Database 26ai Software

Set Environment
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/26.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=cdb26i
export SOFTWARE_DIR=/home/oracle
export ORA_INVENTORY=/u01/app/oraInventory
Create Oracle Home
mkdir -p $ORACLE_HOME
Extract Software
cd $ORACLE_HOME

unzip -oq ${SOFTWARE_DIR}/LINUX.X64_2326100_db_home.zip
Install Software
./runInstaller \
-ignorePrereq \
-waitforcompletion \
-silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
installOption=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
installEdition=EE \
OSDBA=dba \
OSBACKUPDBA=dba \
OSDGDBA=dba \
OSKMDBA=dba \
OSRACDBA=dba

After installation completes, execute:

root.sh

as the root user.

4. Create the Target 26ai Container Database

Create the database storage location.

mkdir -p /u01/app/oracle/oradata/cdb26i

Run DBCA to create database 

dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb26i \
-sid cdb26i \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword sys \
-systemPassword sys \
-createAsContainerDatabase true \
-numberOfPDBs 0 \
-databaseType MULTIPURPOSE \
-memoryMgmtType auto_sga \
-totalMemory 1536 \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/cdb26i" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
5. Resolve ORADISM Permission Issue

If DBCA fails with:

DBT-10011 Incorrect ownership/permissions detected for oradism

Login as root and execute:

cd $ORACLE_HOME/bin

chown root:oinstall oradism

chmod 4750 oradism

Verify:

ls -l oradism

Expected:

-rwsr-x--- root oinstall

Re-run DBCA after correcting the permissions.

6. Update AutoUpgrade Utility

Backup the existing JAR.

cd $ORACLE_HOME/rdbms/admin

mv autoupgrade.jar autoupgrade.jar.$(date +%F)

Download the latest version.

wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar

Copy the new JAR into:

$ORACLE_HOME/rdbms/admin
7. Configure Archive Log Mode

Login as SYSDBA.

ALTER SYSTEM SET db_recovery_file_dest_size=20G;
ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/fast_recovery_area26ai';
ALTER SYSTEM SET db_create_file_dest='/u01/app/oracle/oradata/cdb26i';

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;




download new autoupgrade.jar’


[oracle@grid26 bin]$ wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
--2026-07-08 11:51:49--  https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
Resolving download.oracle.com (download.oracle.com)... 184.26.56.105
Connecting to download.oracle.com (download.oracle.com)|184.26.56.105|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/otn_software/autoupgrade.jar [following]
--2026-07-08 11:51:49--  https://edelivery.oracle.com/otn-pub/otn_software/autoupgrade.jar
Resolving edelivery.oracle.com (edelivery.oracle.com)... 2a02:26f0:fd00:49c::366, 2a02:26f0:fd00:496::366, 23.206.11.197
Connecting to edelivery.oracle.com (edelivery.oracle.com)|2a02:26f0:fd00:49c::366|:443... failed: Connection timed out.
Connecting to edelivery.oracle.com (edelivery.oracle.com)|2a02:26f0:fd00:496::366|:443... failed: Connection timed out.
Connecting to edelivery.oracle.com (edelivery.oracle.com)|23.206.11.197|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar?AuthParam=1783508296_6803ca6de5ae52af25c1456debc09601 [following]
--2026-07-08 11:56:11--  https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar?AuthParam=1783508296_6803ca6de5ae52af25c1456debc09601
Connecting to download.oracle.com (download.oracle.com)|184.26.56.105|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7174061 (6.8M) [application/x-jar]
Saving to: ‘autoupgrade.jar’

autoupgrade.jar                           100%[==================================================================================>]   6.84M  21.8MB/s    in 0.3s

2026-07-08 11:56:11 (21.8 MB/s) - ‘autoupgrade.jar’ saved [7174061/7174061]




pwd
/u01/app/oracle/product/26.0.0/dbhome_1/rdbms/admin   
[oracle@grid26 admin]$ mv autoupgrade.jar autoupgrade.jar.`date +"%Y"-"%m"-"%d"`

[oracle@grid26 admin]$ mv /u01/app/oracle/product/26.0.0/dbhome_1/bin/autoupgrade.jar .

[oracle@grid26 admin]$ ls -ltr auto*
-rw-r----- 1 oracle oinstall 6729196 Jan 17 07:17 autoupgrade.jar.2026-07-08
-rw-r--r-- 1 oracle oinstall 7174061 Jul  3 10:58 autoupgrade.jar

[oracle@grid26 admin]$







8. Create AutoUpgrade Configuration File

Example:

global.global_log_dir=/home/oracle/upgrade

upg1.sid=ORCL
upg1.target_cdb=cdb26i
upg1.source_home=/u01/app/oracle/product/19.0.0/db_1
upg1.target_home=/u01/app/oracle/product/26.0.0/dbhome_1
upg1.target_pdb_name=orcl
upg1.start_time=NOW
upg1.upgrade_node=grid26
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_version=26
upg1.restoration=no
9. Run AutoUpgrade Analysis

Execute:

$ORACLE_HOME/jdk/bin/java \
-jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar \
-config /home/oracle/upgrade/config.txt \
-mode analyze

Monitor jobs:

lsj

If analysis reports:

FLASH_RECOVERY_AREA_SETUP
ARCHIVE_MODE_ON

Configure the FRA and enable ARCHIVELOG mode, then rerun the analysis until all prechecks succeed.

10. Start the Upgrade

Execute:

$ORACLE_HOME/jdk/bin/java \
-jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar \
-config /home/oracle/upgrade/config.txt \
-mode deploy

Monitor progress using:

lsj

Typical stages include:

PRECHECKS
PREFIXUPS
DRAIN
DBUPGRADE
NONCDBTOPDB
POSTCHECKS
POSTFIXUPS
POSTUPGRADE
SYSUPDATES




upg>

 /u01/app/oracle/product/26.0.0/dbhome_1/jdk/bin/java -jar $ORACLE_BASE/product/26.0.0/dbhome_1/rdbms/admin/autoupgrade.jar -config /home/oracle/upgrade/config.txt -mode deploy
AutoUpgrade 26.4.260701 launched with default internal options

Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be processed
Type 'help' to list console commands



upg> lsg
Unrecognized cmd: lsg
upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|                     MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
| 102|   ORCL|PRECHECKS|EXECUTING|RUNNING|  13:05:25|20s ago|Loading database information|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25| 6s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25| 2s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25|69s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|           MESSAGE|
+----+-------+---------+---------+-------+----------+-------+------------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25|23s ago|Refreshing DB info|
+----+-------+---------+---------+-------+----------+-------+------------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|           MESSAGE|
+----+-------+---------+---------+-------+----------+-------+------------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25|39s ago|Refreshing DB info|
+----+-------+---------+---------+-------+----------+-------+------------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+---------+---------+-------+----------+-------+-------------------+
| 102|   ORCL|PREFIXUPS|EXECUTING|RUNNING|  13:05:25| 0s ago|Re-Executing Checks|
+----+-------+---------+---------+-------+----------+-------+-------------------+
Total jobs 1

upg> lsj
+----+-------+-----+---------+-------+----------+-------+------------------------+
|Job#|DB_NAME|STAGE|OPERATION| STATUS|START_TIME|UPDATED|                 MESSAGE|
+----+-------+-----+---------+-------+----------+-------+------------------------+
| 102|   ORCL|DRAIN|EXECUTING|RUNNING|  13:05:25| 0s ago|Disabling RAC if present|
+----+-------+-----+---------+-------+----------+-------+------------------------+
Total jobs 1

upg> lsj
+----+-------+-----+---------+-------+----------+-------+------------------------+
|Job#|DB_NAME|STAGE|OPERATION| STATUS|START_TIME|UPDATED|                 MESSAGE|
+----+-------+-----+---------+-------+----------+-------+------------------------+
| 102|   ORCL|DRAIN|EXECUTING|RUNNING|  13:05:25|49s ago|Disabling RAC if present|
+----+-------+-----+---------+-------+----------+-------+------------------------+
Total jobs 1

upg> lsj
+----+-------+-----+---------+-------+----------+-------+------------------+
|Job#|DB_NAME|STAGE|OPERATION| STATUS|START_TIME|UPDATED|           MESSAGE|
+----+-------+-----+---------+-------+----------+-------+------------------+
| 102|   ORCL|DRAIN|EXECUTING|RUNNING|  13:05:25|55s ago|Executing describe|
+----+-------+-----+---------+-------+----------+-------+------------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+----------+-------+---------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|55s ago|0%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+---------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+----------+-------+---------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|85s ago|0%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+---------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+----------+-------+---------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|48s ago|0%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+---------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+----------+--------+---------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|103s ago|0%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+---------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+----------+--------+---------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|112s ago|3%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+---------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|80s ago|23%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|58s ago|23%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|89s ago|23%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25| 3s ago|29%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|53s ago|29%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|56s ago|50%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25| 5s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|33s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+--------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|100s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|76s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|23s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|97s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25| 4s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|72s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|83s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|12s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|65s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|73s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|12s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+--------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|117s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|68s ago|53%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|37s ago|67%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|53s ago|67%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|78s ago|67%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|96s ago|71%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|28s ago|76%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|75s ago|76%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|87s ago|76%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|89s ago|76%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|88s ago|81%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+--------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|110s ago|81%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|96s ago|81%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+--------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME| UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+--------+----------------+
| 102|   ORCL|DBUPGRADE|EXECUTING|RUNNING|  13:05:25|107s ago|81%Upgraded ORCL|
+----+-------+---------+---------+-------+----------+--------+----------------+
Total jobs 1

upg> lsj
+----+-------+--------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|   STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+--------+---------+-------+----------+-------+-------------------+
| 102|   ORCL|DISPATCH|EXECUTING|RUNNING|  13:05:25|65s ago|Restarting Database|
+----+-------+--------+---------+-------+----------+-------+-------------------+
Total jobs 1

upg>



Time drifted forward by (1162941) micro seconds at 25745163397 whereas allowed drift is 1000000

Time drift error is a message which can be ignored, and to remove it you can set:
SQL> alter system set event=”10795 trace name context forever, level 2″ scope=spfile;
Then bounce the DB instances to implement the event/change.



upg> -------------------------------------------------
job 102 has not shown progress in last 25 minutes
database [ORCL]
Stage    [DISPATCH]
Operation[EXECUTING]
Status   [RUNNING]
Info     [Restarting Database]
[Review log files for further information]
-----------------------------------------------
Logs: /home/oracle/upgrade/ORCL/102
-----------------------------------------------

upg> lsj
+----+-------+--------+---------+-------+----------+------------+-------------------+
|Job#|DB_NAME|   STAGE|OPERATION| STATUS|START_TIME|     UPDATED|            MESSAGE|
+----+-------+--------+---------+-------+----------+------------+-------------------+
| 102|   ORCL|DISPATCH|EXECUTING|RUNNING|  13:05:25|!!!1604s ago|Restarting Database|
+----+-------+--------+---------+-------+----------+------------+-------------------+
Total jobs 1





11. Time Drift Message

During the upgrade, the following informational message may appear:

Time drifted forward...

To suppress this message in future database startups:

ALTER SYSTEM SET EVENT='10795 trace name context forever, level 2'
SCOPE=SPFILE;

Restart the database for the change to take effect.

12. Verify Upgrade

Connect to the target CDB.

sqlplus / as sysdba

Check the PDB status.

SHOW PDBS;

Expected output:

PDB$SEED

ORCL

Verify the Oracle version.

SELECT banner_full
FROM v$version


BANNER_FULL
--------------------------------------------------------------------------------
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0





13. Verify AutoUpgrade Completion

Review the AutoUpgrade summary.

/home/oracle/upgrade/cfgtoollogs/upgrade/auto/status/status.log

Expected results:

Stage	Status
PRECHECKS	SUCCESS
PREFIXUPS	SUCCESS
DRAIN	SUCCESS
DBUPGRADE	SUCCESS
NONCDBTOPDB	SUCCESS
POSTCHECKS	SUCCESS
POSTFIXUPS	SUCCESS
POSTUPGRADE	SUCCESS
SYSUPDATES	SUCCESS



14. Log Locations
Purpose	Location
AutoUpgrade Logs	/home/oracle/upgrade/ORCL/102/
Summary Report	/home/oracle/upgrade/cfgtoollogs/upgrade/auto/status/status.log
DB Upgrade Summary	/home/oracle/upgrade/ORCL/102/dbupgrade/upg_summary.log
DBCA Logs	/u01/app/oracle/cfgtoollogs/dbca/cdb26i/






[oracle@grid26 ~]$ export PATH=$ORACLE_HOME/OPatch:$PATH
[oracle@grid26 ~]$ opatch lsinventory | grep -E "(^Patch.*applied)|(^Sub-patch)"
Patch  38743688     : applied on Sun Jan 18 12:04:30 GMT 2026
Patch  38743669     : applied on Sun Jan 18 12:03:58 GMT 2026
[oracle@grid26 ~]$




opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.48
Copyright (c) 2026, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/26.0.0/dbhome_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/26.0.0/dbhome_1/oraInst.loc
OPatch version    : 12.2.0.1.48
OUI version       : 12.2.0.9.0
Log file location : /u01/app/oracle/product/26.0.0/dbhome_1/cfgtoollogs/opatch/opatch2026-07-08_16-48-12pm_1.log

Lsinventory Output file location : /u01/app/oracle/product/26.0.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2026-07-08_16-48-12pm.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: grid26
ARU platform id: 226
ARU platform description:: Linux x86-64

Installed Top-level Products (1):

Oracle Database 26ai                                                 23.0.0.0.0
There are 1 products installed in this Oracle Home.
CLID: P

Interim patches (2) :

Patch  38743688     : applied on Sun Jan 18 12:04:30 GMT 2026
Unique Patch ID:  -1768679395
Patch description:  "OCW RELEASE UPDATE 23.26.1.0.0 (GOLD IMAGE) (38743688) Gold Image"
   Created on 17 Jan 2026, 11:49:55 hrs PST8PDT





Tuesday, 9 June 2026

Oracle PDB status





set lines 200
column name format a30
col restricted for a15
select inst_id, con_id, name, open_mode, restricted from gv$pdbs
order by 1,2;






set lines 200
column name format a30
col open_status for a15
col restricted for a14
select inst_id,
       con_id,
       name,
       open_mode,
       case
            when open_mode like 'READ%' then 'GOOD'
            else 'Validate'
       end as open_status,
       restricted,
       case
            when restricted = 'NO' then 'GOOD**'
            else 'CHECK...'
       end as restricted_status
from gv$pdbs
order by 1,2;






set pagesize 0
SELECT '[PDB Info]' || CHR(10)
     || TRIM(SUBSTR('Instance ID               : ' ||	inst_id,1,60)) || CHR(10)
     || TRIM(SUBSTR('Container ID              : ' ||	con_id,1,60)) || CHR(10)
     || TRIM(SUBSTR('PDB Name                  : ' ||	name,1,60)) || CHR(10)
	 || TRIM(SUBSTR('Open Mode***              : ' ||	open_mode,1,60)) || CHR(10)
     || TRIM(SUBSTR('Restricted**              : ' ||	restricted,1,60)) || CHR(10)
     || TRIM(SUBSTR('DBID                      : ' ||	dbid,1,60)) || CHR(10)
     || TRIM(SUBSTR('CON_UID                   : ' ||	con_uid,1,60)) || CHR(10)
     || TRIM(SUBSTR('Open Time                 : ' ||	TO_CHAR(open_time,'DD-MON-YYYY HH24:MI:SS'),1,60)) || CHR(10)
     || TRIM(SUBSTR('Creation Time             : ' || 	TO_CHAR(creation_time,'DD-MON-YYYY HH24:MI:SS'),1,60)) || CHR(10)
     || TRIM(SUBSTR('Recovery Status           : ' ||	recovery_status,1,60)) || CHR(10)
     || TRIM(SUBSTR('Application Root          : ' ||	application_root,1,60)) || CHR(10)
     || TRIM(SUBSTR('Application PDB           : ' ||	application_pdb,1,60)) || CHR(10)
     || TRIM(SUBSTR('Application Seed          : ' ||	application_seed,1,60)) || CHR(10)
     || TRIM(SUBSTR('Proxy PDB                 : ' ||	proxy_pdb,1,60)) || CHR(10)
     || TRIM(SUBSTR('Local Undo                : ' ||	local_undo,1,60)) || CHR(10)
     || TRIM(SUBSTR('Total Size (MB)           : ' ||	ROUND(total_size/1024/1024,2),1,60)) || CHR(10)
     || TRIM(SUBSTR('Diagnostics Size (MB)     : ' ||	ROUND(diagnostics_size/1024/1024,2),1,60)) || CHR(10)
     || TRIM(SUBSTR('Audit Files Size (MB)     : ' ||	ROUND(audit_files_size/1024/1024,2),1,60)) || CHR(10)
     || TRIM(SUBSTR('Max Size (MB)             : ' || 	ROUND(max_size/1024/1024,2),1,60)) || CHR(10)
     || TRIM(SUBSTR('Last Changed By           : ' || 	last_changed_by,1,60)) || CHR(10)
     || TRIM(SUBSTR('Tenant ID                 : ' || 	tenant_id,1,60)) || CHR(10)
     || TRIM(SUBSTR('Upgrade Level             : ' || 	upgrade_level,1,60))
AS pdb_info
FROM gv$pdbs
ORDER BY inst_id, con_id
;
set pagesize 100

Friday, 22 May 2026

Oracle database size2

Size of Oracle database 
Oracle database size 



col "Database Size" format a20
col "Free space"      format a20
col "Used space"     format a20
select round(sum(used.bytes)/1024/1024/1024 ) || ' GB' "Database Size" , round(sum(used.bytes)/1024/1024/1024 ) - round(free.SS/1024/1024/1024) || ' GB' "Used space" 
, round(free.SS /1024/1024/1024) || ' GB' "Free space" 
from (select bytes from v$datafile 
union all 
select bytes from v$tempfile 
union all 
select bytes from v$log) used , (select sum(bytes) SS from dba_free_space) free 
group by free.SS 
/ 


Database Size        Used space           Free space
-------------------- -------------------- --------------------
2 GB                 2 GB                 0 GB


========================================================

set linesize 100 set numf 999999999999999999999 col SIZE1 for a14 select "size",dbms_xplan.format_size("size") size1 from ( select ( select sum(bytes) data_size from v$datafile ) + ( select nvl(sum(bytes),0) temp_size from v$tempfile ) + ( select sum(bytes) redo_size from sys.v_$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS) controlfile_size from v$controlfile) "size" from dual ) ; size SIZE1 ---------------------- -------------- 13781958656 12G col NAME for a15 col SIZEH for a12 select con_id, name, open_mode, total_size/1024/1024/1024 "PDB_SIZE_GB", dbms_xplan.format_size(total_size) sizeh from v$pdbs; CON_ID NAME OPEN_MODE PDB_SIZE_GB SIZEH ---------------------- --------------- ---------- ---------------------- ------------ 2 PDB$SEED READ ONLY 1 1296M 3 ORCLPROD READ WRITE 418 418G
select con_id,bytes,dbms_xplan.format_size(bytes) sizeh from ( select con_id,sum(bytes) bytes from cdb_data_files group by con_id ) ; CON_ID BYTES SIZEH ---------------------- ---------------------- ------------ 1 7203717120 6870M 3 437542977536 407G select ( select sum(bytes)/1024/1024/1024 data_size from v$datafile ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from v$tempfile ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB" from dual


With Database name .. set linesize 300 col "Database Size" for a20 col "Free space" for a20 col "Used space" for a20 col hostname for a37 col Instance for a15 col DB_unique_name for a15 col Tdate heading 'Date' alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; select sysdate Tdate,SYS_CONTEXT('USERENV','HOST') hostname,sys_context('USERENV', 'INSTANCE_NAME') Instance ,SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_unique_name, round(sum(used.bytes)/1024/1024/1024 ) || ' GB' "Database Size" , round(sum(used.bytes)/1024/1024/1024 ) - round(free.SS/1024/1024/1024) || ' GB' "Used space" , round(free.SS /1024/1024/1024) || ' GB' "Free space" from (select bytes from v$datafile union all select bytes from v$tempfile union all select bytes from v$log) used , (select sum(bytes) SS from dba_free_space) free group by free.SS / --- with ARCHIVELOG status set linesize 300 col "Database Size" for a20 col "Free space" for a20 col "Used space" for a20 col hostname for a37 col Instance for a15 col DB_unique_name for a15 col Tdate heading 'Date' alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; select sysdate Tdate,SYS_CONTEXT('USERENV','HOST') hostname,sys_context('USERENV', 'INSTANCE_NAME') Instance ,SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_unique_name, round(sum(used.bytes)/1024/1024/1024 ) || ' GB' "Database Size" ,round(sum(used.bytes)/1024/1024/1024 ) - round(free.SS/1024/1024/1024) || ' GB' "Used space" ,round(free.SS /1024/1024/1024) || ' GB' "Free space",LOG_MODE from (select bytes from v$datafile union all select bytes from v$tempfile union all select bytes from v$log) used , (select sum(bytes) SS from dba_free_space) free,(select LOG_MODE from v$database) group by free.SS,LOG_MODE / ----- select ( select sum(bytes)/1024/1024/1024 data_size from dba_data_files ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB" from dual Size in GB ---------- 1.82537842 on standby !! ================================== select ( select sum(bytes)/1024/1024/1024 data_size from v$datafile ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from v$tempfile ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB" from dual set linesize 200 col "Database Size" for a20 col "Free space" for a20 col "Used space" for a20 col hostname for a35 col Instance for a15 col DB_unique_name for a15 col Tdate heading 'Date' alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; select sysdate Tdate,SYS_CONTEXT('USERENV','HOST') hostname,sys_context('USERENV', 'INSTANCE_NAME') Instance , SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_unique_name, ( select sum(bytes)/1024/1024/1024 data_size from v$datafile ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from v$tempfile ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB" from dual; with SGA .. set lines 400 col platform_name format a30 col open_mode format a20 col host_name format a20 col version format a10 col status format a20 col uptime format a60 col name format a10 col "DB size GB" for 99999999.99 SELECT D.NAME,D.PLATFORM_NAME,D.CREATED, D.OPEN_MODE,substr(I.HOST_NAME,1,20) HOST_NAME ,I.VERSION, I.ARCHIVER,I.STATUS, FLOOR (SYSDATE - STARTUP_TIME) || ' DAYS(S) '|| TRUNC (24* ( (SYSDATE - STARTUP_TIME) - TRUNC (SYSDATE - STARTUP_TIME))) || ' HOUR(S) '|| MOD ( TRUNC (1440* ( (SYSDATE - STARTUP_TIME) - TRUNC (SYSDATE - STARTUP_TIME))),60)|| ' MINUTE(S) '|| MOD (TRUNC (86400* ( (SYSDATE - STARTUP_TIME) - TRUNC (SYSDATE - STARTUP_TIME))),60)|| ' SECONDS' UPTIME, (select ( select sum(bytes)/1024/1024/1024 data_size from v$datafile ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from v$tempfile ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) from dual) "DB size GB", ( SELECT ROUND(BYTES/1024/1024/1024) "mem GB" FROM V$SGAINFO WHERE NAME = 'Maximum SGA Size' ) "SGA max size GB" FROM V$DATABASE D INNER JOIN V$INSTANCE I ON UPPER(D.NAME) = UPPER(I.INSTANCE_NAME); === file location !!! select distinct substr(name, 1, instr(name, '/',-1)) PATH from ( select name from v$datafile union all select NAME from v$controlfile union all select MEMBER name from v$logfile union all select name from v$tempfile ) order by 1; select '===========================================================' || chr(10) || 'Total Physical Size = ' || round(redolog_size_gb+dbfiles_size_gb+tempfiles_size_gb+archlog_size_gb+ctlfiles_size_gb,2) || ' GB' || chr(10) || '===========================================================' || chr(10) || ' Redo Logs Size : ' || round(redolog_size_gb,3) || ' GB' || chr(10) || ' Data Files Size : ' || round(dbfiles_size_gb,3) || ' GB' || chr(10) || ' Temp Files Size : ' || round(tempfiles_size_gb,3) || ' GB' || chr(10) || ' Archive Log Size : ' || round(archlog_size_gb,3) || ' GB' || chr(10) || ' Control Files Size : ' || round(ctlfiles_size_gb,3) || ' GB' || chr(10) || '===========================================================' || chr(10) || 'Actual Database Size = ' || db_size_gb || ' GB' || chr(10) || '===========================================================' || chr(10) || ' Used Database Size : ' || used_db_size_gb || ' GB' || chr(10) || ' Free Database Size : ' || free_db_size_gb || ' GB' as summary from ( select sys_context('USERENV', 'DB_NAME') db_name ,(select sum(bytes)/1024/1024/1024 redo_size from v$log ) redolog_size_gb ,(select sum(bytes)/1024/1024/1024 data_size from dba_data_files ) dbfiles_size_gb ,(select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) tempfiles_size_gb ,(select sum(bytes)/1024/1024/1024 from v$log where sequence# in (select sequence# from v$loghist)) archlog_size_gb ,(select sum(block_size*file_size_blks)/1024/1024/1024 controlfile_size from v$controlfile) ctlfiles_size_gb ,round(sum(used.bytes)/1024/1024/1024,3) db_size_gb ,round(sum(used.bytes)/1024/1024/1024,3) - round(free.f/1024 /1024/ 1024) used_db_size_gb ,round(free.f/1024/1024/1024,3) free_db_size_gb from (select bytes from v$datafile union all select bytes from v$tempfile) used ,(select sum(bytes) as f from dba_free_space) free group by free.f); from web COLUMN name NEW_VALUE _instname NOPRINT select lower(instance_name) name from v$instance; COLUMN conname NEW_VALUE _conname NOPRINT select case when a.conname = 'CDB$ROOT' then 'ROOT' when a.conname = 'PDB$SEED' then 'SEED' else a.conname end as conname from (select SYS_CONTEXT('USERENV', 'CON_NAME') conname from dual) a; COLUMN conid NEW_VALUE _conid NOPRINT select SYS_CONTEXT('USERENV', 'CON_ID') conid from dual; col bytes format 999,999,999,999,999,999 WITH sizes AS ( SELECT /*+ MATERIALIZE NO_MERGE */ /* 1e.77 */ 'Data' file_type, SUM(bytes) bytes FROM v$datafile UNION ALL SELECT 'Temp' file_type, SUM(bytes) bytes FROM v$tempfile UNION ALL SELECT 'Log' file_type, SUM(bytes) * MAX(members) bytes FROM v$log UNION ALL SELECT 'Control' file_type, SUM(block_size * file_size_blks) bytes FROM v$controlfile ), dbsize AS ( SELECT /*+ MATERIALIZE NO_MERGE */ /* 1e.77 */ 'Total' file_type, SUM(bytes) bytes FROM sizes ) SELECT d.dbid, d.name db_name, s.file_type, s.bytes, ROUND(s.bytes/POWER(10,9),3) gb, CASE WHEN s.bytes > POWER(10,15) THEN ROUND(s.bytes/POWER(10,15),3)||' P' WHEN s.bytes > POWER(10,12) THEN ROUND(s.bytes/POWER(10,12),3)||' T' WHEN s.bytes > POWER(10,9) THEN ROUND(s.bytes/POWER(10,9),3)||' G' WHEN s.bytes > POWER(10,6) THEN ROUND(s.bytes/POWER(10,6),3)||' M' WHEN s.bytes > POWER(10,3) THEN ROUND(s.bytes/POWER(10,3),3)||' K' WHEN s.bytes > 0 THEN s.bytes||' B' END display FROM v$database d, sizes s UNION ALL SELECT d.dbid, d.name db_name, s.file_type, s.bytes, ROUND(s.bytes/POWER(10,9),3) gb, CASE WHEN s.bytes > POWER(10,15) THEN ROUND(s.bytes/POWER(10,15),3)||' P' WHEN s.bytes > POWER(10,12) THEN ROUND(s.bytes/POWER(10,12),3)||' T' WHEN s.bytes > POWER(10,9) THEN ROUND(s.bytes/POWER(10,9),3)||' G' WHEN s.bytes > POWER(10,6) THEN ROUND(s.bytes/POWER(10,6),3)||' M' WHEN s.bytes > POWER(10,3) THEN ROUND(s.bytes/POWER(10,3),3)||' K' WHEN s.bytes > 0 THEN s.bytes||' B' END display FROM v$database d, dbsize s; ==== -- with Pluggable database size compute sum of GB on report break on report set linesize 300 pagesize 300 col datafile_name for a100 col container for a20 col gb for 9999999.99 select c.name container, sum(BYTES)/1024/1024/1024 GB from x$kcvfh x, v$datafile d, v$containers c where d.file# = x.hxfil and d.con_id = c.con_id --and c.name in ('PDB$SEED','CDB$ROOT') group by c.name ; CONTAINER GB -------------------- ----------- PDB9 138.66 ANUJV 5.19 PDB$SEED 4.91 CDB$ROOT 4.15 ----------- sum 152.90 Via Email !!!! Script /home/oracle/DBA/db_report.sql SET MARKUP HTML ON SPOOL ON set termout off set pagesize 999 set linesize 300 set feedback off SET MARKUP HTML ON TABLE "class=sysaud cellspacing=2 border='2' width='95%' align='center' " ENTMAP OFF spool db_report.html set pause off prompt prompt DATABASE Size prompt prompt set linesize 300 col "Database Size" for a20 col "Free space" for a20 col "Used space" for a20 col hostname for a35 col Instance for a15 col DB_unique_name for a15 col Tdate heading 'Date' alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; select sysdate Tdate,SYS_CONTEXT('USERENV','HOST') hostname,sys_context('USERENV', 'INSTANCE_NAME') Instance ,SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_unique_name, round(sum(used.bytes)/1024/1024/1024 ) || ' GB' "Database Size" , round(sum(used.bytes)/1024/1024/1024 ) - round(free.SS/1024/1024/1024) || ' GB' "Used space" , round(free.SS /1024/1024/1024) || ' GB' "Free space" from (select bytes from v$datafile union all select bytes from v$tempfile union all select bytes from v$log) used , (select sum(bytes) SS from dba_free_space) free group by free.SS / spool off exit ====================== cat dbsize.sql SET MARKUP HTML ON SPOOL ON set termout off set pagesize 999 set linesize 300 set feedback off SET MARKUP HTML ON TABLE "class=sysaud cellspacing=2 border='2' width='95%' align='center' " ENTMAP OFF alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; set linesize 300 col "Database Size" for a20 col "Free space" for a20 col "Used space" for a20 col hostname for a35 col Instance for a15 col DB_unique_name for a15 col Tdate heading 'Date' spool DB.html append select sysdate Tdate,SYS_CONTEXT('USERENV','HOST') hostname,sys_context('USERENV', 'INSTANCE_NAME') Instance ,SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_unique_name, round(sum(used.bytes)/1024/1024/1024 ) || ' GB' "Database Size" , round(sum(used.bytes)/1024/1024/1024 ) - round(free.SS/1024/1024/1024) || ' GB' "Used space" , round(free.SS /1024/1024/1024) || ' GB' "Free space" from (select bytes from v$datafile union all select bytes from v$tempfile union all select bytes from v$log) used , (select sum(bytes) SS from dba_free_space) free group by free.SS / cat asm1.sql set feedback off var v number ; begin :v := nvl('95',90); end; / alter session set nls_date_format='dd-mm-yyyy hh24:mi' ; set feedback off pagesize 1000 head off underline _ linesize 150 SET MARKUP HTML ON SPOOL ON set termout off set pagesize 999 set linesize 300 set feedback off SET MARKUP HTML ON TABLE "class=sysaud cellspacing=2 border='2' width='95%' align='center' " ENTMAP OFF spool ASM.html col total_gb format 999,999,999 heading 'total gb ' col mb_avail format 999,999,999 heading 'mb avail' col used format 999.99 heading '% used' col volume_name format a10 col volume_device format a25 col mountpath format a15 col attention format a20 col name format a15 select g.group_number , g.name , g.state , g.total_mb/1024 total_gb , trunc((g.free_mb/1024),2) free_gb , usable_file_mb usable_file_mb , count(DISK_NUMBER) Total_Disks , trunc(max(d.TOTAL_MB/1024),2) disk_size , (round((1- (g.free_mb / g.total_mb))*100, 2)) "TotalUsed%" , case when (ROUND((1- (g.free_mb / g.total_mb))*100, 2)>:v) then :v||'% full ***' else 'Good' end as attention from v$asm_diskgroup g,v$asm_disk d where 1=1 and d.group_number = g.group_number --and g.Name not in ('GRID' ) group by g.group_number, g.name,g.state, g.total_mb/1024, trunc((g.free_mb/1024),2), usable_file_mb,(round((1- (g.free_mb / g.total_mb))*100, 2)) ORDER BY "TotalUsed%" desc ;

Wednesday, 13 May 2026

Patch 38632161 - Database Release Update 19.30.0.0.0(REL-JAN260130)


Patch 38632161 - Database Release Update 19.30.0.0.0(REL-JAN260130)











Patch 38632161 - Database Release Update 19.30.0.0.0(REL-JAN260130)

Oracle® Database

Patch 38632161 - Database Release Update 19.30.0.0.0(REL-JAN260130)

This document is accurate at the time of release. For any changes and additional information regarding Database Release Update 19.30.0.0.260120, see these related documents that are available at My Oracle Support (http://support.oracle.com/):

  • Document KB860153 Oracle DB/GI/OJVM Update/Revision R19 Jan 2026 Known Issues

  • Document KB188772 Oracle Database 19c and Oracle AI Database 26ai Important Recommended One-off Patches

  • Document KB106822 Primary Note for Database Quarterly Release Updates

  • Document KA19 19c Database Upgrade - Self Guided Assistance with Best Practices

This document includes the following sections:

1 Patch Information

  • Database Release Update 19.30.0.0.260120 patches are cumulative. That is, the content of all previous Database bundles is included in the latest Database bundle patch.

  • To install the Database Release Update 19.30.0.0.260120 patch, the Oracle home must have Oracle Database release 19c installed.

  • This patch is Oracle RAC Rolling Installable.

  • This patch is Database Vault installable. See My Oracle Support document KB653211 Primary Note For Oracle Database Vault for details on how to apply this patch to a Database Vault environment.

  • This patch is Data Guard Standby-First Installable. See My Oracle Support document KB137118 Oracle Patch Assurance - Data Guard Standby-First Patch Apply for details on how to remove risk and reduce downtime when applying this patch.

  • This patch includes the JDK fixes released in the prior cycle and will update the JDK in the Oracle home. For the most recent JDK fixes, a separate patch is available and needs to be installed in addition to this patch. See My Oracle Support document KB106822 Primary Note for Database Quarterly Release Updates for the JDK patch number.

  • Beginning with 19.27 Apr2025 DBRU, Small Pages are not allowed for RDBMS SGA in Exadata. See My Oracle Support Document KB174916 for more details.

  • Beginning with 19.21 Oct2023 RU, the UTL_URI.ESCAPE function is now compliant with RFC 3896 and will treat "#" as a reserved character. See My Oracle Support Document PALRT1208 for more details.

  • Beginning with 19.22 Jan2024 RU, the 19c database is now certified on Oracle Linux 9.x and RHEL9.x.

  • Beginning with 19.18 Jan2023 RU, the DBRU contains the CORE DST Time Zone patches. Applying this Release Update (RU) does not change the DST version in any of your databases. The DST patches are only copied into $ORACLE_HOME/oracore/zoneinfo and no DST upgrade is performed. You can decide to upgrade the DST version in your database to a newer DST version independently of applying the RU at any time. Be aware that this incurs downtime.

    • You can decide to upgrade the DST version in your database to a newer DST version independently of applying the RU at any time. Be aware that this incurs downtime.

    • If you plan to adjust the DST version of your databases, Oracle recommends adjusting it to the latest available DST version. Follow the instructions in the Oracle 19c Oracle Database Upgrade Guide. For more information on various DST patch releases, see My Oracle Support document KB151444 Primary Note DST FAQ: Updated DST Transitions and New Time Zones in Oracle RDBMS and OJVM Time Zone File Patches.

    This DBRU contains the following CORE DST patches:

    Patch NumbersPatches
    28852325DSTV33 UPDATE - TZDATA2018G
    29997937DSTV34 UPDATE - TZDATA2019B
    31335037DSTV35 UPDATE - TZDATA2020A
    32327201DSTV36 UPDATE - TZDATA2020E
    33613829DSTV37 UPDATE - TZDATA2021E
    34006614DSTV38 UPDATE - TZDATA2022A
    34533061DSTV39 UPDATE - TZDATA2022C
    34698179DSTV40 UPDATE - TZDATA2022E
    35099667DSTV41 UPDATE - TZDATA2022G
    35220732DSTV42 UPDATE - TZDATA2023C
    36260493DSTV43 UPDATE - TZDATA2024A
    37537949DSTV44 UPDATE - TZDATA2025A
  • Any new or changed database initialization parameters that might be included into a quarterly patch bundle would be documented in the Oracle Database Reference manual section on initialization parameters. For Oracle Database 19c, see Oracle Database Reference.

  • For the latest Update with Security Fixes that should be used on Client-Only installations, see the Critical Patch Update (CPU) Program Patch Availability Document (PAD) section on the Oracle Database, for the cycle in which you are interested.

  • Applying Database Release Update Database Release Update 19.30.0.0.260120 with Oracle JavaVM 19.x Updates

    • For customers who want to install both patches together during a single downtime window, follow one of the Patching Options listed in the My Oracle Support document:
      • KB139124 - Oracle Recommended Patches - "Oracle JavaVM Component Database PSU and Update" (OJVM PSU and OJVM Update) Patches.
    • The Oracle JavaVM 19.x Release Update is available as a separate patch. That separate patch has some additional requirements if it is to be installed in a RAC Rolling fashion, as detailed in My Oracle Support document:
      • KB137197 - RAC Rolling Install Process for the "Oracle JavaVM Component Database PSU/RU" (OJVM PSU/RU) Patches.

2 Prerequisites

It is highly recommended to take a backup of the Oracle_Home binaries and Central Inventory prior to applying patches. For further information, see My Oracle Support document KB137807 How to Perform ORACLE_HOME Backup?.

For SUSE Linux Enterprise Server (SLES) 15 SP3, and above, install the compat-libpthread-nonshared package. See section 5.5.12 in SUSE's release notes (for SLES 15 SP3) and Note KB117927.

This section includes the following section:

2.1 OPatch Utility

You must use the OPatch utility version 12.2.0.1.48 or later to apply this patch. Oracle recommends that you use the latest released OPatch version for 19c, which is available for download from My Oracle Support patch 6880880 by selecting "OPatch for DB 19.0.0.0.0" from the Select a Release dropdown. It is recommended that you download the OPatch utility and the patch in a shared location to be able to access them from any node in the cluster for the patch application on each node.

When patching the GI home, a shared locaton on Oracle ACFS only needs to be unmounted on the node where the GI home is being patched.

The new OPatch utility should be updated in all of the Oracle RAC database homes and the GI home that are being patched.

For each Oracle RAC database home and the GI home that are being patched, as the home owner, extract the OPatch utility.

For exact instructions to install OPatch, follow the OPatch readme.

A new feature has been added to OPatch to increase performance by deleting inactive patches. See My Oracle Support document KB104015 OPatch 12.2.0.1.37+ Introduces a New Feature to Delete Inactive Patches in the ORACLE_HOME/.patch_storage directory.

For information about OPatch documentation, including any known issues, see My Oracle Support document KB133615 Primary Note For OPatch.

3 Installation

These instructions are for all Oracle Database installations.

3.1 Patch Pre-Installation Instructions

Before you install Database Release Update 19.30.0.0.260120, perform the following actions to check the environment and to detect and resolve any interim patch conflicts.

3.1.1 Environments with Grid Infrastructure

This patch is not to be installed to an environment that has a Grid Infrastructure home. See the following My Oracle Support document KB106822 to determine the appropriate Grid infrastructure patch to be installed.

3.1.2 Environment Checks

  1. Ensure that the $PATH definition has the following executables: make, ar, ld, and nm.

    The location of these executables depends on your operating system. On many operating systems, they are located in /usr/ccs/bin, in which case you can set your PATH definition as follows:

    export PATH=$PATH:/usr/ccs/bin
    

3.1.3 Interim Patch Conflict Detection and Resolution

The fastest and easiest way to determine whether you have interim patches in the Oracle home that conflict with Database Release Update 19.30.0.0.260120, and to get the necessary conflict resolution patches, is to use the Patch Recommendations and Patch Plans features on the Patches & Updates tab in My Oracle Support.

However, if you are not using My Oracle Support Patch Plans, the My Oracle Support Conflict Checker tool enables you to upload an OPatch inventory and check the patches that you want to apply to your environment for conflicts.

If no conflicts are found, you can download the patches. If conflicts are found, the tool finds an existing resolution to download. If no resolution is found, it will automatically request a resolution, which you can monitor in the Plans and Patch Requests region of the Patches & Updates tab.

For more information, see Knowledge Document KB135057 How to Use the My Oracle Support Conflict Checker Tool for Patches Installed with OPatch.

Or, use the following steps to manually discover conflicts and resolutions:

  1. Determine whether any currently installed interim patches conflict with the patch being installed, 38632161:

    StepCommand
    1.
    unzip p38632161_<version>_<platform>.zip
    2.
    cd 38632161
    3.
    opatch prereq CheckConflictAgainstOHWithDetail -ph ./
  2. The report indicates the patches that conflict and the patches that are a superset.

  3. Use My Oracle Support document KB145571 Database Patch Conflict Resolution to determine, for each conflicting patch, whether a conflict resolution patch is already available, and if you need to request a new conflict resolution patch or if the conflict may be ignored.

  4. When all the interim patches that you have requested are available at My Oracle Support, proceed with Section 3.2, "Patch Installation Instructions".

3.2 Patch Installation Instructions

Follow these steps:

  1. If you are using a Data Guard Physical Standby database, you must install this patch on both the primary database and the physical standby database, as described by My Oracle Support document KB147888 How To Apply DBRU in a Data Guard Physical Standby Configuration (Non Standby-First Installable).

  2. If this is an Oracle RAC environment, install this patch using the OPatch rolling (no downtime) installation method as this patch is rolling RAC installable. See My Oracle Support document KB139091 Rolling Patch - OPatch Support for RAC.

  3. If this is not a RAC environment, shut down all instances and listeners associated with the Oracle home that you are updating. For more information, see Oracle Database Administrator's Guide.

  4. Set your current directory to the directory where the patch is located and then run the OPatch utility by entering the following Command:

    StepCommand
    1.
    unzip -d <PATCH_TOP_DIR> p38632161_<version>_<platform>.zip
    2.
    cd <PATCH_TOP_DIR> 38632161
    3.
    opatch apply
  5. If there are errors, refer to Section 5, "Known Issues".

3.3 Patch Post-Installation Instructions

On Oracle Database server, after installing the patch, perform the following actions. This is not required on Oracle Database client.

3.3.1 Apply Conflict Resolution Patches

Apply the patch conflict resolution interim patches that were determined to be needed when you performed the steps in Section 3.1.4, "Interim Patch Conflict Detection and Resolution".

3.3.2 Load Modified SQL Files into the Database

The following steps load modified SQL files into the database. For an Oracle RAC environment, perform these steps on only one node.

Datapatch is run to complete the post-install SQL deployment for the patch being installed. For further details about Datapatch, including Known Issues and workarounds to common problems, see My Oracle Support document KB148594 Datapatch: Database 12c or later Post Patch SQL Automation and My Oracle Support document KB123801 Datapatch User Guide.

  1. For each separate database running on the same shared Oracle home being patched, run the datapatch utility as described in Table 2.

    Table 2 Steps to Run the Datapatch Utility for Non-CDB or Non-PDB Database Versus Multitenant (CDB or PDB) Oracle Database

    StepsNon-CDB or Non-PDB DatabaseStepsMultitenant (CDB/PDB) Oracle Database

    1

    sqlplus /nolog

    1

    sqlplus /nolog

    2

    SQL> Connect / as sysdba

    2

    SQL> Connect / as sysdba

    3

    SQL> startup

    3

    SQL> startup

    4

    SQL> quit

    4

    SQL> alter pluggable database all open;Foot 1

    5

    cd $ORACLE_HOME/OPatch

    5

    SQL> quit

    6

    ./datapatch -sanity_checks (optional)

    6

    cd $ORACLE_HOME/OPatch

    7

    ./datapatch -verbose

    7

    ./datapatch -sanity_checks (optional)



    8

    ./datapatch -verbose

    • Footnote 1 It is recommended the Post Install step be run on all pluggable databases; however, the following command (SQL> alter pluggable database PDB_NAME open ) could be substituted to only open certain PDBs in the single or multitenant database. Doing so will result in the Post Install step only being run on the CDB and opened PDB's. To update a pluggable database at a later date (skipped or newly plugged in), open the database using the alter pluggable database command mentioned previously and rerun the datapatch utility.

      • See My Oracle Support document KB150931 Multitenant Unplug/Plug Best Practices for more information about the procedure for unplugging/plugging with different patch releases (in both directions).

    • Recommended: The datapatch -sanity_checks optional step runs a series of environment and database checks to validate if conditions are optimal for patching. Results are shown on screen with severity and potential actions to take.

      • For more information, see My Oracle Support document KB123801 Datapatch User Guide for additional information and actions. Oracle highly recommends that you perform this step.

    • The datapatch utility runs the necessary apply scripts to load the modified SQL files into the database. An entry is added to the dba_registry_sqlpatch view reflecting the patch application. In the dba_registry_sqlpatch view, verify that the status for the APPLY is SUCCESS.

      • For any other status, see My Oracle Support document KA1374 Troubleshooting Assistant: 12c Datapatch Issues for additional information and actions.
  2. Check the following log files in $ORACLE_BASE/cfgtoollogs/sqlpatch/38632161/<unique patch ID> for errors:

    38632161_apply_<database SID>_<CDB name>_<timestamp>.log
    

    where database SID is the database SID, CDB name is the name of the multitenant container database, and timestamp is of the form YYYYMMMDD_HH_MM_SS.

  3. Any (pluggable) database that has invalid objects after the execution of datapatch should have catcon.pl run to revalidate those objects. For example:

    StepCommand
    1.
    export PATH=$PATH:$ORACLE_HOME/bin
    2.
    cd $ORACLE_HOME/rdbms/admin
    3.
    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql

3.3.3 Upgrade Oracle Recovery Manager Catalog

If you are using the Oracle Recovery Manager, the catalog needs to be upgraded. Enter the following command to upgrade it. The UPGRADE CATALOG command must be entered twice to confirm the upgrade.

StepCommand
1.
$ rman catalog username/password@alias
2.
RMAN> UPGRADE CATALOG;
3.
RMAN> UPGRADE CATALOG;
4.
RMAN> EXIT;

3.3.4 Bug Fixes That May Change an Existing Optimizer Execution Plan

At the successful conclusion of the patching event, none of the database bug fixes that may change an existing optimizer execution plan are delivered with the bug fix disabled by default. The status of any module bug fixes (which cause an execution plan change) that were in an enabled state prior to starting the patching event are preserved, but no new module bug fixes (which cause an execution plan change) are activated automatically.

Details on this, including the commands to explicitly enable such bug fixes are present in My Oracle Support document KB148297 Managing "installed but disabled" bug fixes in Database Release Updates using DBMS_OPTIM_BUNDLE.

3.3.5 Update Permissions for extjob

Database release update patch installation involves relinking of libraries and executables to be updated. This can sometimes result in permissions changing and needing to be updated. Execute the following as root user:

StepCommand
1.
# chown root $ORACLE_HOME/bin/extjob
2.
# chmod 4750 $ORACLE_HOME/bin/extjob

3.4 Patch Post-Installation Instructions for Databases Created or Upgraded after Installation of this patch in the Oracle Home

On Oracle Database server, you must execute the steps in Section 3.3.2, "Load Modified SQL Files into the Database" for any new database. There are no actions required for databases that have been upgraded. This is not required on Oracle Database client.

4 Deinstallation

These instructions apply if you need to deinstall the patch.

4.1 Patch Deinstallation Instructions for a Non-RAC Environment

Follow these steps:

  1. Shut down all instances and listeners associated with the Oracle home that you are updating. For more information, see Oracle Database Administrator's Guide.

  2. Run the OPatch utility specifying the rollback argument as follows.

    opatch rollback -id 38632161
    
  3. If there are errors, refer to Section 5, "Known Issues".

4.2 Patch Post-Deinstallation Instructions for a Non-RAC Environment

On Oracle Database server, after deinstalling the patch, perform the following actions. This is not required on Oracle Database client.

  1. Rollback SQL changes from the the Database, as explained in Section 4.2.1.

  2. Upgrade Oracle Recovery Manager Catalog, as explained in Section 4.2.2.

4.2.1 Load Modified SQL Files into the Database

Datapatch is run to complete the post-deinstall SQL deployment for the patch being deinstalled. For further details about Datapatch, including Known Issues and workarounds to common problems, see My Oracle Support document KB148594 Datapatch: Database 12c or later Post Patch SQL Automation and My Oracle Support document KB123801 Datapatch User Guide.

Follow these steps:

  1. For each separate database running on the same shared Oracle home being patched, run the datapatch utility as described in Table 3. If this is Oracle RAC, run datapatch on only one instance.

    Table 3 Steps to Run the datapatch Utility for Non-CDB or Non-PDB Database Versus Multitenant (CDB or PDB) Database

    StepsNon-CDB or Non-PDB DatabaseStepsMultitenant (CDB/PDB) Oracle Database

    1

    sqlplus /nolog

    1

    sqlplus /nolog

    2

    SQL> Connect / as sysdba

    2

    SQL> Connect / as sysdba

    3

    SQL> startup

    3

    SQL> startup

    4

    SQL> quit

    4

    SQL> alter pluggable database all openFoot 1

    5

    cd $ORACLE_HOME/OPatch

    5

    SQL> quit

    6

    ./datapatch -sanity_checks (optional)

    6

    cd $ORACLE_HOME/OPatch

    7

    ./datapatch -verbose

    7

    ./datapatch -sanity_checks (optional)



    8

    ./datapatch -verbose

    • Footnote 1 It is recommended the Post Install step be run on all pluggable databases; however, the following command (SQL> alter pluggable database PDB_NAME open ) could be substituted to only open certain PDBs in the single/multitenant database. Doing so will result in the Post Install step only being run on the CDB and opened PDB's. To update a pluggable database at a later date (skipped or newly plugged in), open the database using the alter pluggable database command mentioned previously and rerun the datapatch utility.

      • See My Oracle Support document KB150931 Multitenant Unplug/Plug Best Practices for more information about the procedure for unplugging/plugging with different patch releases (in both directions).

    • Recommended: The datapatch -sanity_checks optional step runs a series of environment and database checks to validate if conditions are optimal for patching. Results are shown on screen with severity and potential actions to take.

      • For more information, see the My Oracle Support document KB123801 Datapatch User Guide for additional information and actions. Oracle highly recommends that you perform this step.

    • The datapatch utility runs the necessary rollback scripts. An entry is added to the dba_registry_sqlpatch view reflecting the patch application. In the dba_registry_sqlpatch view, verify the Status for the ROLLBACK is SUCCESS.

      • For any other status, see My Oracle Support document KA1374 Troubleshooting Assistant: 12c Datapatch Issues for additional information and actions.
  2. Check the following log files in $ORACLE_BASE/cfgtoollogs/sqlpatch/38632161/<unique patch ID> for errors:

    38632161_rollback_<database SID>_<CDB name>_<timestamp>.log
    

    where database SID is the database SID, CDB name is the name of the multitenant container database, and timestamp is of the form YYYYMMMDD_HH_MM_SS.

  3. Any (pluggable) database that has invalid objects after the execution of datapatch should have catcon.pl run to revalidate those objects. For example:

    StepCommand
    1.
    cd $ORACLE_HOME/rdbms/admin
    2.
    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql

4.2.2 Upgrade Oracle Recovery Manager Catalog

If you are using the Oracle Recovery Manager, the catalog needs to be upgraded. Enter the following command to upgrade it. The UPGRADE CATALOG command must be entered twice to confirm the upgrade.

StepCommand
1.
$ rman catalog username/password@alias
2.
RMAN> UPGRADE CATALOG;
3.
RMAN> UPGRADE CATALOG;
4.
RMAN> EXIT;

4.3 Patch Deinstallation Instructions for Oracle RAC Environment

Patch deinstallation instructions for Oracle RAC includes these environments:

Follow these steps for each node in the cluster, one node at a time.

  1. Shut down the instance on the node.

  2. Run the OPatch utility specifying the rollback argument as follows.

    opatch rollback -id 38632161
    

    If there are errors, refer to Section 5, "Known Issues".

  3. Start the instance on the node as follows:

    srvctl start instance
    

4.4 Patch Post-Deinstallation Instructions for Oracle RAC Environment

On Oracle Database server, follow the instructions listed in Section Section 4.2, "Patch Post-Deinstallation Instructions for a Non-RAC Environment" only on the node for which the steps in Section 3.3.2, "Load Modified SQL Files into the Database" were executed during the patch application. This is not required on Oracle Database client.

All other instances can be started and accessed as usual while you are executing the deinstallation steps.

5 Known Issues

For information about OPatch issues, see My Oracle Support document KB133615 Primary Note For OPatch.

For issues documented after the release of this patch, see My Oracle Support document KB860153 Oracle DB/GI/OJVM Update/Revision R19 Jan 2026 Known Issues

Other issues are as follows.

Issue 1

The following ignorable errors may be encountered while running the datapatch/catbundle.sql script or its rollback script:

ORA-00942: table or view does not exist
ORA-00955: name is already used by an existing object
ORA-01430: column being added already exists in table
ORA-01432: public synonym to be dropped does not exist
ORA-01434: private synonym to be dropped does not exist
ORA-01435: user does not exist
ORA-01917: user or role 'XDB' does not exist
ORA-01920: user name '<user-name>' conflicts with another user or role name
ORA-01921: role name '<role name>' conflicts with another user or role name
ORA-01927: cannot REVOKE privileges you did not grant
ORA-01952: system privileges not granted to 'WKSYS'
ORA-02289: sequence does not exist 
ORA-02303: cannot drop or replace a type with type or table dependents
ORA-02443: Cannot drop constraint - nonexistent constraint
ORA-04043: object <object-name> does not exist
ORA-06512: at line <line number>. If this error follow any of above errors, then can be safely ignored.
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
ORA-29809: cannot drop an operator with dependent objects
ORA-29830: operator does not exist
ORA-29832: cannot drop or replace an indextype with dependent indexes
ORA-29844: duplicate operator name specified 
ORA-29931: specified association does not exist

6 References

The following documents are references for this patch.

Document 38632161 Database Release Update 19.30.0.0.0(REL-JAN260130)

Document KA19 19c Database Upgrade - Self Guided Assistance with Best Practices

Document KB106822 Primary Note for Database Quarterly Release Updates

Document KB148594 Datapatch: Database 12c or later Post Patch SQL Automation

Document KB133615 Primary Note for OPatch

Document KB151444 Primary Note DST FAQ: Updated DST Transitions and New Time Zones in Oracle RDBMS and OJVM Time Zone File Patches

Document KB145571 Database Patch Conflict Resolution

Document KB850150 Database 19 Release Updates and Revisions Bugs Fixed Lists

Document KA1376 Troubleshooting Assistant: Patching Oracle Database/Client

7 Bugs Fixed by This Patch

See My Oracle Support document KB850150 Database 19 Release Updates and Revisions Bugs Fixed Lists for the list of bugs fixed in this patch.

Oracle DBA

anuj blog Archive