Πώς μετατρέπουμε μια βάση δεδομένων από Physical Standby σε Logical Standby σε Oracle Data Guard

- Πώς μετατρέπουμε μια βάση δεδομένων από Physical Standby σε Logical Standby σε Oracle Data Guard - 2 Ιούνιος 2025
- Πώς να γυρίσουμε μία Oracle Database πίσω στον χρόνο με χρήση restore point σε περιβάλλον Data Guard - 28 Απρίλιος 2025
- Πώς μπορούμε να αυξήσουμε την απόδοση στο target Replicat του Oracle GoldenGate με παραλληλία - 19 Μάρτιος 2025
Σε άλλο άρθρο έχουμε δει πώς κάνουμε εγκατάσταση το Oracle Data Guard, πώς φτιάχνουμε μία βάση δεδομένων ως Physical Standby και πώς ως Snapshot Standby. Σε αυτό το άρθρο θα δούμε πώς μετρατρέπουμε μία βάση δεδομένων που είναι physical standby σε Logical Standby.
Τι μας προσφέρει όμως μία logical standby;
Σε αντίθεση με την physical standby δεν γίνεται replication σε block level αλλά με μεταφορά των SQL statements, μπορούμε να την έχουμε open σε read/write, μπορούμε να φτιάξουμε indexes και materialized views, μπορούμε να την κάνουμε χρήση για reporting και για να αναβαθμίσουμε την έκδοση της Oracle Database με σχεδόν μηδέν downtime.
Πώς γίνεται η μετατροπή μίας physical standby σε logical standby
Στο primary
Για αρχή συνδεόμαστε στο primary και ελέγχουμε ότι έχουμε συμβατά data types και μπορούμε να μετατρέψουμε την βάση σε Logical Standby, το παρακάτω query δεν θα πρέπει να μας επιστρέψει εγγραφές:
sqlplus / as sysdba
select * from dba_logstdby_unsupported;
Στη συνέχεια συνδεόμαστε στο Data Guard Broker ελέγχουμε το state των βάσεων δεδομένων και κάνουμε disable το apply στη βάση δεδομένων που θα μετατρέψουμε:
dgmgrl "sys/Kwdikos1!"@ORADEV
show configuration;
Configuration - dg_config
Protection Mode: MaxAvailability
Members:
oradev - Primary database
oradevdr - Physical standby database
oradevdr3 - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 5 seconds ago)
edit database oradevdr3 set state=apply-off; exit;
Έπειτα ενεργοποιούμε το supplemental logging στο primary:
sqlplus / as sysdba
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Και αφού το ενεργοποιήσουμε κάνουμε δημιουργούμε το data dictionary για την Logical Standby:
exec dbms_logstdby.build; exit;
Στο standby
Κάνουμε shutdown την βάση δεδομένων και την ξεκινάμε σε exclusive mode:
sqlplus / as sysdba
shutdown immediate; startup mount exclusive;
Μετατρέπουμε την standby βάση δεδομένων σε Logical Standby:
alter database recover to logical standby oradev;
Έπειτα κάνουμε restart την βάση δεδομένων σε open mode:
shutdown immediate; startup mount; alter database open resetlogs;
Στη συνέχεια μπορούμε να ενεργοποιήσουμε την Logical Standby:
alter database start logical standby apply immediate;
Στο primary
Σε αυτό το σημείο πρέπει να αφαιρέσουμε την βάση δεδομένων από το Data Guard configuration και να την ξαναπροσθέσουμε μέσω του Broker:
dgmgrl "sys/Kwdikos1!"@ORADEV
remove database oradevdr3; add database oradevdr3 as connect identifier is oradevdr3; enable database oradevdr3;
Κάπου εδώ τελειώσαμε και αν δούμε το status του configuration θα δούμε ότι έχει ολοκληρωθεί η μετατροπή σε Logical Standby:
show configuration;
Configuration - dg_config
Protection Mode: MaxAvailability
Members:
oradev - Primary database
oradevdr - Physical standby database
oradevdr3 - Logical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 5 seconds ago)
Για να δούμε την εξέλιξη του SQL Apply στην Logical Standby τρέχουμε το παρακάτω query στη βάση δεδομένων αυτή:
sqlplus / as sysdba
SELECT name, value FROM v$logstdby_stats;