Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)

Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)

Σε προηγούμενο άρθρο είχαμε δει πώς πέρνάμε ένα patch σε βάση δεδομένων της Oracle. Σε αυτο το άρθρο θα δούμε την ίδια διαδικασία σε περιβάλλον Oracle Data Guard σε λειτουργικό UNIX. Τα βήματα που θα ακολουθήσουμε μας επιτρέπουν να γίνει η διαδικασία ακόμη και online αν κάνουμε χρήση του Oracle TAF.

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

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

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

Επιλέγουμε Patches & Updates και κάνουμε αναζήτηση το patch id που θέλουμε. Στην προκειμένη περίπτωση αναζήτούμε το patch 33192793 ώστε να αναβαθμίστούμε από την έκδοση 19.03 σε 19.13:

Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
01

Όταν κατέβει το αντιγράφουμε στο /oracle/home το κάνουμε unzip και στους δύο servers του Data Guard:

cd $HOME
unzip p33192793_190000_Linux-x86-64.zip

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

Για να εφαρμόσουμε όμως ένα latest patch πρέπει να έχουμε ενημερωμένο και το εργαλείο της Oracle που κάνει αυτή τη διαδικασία και ονομάζεται OPatch.

Για να κατεβάσουμε την τευλευταία έκδοση συνδεόμαστε στο κάτωθι σύνδεσμο:

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

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

Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
02

Αφότου το κατεβάσουμε, το μεταφέρουμε και στους δύο servers π.χ. στο /oracle/home, από εκεί το μεταφέρουμε στο $ORACLE_HOME του καθενός και το κάνουμε unzip στην θέση του παλιού OPatch φακέλου:

Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
03
cp p688* $ORACLE_HOME/
cd $ORACLE_HOME
unzip p6880880_121010_LINUX.zip

Όταν ολοκληρωθεί η διαδικασία τρέχουμε το παρακάτω και στους δύο servers ώστε να δούμε ότι πέρασε επιτυχώς η έκδοση:

$ORACLE_HOME/OPatch/opatch version
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
04

Η διαδικασία

Για αρχή στην περίπτωση που έχουμε ενεργοποιήσει το Fast-Start Failover στο Data Guard το κάνουμε disable:

dgmgrl "sys/Kwdikos1!"@ORADEV

show configuration;

disable fast_start failover
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
05

Έπειτα συνδεόμαστε στην Standby και σταματάμε την βάση που είναι τώρα mount state και τον listener:

lsnrctl stop

sqlplus / as sysdba
shutdown immediate;
exit;

Πάμε στον φάκελο στον οποίο βρίσκεται το patch:

cd $HOME

ls -ltr

cd 33192793

Τώρα μπορούμε να ξεκινήσουμε την διαδικασία της ενημέρωσης:

$ORACLE_HOME/OPatch/opatch apply
Patching component oracle.jdk, 1.8.0.201.0...
Patch 33192793 successfully applied.
Sub-set patch [29517242] has become inactive due to the application of a super-set patch [33192793].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /oracle/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2022-07-06_22-26-07PM_1.log

OPatch succeeded.

Με το που ολοκληρωθεί συνδεόμαστε στην βάση δεδομένων, την σηκώνουμε σε mount state και σηκώνουμε τον listener:

sqlplus / as sysdba
startup mount
exit;

lsnrctl start

Σαν επόμενο βήμα συνδεόμαστε στον Data Guard Broker του Primary και αφού δούμε ότι έχει συγχρονίσει δηλαδή ότι το Configuration Status έχει γυρίσει σε success κάνουμε switchover στην Standby:

* Ενδέχεται να κάνει λίγη ώρα ώστε να εμφανίσει success το status, οπότε τρέχουμε την εντολή show configuration μέχρι να μην δείχνει σφάλμα

dgmgrl "sys/Kwdikos1!"@ORADEV

show configuration verbose;

switchover to oradevdr;
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
06

Αφού γυρίσαμε στην Standby, τώρα μπορούμε να εφαρμόσουμε το patch στην Primary με την ίδια διαδικασία που κάναμε πριν.

Συνδεόμαστε στην Primary και σταματάμε την βάση που είναι τώρα mount state και τον listener:

lsnrctl stop

sqlplus / as sysdba
shutdown immediate;
exit;

Πάμε στον φάκελο στον οποίο βρίσκεται το patch:

cd $HOME

ls -ltr

cd 33192793

Τώρα μπορούμε να ξεκινήσουμε την διαδικασία της ενημέρωσης και στο παλιό Primary:

$ORACLE_HOME/OPatch/opatch apply
Patch 33192793 successfully applied.
Sub-set patch [29517242] has become inactive due to the application of a super-set patch [33192793].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /oracle/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2022-07-06_23-08-03PM_1.log

OPatch succeeded.

Με το που ολοκληρωθεί συνδεόμαστε στην βάση δεδομένων, την σηκώνουμε σε mount state και σηκώνουμε τον listener:

sqlplus / as sysdba
startup mount
exit;

lsnrctl start

Τώρα συνδεόμαστε πάλι στον Data Guard Broker του Secondary και αφού δούμε ότι έχει συγχρονίσει δηλαδή ότι το Configuration Status έχει γυρίσει σε success κάνουμε switchover στην παλιά Primary:

* Ενδέχεται να κάνει λίγη ώρα ώστε να εμφανίσει success το status, οπότε τρέχουμε την εντολή show configuration μέχρι να μην δείχνει σφάλμα

dgmgrl "sys/Kwdikos1!"@ORADEVDR

show configuration verbose;

switchover to oradev;

Αν ολοκληρωθεί επιτυχώς μπορούμε να ενεργοποιήσουμε και πάλι το Fast-Start Failover:

enable fast_start failover;
exit;

Ολοκληρώθηκε το patch στα binaries της Oracle, τώρα όμως μένει να περάσουμε την ενημέρωση και στους πίνακες της βάσης δεδομένων

Για να γίνει αυτό πρέπει να τρέξουμε την εντολή datapatch, οπότε συνδεόμαστε στο Primary και εκτελούμε το παρακάτω:

$ORACLE_HOME/OPatch/datapatch -verbose
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
07

Αν μας εμφανίσει κάποιο σφάλμα, μπορούμε να δούμε περισσότερες πληροφορίες στο που οφείλεται κάνοντας select στο παρακάτω view:

select * from OPATCH_XML_INV;

--https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=331756942002519&parent=EXTERNAL_SEARCH&sourceId=PROBLEM&id=1602089.1&_afrWindowMode=0&_adf.ctrl-state=l7kdhyc44_4

Όταν ολοκληρωθεί η διαδικασία συνδεόμαστε στην βάση δεδομένων και τρέχουμε το παρακάτω query ώστε να επιβεβαιώσουμε ότι ενημερώθηκε:

sqlplus / as sysdba

select patch_id,status,action_time,description from dba_registry_sqlpatch order by action_time;
Πώς εφαρμόζουμε ένα patch σε περιβάλλον Oracle Data Guard (ακόμη και online)
08

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

$ORACLE_HOME/OPatch/opatch util cleanup

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

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

$ORACLE_HOME/OPatch/opatch rollback -id 31113348

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

$ORACLE_HOME/OPatch/datapatch -verbose
Μοιράσου το

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