Aufgabe Einspielen der Patche in eine Oracle Datenbank Umgebung unter Linux mit dem AutoUpgrade Werkzeug von Oracle.
Die zentralen Schritte werden als Ansible Playbook automatisiert.
Prüfen
Genereller Ablauf:
Unsupported Java Runtime Environment 24 AutoUpgrade Patching must run with Java version 11
Java zu neu…. das aus der DB Umgebung verwenden wie „/u01/app/oracle/product/19c/dbhome_1/jdk/bin/java“
*unable to find valid certification path to requested target* -- Zertifikat anzeigen openssl s_client -connect edelivery.oracle.com:443 -- bzw. openssl s_client -connect edelivery.oracle.com:443-showcerts -debug -msg -state -tlsextdebug -status > ssl_debug.log 2>&1
Falsches SSL Protokoll! Parameter -Dhttps.protocols=TLSv1.3 aufnehmen!
Bzw. siehe auch „Autoupgrade Patching Fails To Download Patches With Error „Unable To Find Valid Certification Path“ (Doc ID 3082396.1)“
The following warnings have occurred during OPatch execution: [Jul 1, 2025 2:50:37 PM] [INFO] 1) OUI-67200:Make failed to invoke "/usr/bin/make -f ins_rdbms.mk javavm_refresh ORACLE_HOME=/u01/app/oracle/product/19c/19.24 OPATCH_SESSION=apply"....'Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /u01/app/oracle/product/19c/19.24/javavm/install/update_javavm_binaries.pl line 64. BEGIN failed--compilation aborted at /u01/app/oracle/product/19c/19.24/javavm/install/update_javavm_binaries.pl line 64. make: *** [ins_rdbms.mk:573: javavm_refresh] Error 2
Perl Fehler mit Copy.pm, perl ist aber komplett eigentlich schon installiert!
test mit „perl -e 'use File::Copy;'“
perl -e 'use File::Copy;' Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1. BEGIN failed--compilation aborted at -e line 1.
Gibt es die Datei:
locate Copy.pm /u01/app/oracle/product/19c/dbhome_1/perl/lib/5.36.0/File/Copy.pm
aber nicht im OS!
als root:
dnf install perl perl -e 'use File::Copy;' #kein Fehler mehr!
User Oracle
Verzeichnisstruktur nach Bedarf:
mkdir $ORACLE_BASE/autoupgrade mkdir $ORACLE_BASE/autoupgrade/logs mkdir $ORACLE_BASE/autoupgrade/config mkdir $ORACLE_BASE/autoupgrade/bin mkdir $ORACLE_BASE/autoupgrade/patchdir mkdir $ORACLE_BASE/autoupgrade/keystore
Unter $ORACLE_BASE/autoupgrade/patchdir die Datei LINUX.X64_193000_db_home.zip hinterlegen
cd $ORACLE_BASE/autoupgrade/patchdir scp srvgpiaap01:/app/oracle_install/LINUX.X64_193000_db_home.zip .
Normaler Download über https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar:
cd $ORACLE_BASE/autoupgrade/bin wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
In der .bashrc hinterlegen:
vi ~/.bashrc export AUTOUPGRADE_HOME=/u01/app/oracle/autoupgrade export PATH=$AUTOUPGRADE_HOME/bin:$PATH alias autoupgrade="java -Dhttps.protocols=TLSv1.3 -jar $AUTOUPGRADE_HOME/bin/autoupgrade.jar"
In dieser Umgebung mit Ansible AAP:
--- - name: Download and Configure Oracle AutoUpgrade hosts: all become: yes vars: central_software_host: "srvgpiaap01" oracle_base: "/u01/app/oracle" oracle_user: "oracle" download_url: "https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar" download_dir: "/app/oracle_install/autoupgrade" autoupgrade_dir: "{{ oracle_base }}/autoupgrade" autoupgrade_dirs: - "{{ oracle_base }}/autoupgrade" - "{{ oracle_base }}/autoupgrade/logs" - "{{ oracle_base }}/autoupgrade/config" - "{{ oracle_base }}/autoupgrade/bin" - "{{ oracle_base }}/autoupgrade/patchdir" - "{{ oracle_base }}/autoupgrade/keystore" central_software_path: "/app/oracle_install" oracle_installer: "LINUX.X64_193000_db_home.zip" tasks: # 1. Download AutoUpgrade - name: Download AutoUpgrade utility ansible.builtin.uri: url: "{{ download_url }}" dest: "{{ download_dir }}/autoupgrade.jar" validate_certs: no register: response #ignore_errors: yes failed_when: response.status != 200 and response.status != 304 delegate_to: "{{ central_software_host }}" - name: Show download ansible.builtin.debug: var: response # 2. Prepare directories - name: Create AutoUpgrade directory structure ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ oracle_user }}" group: oinstall mode: '0755' loop: "{{ autoupgrade_dirs }}" # 3. copy with scp from zentral Server - name: Copy Auto Upgarde ansible.builtin.command: scp -o StrictHostKeyChecking=no ansiblesvc@"{{ central_software_host }}:{{ download_dir }}/autoupgrade.jar" "{{ autoupgrade_dir }}/bin/autoupgrade.jar" - name: Download Oracle installer 19.03 ansible.builtin.command: scp -o StrictHostKeyChecking=no ansiblesvc@"{{ central_software_host }}:{{ central_software_path }}/19.03/{{ oracle_installer }}" "{{ autoupgrade_dir }}/patchdir/{{ oracle_installer }}" - name: Set environment variables ansible.builtin.blockinfile: path: "/home/{{ oracle_user }}/.bashrc" block: | # AutoUpgrade Configuration export AUTOUPGRADE_HOME={{ autoupgrade_dir }} export PATH=$AUTOUPGRADE_HOME/bin:$PATH alias autoupgrade="java -Dhttps.protocols=TLSv1.3 -jar $AUTOUPGRADE_HOME/bin/autoupgrade.jar" marker: "# {mark} AUTOUPGRADE CONFIG" # 4. Validate installation - name: Verify AutoUpgrade installation ansible.builtin.command: "java -jar {{ autoupgrade_dir }}/bin/autoupgrade.jar -version" register: autoupgrade_version_check changed_when: false failed_when: autoupgrade_version_check.rc != 0 - name: Display version info ansible.builtin.debug: var: autoupgrade_version_check.stdout_lines
Unter /u01/app/oracle/autoupgrade/config, Datei setMOSPWD.cfg angelegt.
global.keystore=/u01/app/oracle/autoupgrade/keystore
Extra noch ohne weitere Info, die Credentials müssen per Server hinterlegt werden und das wird später mit Ansible automatisiert. Log default nach temp belassen damit nicht alte Infos gefunden werden!
Unter /u01/app/oracle/autoupgrade/keystore werden die Credentials am Ende hinterlegt
/u01/app/oracle/product/19c/dbhome_1/jdk/bin/java -jar /u01/app/oracle/autoupgrade/bin/autoupgrade.jar -config /u01/app/oracle/autoupgrade/config/setMOSPWD.cfg -patch -load_password Starting AutoUpgrade Patching Password Loader - Type help for available options Creating new AutoUpgrade Patching keystore - Password required characters combined with numbers or special characters. Enter password: Enter password again: AutoUpgrade Patching keystore was successfully created MOS> add -user gunther@pipperr.de Enter your secret/Password: Re-enter your secret/Password: MOS> MOS> MOS> exit Save the AutoUpgrade Patching keystore before exiting [YES|NO] ? YES Convert the AutoUpgrade Patching keystore to auto-login [YES|NO] ? YES AutoUpgrade Patching Password Loader finished - Exiting AutoUpgrade Patching
Unter /u01/app/oracle/autoupgrade/config, Datei db19HomePatch.cfg angelegt.
lobal.global_log_dir=/u01/app/oracle/autoupgrade/logs global.keystore=/u01/app/oracle/autoupgrade/keystore patch1.source_home=/u01/app/oracle/product/19c/dbhome_1 patch1.target_home=/u01/app/oracle/product/19c/19.24 patch1.folder=/u01/app/oracle/autoupgrade/patchdir patch1.patch=RU:19.24,OPATCH,OJVM:19.24,DPBP patch1.target_version=19 patch1.download=YES
Extra noch ohne SID, im ersten Schritt wird nur das Oracle Home gepatched. Und extra auf 19.24 um hier eine Zwischenversion zu testen.
Mode download
/u01/app/oracle/product/19c/dbhome_1/jdk/bin/java -jar /u01/app/oracle/autoupgrade/bin/autoupgrade.jar \ -config /u01/app/oracle/autoupgrade/config/db19HomePatch.cfg \ -patch -mode download
Download startet:
AutoUpgrade Patching 25.3.250509 launched with default internal options Processing config file ... Loading AutoUpgrade Patching keystore AutoUpgrade Patching keystore is loaded Connected to MOS - Searching for specified patches --------------------------------------------------------- Downloading files to /u01/app/oracle/autoupgrade/patchdir --------------------------------------------------------- DATABASE RELEASE UPDATE 19.24.0.0.0 File: p36582781_190000_Linux-x86-64.zip - VALIDATED DATAPUMP BUNDLE PATCH 19.24.0.0.0 File: p36682332_1924000DBRU_Generic.zip - VALIDATED OJVM RELEASE UPDATE 19.24.0.0.0 File: p36414915_190000_Linux-x86-64.zip - VALIDATED OPatch 12.2.0.1.46 for DB 19.0.0.0.0 (Apr 2025) File: p6880880_190000_Linux-x86-64.zip - VALIDATED ---------------------------------------------------------
Patch des Oracle Homes starten mit mode „create_home“:
/u01/app/oracle/product/19c/dbhome_1/jdk/bin/java -jar /u01/app/oracle/autoupgrade/bin/autoupgrade.jar -config /u01/app/oracle/autoupgrade/config/db19HomePatch.cfg -patch -mode create_home
Konsole startet, mit lsj -a 10 Status alle 10 Sekunden ausgeben lassen
patch> lsj -a 10 patch> +----+-------------+-------+---------+-------+----------+-------+----------------------+ |Job#| DB_NAME| STAGE|OPERATION| STATUS|START_TIME|UPDATED| MESSAGE| +----+-------------+-------+---------+-------+----------+-------+----------------------+ | 100|create_home_1|INSTALL|EXECUTING|RUNNING| 14:42:44|18s ago|Installing ORACLE_HOME| +----+-------------+-------+---------+-------+----------+-------+----------------------+ Total jobs 1 The command lsj is running every 10 seconds. PRESS ENTER TO EXIT +----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+ |Job#| DB_NAME| STAGE|OPERATION| STATUS|START_TIME|UPDATED| MESSAGE| +----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+ | 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING| 14:42:44|44s ago|OJVM RELEASE UPDATE: 19.24.0.0.240716 (3| +----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+ Total jobs 1 The command lsj is running every 10 seconds. PRESS ENTER TO EXIT Job 100 completed ------------------- Final Summary -------------------- Number of databases [ 1 ] Jobs finished [1] Jobs failed [0] Jobs restored [0] Jobs pending [0] # Run the root.sh script as root for the following jobs: For create_home_1 -> /u01/app/oracle/product/19c/19.24/root.sh Please check the summary report at: /u01/app/oracle/autoupgrade/logs/cfgtoollogs/patch/auto/status/status.html /u01/app/oracle/autoupgrade/logs/cfgtoollogs/patch/auto/status/status.log
Root Root Script ausführen:
/u01/app/oracle/product/19c/19.24/root.sh Check /u01/app/oracle/product/19c/19.24/install/root_bvmans04_2025-07-01_15-46-21-581736482.log for the output of root script cat root_bvmans04_2025-07-01_15-46-21-581736482.log Performing root user operation. The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/19c/19.24 Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed.
Die Datenbank nun in das neue Home umziehen, dazu die DB mit sauber herunterfahren und Listener Konfiguration in das neue Home übernehmen.
/u01/app/oracle/product/19c/19.24/jdk/bin/java -Dhttps.protocols=TLSv1.3 -jar /u01/app/oracle/autoupgrade/bin/autoupgrade.jar -config /u01/app/oracle/autoupgrade/config/db19HomePatch.cfg -patch -mode analyze
Nach ein paar Tagen produktiven Betrieb kann das Home gelöscht werden, bzw. das letzte verbleibt auf Platte und das Vorletzte Home kann gelöscht werden.
Siehe dazu Oracle Datenbank 19c/23ai bzw. Oracle Home Software unter Linux deinstallieren
Einstellen:
Featurs wie OLAP und Real Application Testing ausschalten:
[oracle@bvmans04 ~]$ cd $ORACLE_HOME [oracle@bvmans04 19.24]$ cd bin [oracle@bvmans04 bin]$ ./chopt usage: chopt <enable|disable> <option> options: oaa = Oracle Advanced Analytics olap = Oracle OLAP partitioning = Oracle Partitioning rat = Oracle Real Application Testing e.g. chopt enable rat [oracle@bvmans04 bin]$ ./chopt disable olap Writing to /u01/app/oracle/product/19c/19.24/install/disable_olap_2025-07-01_16-56-29PM.log... /usr/bin/make -f /u01/app/oracle/product/19c/19.24/rdbms/lib/ins_rdbms.mk olap_off ORACLE_HOME=/u01/app/oracle/product/19c/19.24 /usr/bin/make -f /u01/app/oracle/product/19c/19.24/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/19c/19.24 [oracle@bvmans04 bin]$ ./chopt disable rat Writing to /u01/app/oracle/product/19c/19.24/install/disable_rat_2025-07-01_16-56-40PM.log... /usr/bin/make -f /u01/app/oracle/product/19c/19.24/rdbms/lib/ins_rdbms.mk rat_off ORACLE_HOME=/u01/app/oracle/product/19c/19.24 /usr/bin/make -f /u01/app/oracle/product/19c/19.24/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/19c/19.24
Unified Audit aktiveren: (siehe auch Oracle Unified Auditing – Pflicht in 23ai - Umstellung von Klassischen/Mixed Audit auf Unified Auditing in der 19c als Vorbereitung für die 23ai Migration
[cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk uniaud_on ioracle
ON = kzaiang.c
OFF = kzanang.c
Abfragen mit:
strings /u01/app/oracle/product/19c/19.24/bin/oracle | grep kzaiang -?comment:Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.2.174 Build 20170213 : kzaiang.c ..... -?comment: kzaiang.c strings /u01/app/oracle/product/19c/19.24/bin/oracle | grep kzanang #empty
Nun das Oracle 24 Home auf Oracle 26 upgraden in dem in der Konfig der Release Parameter geändert wird und danach prüfen ob die Optionen noch aktiv sind.
Unfied Audit hat es mal überlebt, ohne Datenbank sehe ich gerade nicht ob OLAP im Kernel aktiv ist oder nicht.