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

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

Σε άλλο άρθρο έχουμε δει πώς κάνουμε εγκατάσταση το 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;

Πηγές:

Μοιράσου το

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