Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle
Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Στο άρθρο θα αναλύσουμε τη διαδικασία του patch set update (PSU) σε Oracle Database. Η διαδικασία γίνεται μέσω των δύο εργαλείων της Oracle το OPatch και το Datapatch. Το OPatch είναι ένα εργαλείο που επιτρέπει την εφαρμογή και απεγκατάσταση patches σε λογισμικό (binaries) της Oracle . Από την άλλη το Datapatch εφαρμόζει τις ενημερώσεις αυτές στη βάση δεδομένων και ποιό συγκεκριμένα στο data dictionary (συστημικά views και πίνακες).

Πώς κατεβάσουμε το patch set update

Μέσα από το support portal της Oracle συνδεόμαστε στο κάτωθι link.

*Χρειάζεται να έχουμε λογαριασμό που να διαθέτει το δικαίωμα να κατεβάσει PSU (επί πληρωμή), αν η έκδοση έχει βγει σε Extended Support π.χ. 12.1 έχει ειδικό κόστος.

https://support.oracle.com/portal/

Επιλέγουμε Patches & Updates, Advanced, Product Oracle Database Enterprise και τη Release που έχουμε.

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Εκεί θα μας φορτώσει μια λίστα, την κάνουμε order με τη στήλη updated και ψάχνουμε το latest patch set update για το λειτουργικό που έχουμε.

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Στην επόμενη οθόνη μπορούμε να βρούμε πληροφορίες για το patch το οποίο περιέχει cumulative και όλα τα προηγούμενα.

Επιλέγουμε το λειτουργικό και Download:

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Έχουμε τη δυνατότητα ή να το κατεβάσουμε και να το μεταφέρουμε με ftp στον server ή να χρησιμοποιήσουμε το wget.sh το οποίο θα μας το κατεβάσει απευθείας στον server με χρήση ssh.

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Η προετοιμασία

Έχουμε κατεβάσει το PSU στον φάκελο “Downloads”:

[oracle@dp-gr Downloads]$ ls -ltr
total 2155088
drwxrwxr-x+ 7 oracle oracle       4096 Jul  7  2014 database
-rw-rw-r--. 1 oracle oracle 2206794758 Jul  8 15:14 p31113348_121020_Linux-x86-64.zip
-rwxrwxr-x. 1 opc    opc          1949 Sep 21  2020 wget.sh

Τσεκάρουμε τι version έχει το εργαλείο OPatch, δεν γίνεται να εφαρμόσουμε τα patch με παλιά έκδοση:

[oracle@dp-gr Downloads]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.1.0.1.3

Βλέπουμε ότι είναι παλιά οπότε θα διαγράψουμε το φάκελο του και θα κατεβάσουμε το latest.

Μεταφέρουμε το .zip του PSU στο ORACLE_HOME και το κάνουμε unzip.

Ταυτόχρονα σβήνουμε και τον φάκελο του OPatch που βρίσκεται στο ORACLE_HOME αφού θα αντικατασταθεί:

[oracle@dp-gr Downloads]$ cp p31* $ORACLE_HOME/
[oracle@dp-gr Downloads]$ cd $ORACLE_HOME
[oracle@dp-gr db_1]$ rm -rf OPatch
[oracle@dp-gr db_1]$ unzip p31113348_121020_Linux-x86-64.zip

Πώς κάνουμε εγκατάσταση το latest OPatch

Συνδεόμαστε στο κάτωθι σύνδεσμο:

https://updates.oracle.com/download/6880880.html

Επιλέγουμε η σωστή release και λειτουργικό (προσοχή με 32 και 64bit):

Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Αφού κατέβει το κάνουμε και αυτό copy στο ORACLE_HOME και unzip:

[oracle@dp-gr Downloads]$ cp p688* $ORACLE_HOME/
[oracle@dp-gr Downloads]$ cd $ORACLE_HOME
[oracle@dp-gr db_1]$ unzip p6880880_121010_LINUX.zip

Σβήνουμε τα zip που δεν τα χρειαζόμαστε πλέον:

[oracle@dp-gr db_1]$ rm -rf *.zip

Τώρα θα δούμε ότι έχουμε την καινούργια version του OPatch:

