oracle patch patchset opatch - ghdrako/doc_snipets GitHub Wiki

  • CPU (Critical Patch Updates) → poprawki bezpieczeństwa, instalowane kwartalnie.
  • PSU (Patch Set Updates) → poprawki błędów + CPU.
  • RU (Release Updates) → pełne aktualizacje z nowymi funkcjonalnościami.
  • OPatch → podstawowe narzędzie do instalacji patchy.
  • Data Patch → aktualizuje zmiany w katalogu SQL po instalacji patcha.
  • Backup i testy przed instalacją są obowiązkowe!
  1. Sprawdzenie wersji bazy danych i aktualnego stanu patchy
SELECT * FROM v$version;
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Sprawdzenie zainstalowanych poprawek

SELECT * FROM dba_registry_sqlpatch;

PATCH_ID      PATCH_DESCRIPTION               STATUS
------------  ------------------------------  ----------
33192793      Database Release Update 19.11   SUCCESS

Sprawdzenie statusu opatch:

$ORACLE_HOME/OPatch/opatch lsinventory
  1. Pobranie odpowiedniego patcha CSI trzeba miec zeby utworzyc konto i zalogowac sie do Oracle i pobrac patch

  2. Weryfikacja patchy zainstalowanych

export ORACLE_HOME=/ora/OraHome19000
cd $ORACLE_HOME/OPatch
opatch lsinventory
  • podstawowe narzędzie z pakietu OPatch służące do wyświetlania listy wszystkich patchy (i ich detali) zainstalowanych w danym ORACLE_HOME.

Opcje

  • -detail Pokaże dodatkowe informacje (lista plików, komponentów, zależności), np. ./opatch lsinventory -detail
  • -oh <ścieżka> Pozwala wskazać ORACLE_HOME, jeśli nie chcesz ustawiać zmiennej środowiskowej: ./opatch lsinventory -oh /ora/OraHome19000
  • -invPtrLoc Jeżeli Twój oraInst.loc jest w niestandardowej lokalizacji.
opatch
opatch lsinventory
opatch -help
opatch lspatches -help
opatch lspatches
opatch lsinventory -help
opatch lsinventory -patch_id
opatch lsinventory -detail


opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch prereq CheckConflictAgainstOHWithDetail -ph ./ > /tmp/Oracle_patch/opatch_checkconflict.txt

opatch apply


cd $ORACLE_HOME/OPatch
./datapatch -sanity_checks
./datapatch -sanity_checks >> /tmp/Oracle_patch/lsinventory.txt
./datapatch -verbose
./datapatch -sanity_checks

Out-of-Place Patching (OOP)

W Oracle polega na:

  • instalacji patcha w nowym katalogu ORACLE_HOME (obok starego),
  • a następnie przepięciu binariów (czyli zmiany ORACLE_HOME, tzw. „switch home”),
  • bez nadpisywania aktualnego środowiska.

To podejście jest szczególnie bezpieczne i zalecane przez Oracle dla systemów produkcyjnych – minimalizuje czas niedostępności i pozwala na szybki rollback (powrót do starego katalogu).

  1. Sprawdź aktualne środowisko
echo $ORACLE_HOME
echo $ORACLE_SID
  1. Skopiuj istniejący ORACLE_HOME
cp -rp /u01/app/oracle/product/19.20.0/dbhome_1 /u01/app/oracle/product/19.22.0/dbhome_1_patch
  1. Zainstaluj patch do nowego katalogu

Przejdź do nowego katalogu:

cd /u01/app/oracle/product/19.22.0/dbhome_1_patch

Zastosuj patch np. za pomocą opatch:

./opatch apply -silent

Potem:

./datapatch -verbose
  1. Zaktualizuj środowisko – oratab i .bash_profile

W /etc/oratab:

  • Zmień ścieżkę ORACLE_HOME dla SID:
ORCL:/u01/app/oracle/product/19.22.0/dbhome_1_patch:Y

W .bash_profile:

Zmień:

export ORACLE_HOME=/u01/app/oracle/product/19.22.0/dbhome_1_patch
  1. Restart instancji bazy
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP;
  1. Potwierdź, że baza działa z nowego ORACLE_HOME:
SELECT * FROM v$version;
  1. (Opcjonalnie) Test rollbacku

Jeśli coś pójdzie nie tak, wystarczy:

  • Zmienić zmienne środowiskowe na stare ORACLE_HOME
  • Przełączyć /etc/oratab
  • Wystartować bazę z powrotem
* Install New Oracle Home
* Apply Patch to New Oracle Home
* Update Configuration
* Switch Oracle Database to New Home -  downtime,
* Run Post-Patch Steps -  na działającej bazie

Dokumentacja Oracle:

⚠️ **GitHub.com Fallback** ⚠️