Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:autouppgrade_patch_automation_19c

AutoUpgrade - Oracle Datenbank 19c und höher automatisch patchen

In Arbeit

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

  1. Perl muss im OS installiert sein, nur das Perl aus dem DB Pfad reicht nicht aus!
    1. prüfen ob „perl -e 'use File::Copy;'“ einen Fehler ausgibt, falls ja „dnf install perl“ bzw. „dnf reinstall perl“
  2. Java 11 wird benötigt! Zip herunterladen über https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html und im autoupgade Home entpacken

Genereller Ablauf:

  1. Verzeichnis Struktur auf dem Server anlegen
  2. Oracle 19.3 Basis Installationsquelle auf dem Server kopieren
  3. AutoUpgrade Jar auf dem Server ablegen ( Neuste Version findet sich unter https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar)
  4. Konfiguration erstellen
  5. MOS Zugangsdaten im Keystore hinterlegen
  6. Patch Download starten
  7. Neues Oracle Home mit den gewünschten Patchen installieren
  8. Datenbank in neues Home umziehen und patchen

Probleme

Nur Java 11 !

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“

SSL Protokoll setzen

*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)“

Opatch Fehler mit fehlenen Perl im OS

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!

Autoupgrade jar auf dem Server ausrollen

Manuell

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"

Mit Ansible automatieren

In dieser Umgebung mit Ansible AAP:

install_oracle_autoUpgarde.yml
---
- 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

Konfiguration erstellen

Steuer Datei für das Passwort

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!

Oracle Support Credentials hinterlegen mit "-load_password"

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

Patch Steuerdatei

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.


Patch herunterladen

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 installieren

Mode create_home

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.

Datenbank Patchen

Die Datenbank nun in das neue Home umziehen, dazu die DB mit sauber herunterfahren und Listener Konfiguration in das neue Home übernehmen.

Zuvor prüfen

/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

Altes Oracle Home löschen

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


Test ob binäre Optionen auch nach dem Patch ausgeschaltet sind

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
prüfen was gelinkt wurde

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.



Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
dba/autouppgrade_patch_automation_19c.txt · Zuletzt geändert: von gpipperr