[oracle@dp-gr db_1]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.21

OPatch succeeded

Η διαδικασία

Πάμε στον φάκελο με το id του PSU που βρίσκεται στο ORACLE_HOME:

[oracle@dp-gr db_1]$ cd 31113348

Κάνουμε έλεγχο αν υπάρχει κάποιο conflict με άλλα patches:

[oracle@dp-gr 31113348]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2020, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1
Central Inventory : /home/oracle/oracle/app/oraInventory
   from           : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/oraInst.loc
OPatch version    : 12.2.0.1.21
OUI version       : 12.1.0.2.0
Log file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_13-27-13PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

Είναι ώρα να σταματήσουμε τον listener ώστε να μην μπορεί να συνδεθεί άλλος εξωτερικός χρήστης και έπειτα να κλείσουμε την βάση:

[oracle@dp-gr 31113348]$ lsnrctl stop

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 21-SEP-2020 13:29:22

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dp-gr)(PORT=1521)))
The command completed successfully
[oracle@dp-gr 31113348]$ sqlplus / as sysdba

SQL> shutdown immediate;

Κάνουμε έναν τελευταίο έλεγχο στα αρχεία:

** Αν αποτύχει με /sbin/fuser και το όνομα του αρχείου βρίσκουμε ποιο process το κάνει use και το κάνουμε kill.

[oracle@dp-gr 31113348]$ $ORACLE_HOME/OPatch/opatch prereq CheckActiveFilesAndExecutables -ph ./

Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2020, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1
Central Inventory : /home/oracle/oracle/app/oraInventory
   from           : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/oraInst.loc
OPatch version    : 12.2.0.1.21
OUI version       : 12.1.0.2.0
Log file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_13-32-03PM_1.log

Invoking prereq "checkactivefilesandexecutables"

Prereq "checkActiveFilesAndExecutables" for patch 20299023 passed.

.
.
.
Prereq "checkActiveFilesAndExecutables" for patch 31113348 passed.

OPatch succeeded.

Με την εντολή opatch apply ξεκινάει επιτέλους το patching:

[oracle@dp-gr 31113348]$ $ORACLE_HOME/OPatch/opatch apply
Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2020, Oracle Corporation.  All rights reserved.


Oracle Home       : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1
Central Inventory : /home/oracle/oracle/app/oraInventory
   from           : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/oraInst.loc
OPatch version    : 12.2.0.1.21
OUI version       : 12.1.0.2.0
Log file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_13-41-15PM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   19769480  20299023  20831110  21359755  21948354  22291127  23054246  24006101  24732082  25171037  25755742  26609783  26713565  26925311  27338041  27547329  28259833  28729169  29141015  29494060  29918340  30340202  30700212  31113348

Do you want to proceed? [y|n]
Composite patch 31113348 successfully applied.
Log file location: /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_13-41-15PM_1.log

OPatch succeeded.

Για να δούμε ποια patch εφαρμόστηκαν:

[oracle@dp-gr 31113348]$ $ORACLE_HOME/OPatch/opatch lsinventory

Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2020, Oracle Corporation.  All rights reserved.


Oracle Home       : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1
Central Inventory : /home/oracle/oracle/app/oraInventory
   from           : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/oraInst.loc
OPatch version    : 12.2.0.1.21
OUI version       : 12.1.0.2.0
Log file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_15-03-14PM_1.log

Lsinventory Output file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/lsinv/lsinventory2020-09-21_15-03-14PM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: dp-gr.subnet.vcn.oraclevcn.com
ARU platform id: 226
ARU platform description:: Linux x86-64

Installed Top-level Products (1):

Oracle Database 12c                                                  12.1.0.2.0
There are 1 products installed in this Oracle Home.


Interim patches (1) :

Patch  31113348     : applied on Mon Sep 21 14:44:47 GMT 2020
Unique Patch ID:  23682224
Patch description:  "Database Patch Set Update : 12.1.0.2.200714 (31113348)"
   Created on 7 Jul 2020, 20:50:51 hrs PST8PDT

Αφού ολοκληρώθηκε η αναβάθμιση στα binaries του λογισμικού, με το datapatch θα ενημερώσουμε και την βάση δεδομένων.

Πρώτα όμως ξεκινάμε πρώτα την βάση:

[oracle@dp-gr admin]$ sqlplus / as sysdba

SQL> startup;

SQL> exit;

Και έπειτα τρέχουμε το datapatch:

[oracle@dp-gr admin]$ $ORACLE_HOME/OPatch/datapatch -verbose

SQL Patching tool version 12.1.0.2.0 Production on Mon Sep 21 15:09:55 2020
Copyright (c) 2012, 2016, Oracle.  All rights reserved.

Log file for this invocation: /home/oracle/oracle/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_29130_2020_09_21_15_09_55/sqlpatch_invocation.log

Connecting to database...OK
Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of SQL patches:
Bundle series PSU:
  ID 200714 in the binary registry and not installed in the SQL registry

Adding patches to installation queue and performing prereq checks...
Installation queue:
  Nothing to roll back
  The following patches will be applied:
    31113348 (DATABASE PATCH SET UPDATE 12.1.0.2.200714)

Installing patches...
Patch installation complete.  Total patches installed: 1

Validating logfiles...
Patch 31113348 apply: SUCCESS

Μπορούμε πλέον να σηκώσουμε πάλι το listener ώστε να μπορούν να συνδεθούν άλλοι χρήστες:

[oracle@dp-gr db_1]$ lsnrctl start
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 21-SEP-2020 18:21:03

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dp-gr)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                21-SEP-2020 18:10:08
Uptime                    0 days 0 hr. 10 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/network/admin/listener.ora
Listener Log File         /home/oracle/oracle/app/oracle/diag/tnslsnr/dp-gr/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dp-gr.subnet.vcn.oraclevcn.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=dp-gr.subnet.vcn.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/home/oracle/oracle/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...

Αφού σηκώθηκε ο listener μπορούμε να συνδεθούμε και με εξωτερική εφαρμογή.

Με το κάτωθι query μπορούμε να δούμε το PSU που περάστηκε και πότε:

select patch_id,status,action_time,description from dba_registry_sqlpatch order by action_time;
Πώς εφαρμόζουμε το τελευταίο patch (PSU) σε βάση δεδομένων της Oracle

Για να σβήσουμε ότι σκουπίδια έχουν μείνει από την εγκατάσταση τρέχουμε το opatch cleanup (θα μπορούμε ακόμα να κάνουμε rollback τα patches):

[oracle@dp-gr db_1]$ $ORACLE_HOME/OPatch/opatch util cleanup
Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2020, Oracle Corporation.  All rights reserved.


Oracle Home       : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1
Central Inventory : /home/oracle/oracle/app/oraInventory
   from           : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/oraInst.loc
OPatch version    : 12.2.0.1.21
OUI version       : 12.1.0.2.0
Log file location : /home/oracle/oracle/app/oracle/product/12.1.0.2/db_1/cfgtoollogs/opatch/opatch2020-09-21_18-11-50PM_1.log

Invoking utility "cleanup"
OPatch will clean up 'restore.sh,make.txt' files and 'scratch,backup' directories.
You will be still able to rollback patches after this cleanup.
Do you want to proceed? [y|n]
Y
User Responded with: Y

Backup area for restore has been cleaned up. For a complete list of files/directories
deleted, Please refer log file.

OPatch succeeded.

Αν θέλουμε να κάνουμε rollback το patch…

Στην περίπτωση που θέλουμε να κάνουμε rollback το patch μπορούμε ενώ έχουμε κατεβάσει την βάση δεδομένων να τρέξουμε την παρακάτω εντολή δηλώνοντας το patch id που θέλουμε να αφαιρέσουμε:

[oracle@dp-gr db_1]$ $ORACLE_HOME/OPatch/opatch rollback -id 31113348

Θα πρέπει όμως αφού ολοκληρωθεί το rollback στα binaries της Oracle να τρέξουμε ξανά datapatch (με ανεβασμένη την βάση δεδομένων) ώστε να περάσουν και οι αλλαγές στους πίνακες της βάσης δεδομένων:

[oracle@dp-gr db_1]$ $ORACLE_HOME/OPatch/datapatch -verbose

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση