Oracle Active Data Guard este o opțiune introdusă odată cu Oracle 11g. Prin intermediul acestei funcționalități este permis accesul pentru citirea din baza de date de standby pentru interogări, sortare, raportare, etc, în timp ce se aplică în mod continuu schimbările primite de la baza de date de producție. In imaginea de mai jos (from docs.oracle) este foarte bine descris fluxul datelor folosind Oracle Active Data Guard.
sbydb049În versiunile mai vechi ale Oracle Data Guard, era posibil sa se deschida baza de date de standby în modul read only, dar baza de date nu putea să primească Redologuri din producție în tot acest timp.
Funcționalitatea Active Data Guard este disponibilă numai în Enterprise Edition și este opțiune contra cost. In rândurile de mai jos va prezint cum se activează opțiunea cu ajutorul lui Data Guard Broker prezentat în articolul precedent.

DGMGRL> connect sys
Password:
Connected as SYSDG.

DGMGRL> show configuration

Configuration – dgmcfg

Protection Mode: MaxPerformance
Members:
orcl    – Primary database
orcl_dg – Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 12 seconds ago)

DGMGRL> show database orcl_dg

Database – orcl_dg

Role:               PHYSICAL STANDBY
Intended State:     APPLY-ON
Transport Lag:      0 seconds (computed 1 second ago)
Apply Lag:          0 seconds (computed 1 second ago)
Average Apply Rate: 528.00 KByte/s
  Real Time Query:    OFF
Instance(s):
orcl_dg

Database Status:
SUCCESS

DGMGRL> edit database ‘orcl_dg’ set state = ‘apply-off’;
Succeeded.

SQL> SELECT database_role, open_mode FROM v$database;

DATABASE_ROLE    OPEN_MODE
–––––- –––––––
PHYSICAL STANDBY MOUNTED

SQL> alter database open read only;

Database altered.

SQL> SELECT database_role, open_mode FROM v$database;

DATABASE_ROLE    OPEN_MODE
–––––- –––––––
PHYSICAL STANDBY READ ONLY

DGMGRL> edit database ‘orcl_dg’ set state = ‘apply-on’;
Succeeded.
DGMGRL> show database orcl_dg

Database – orcl_dg

Role:               PHYSICAL STANDBY
Intended State:     APPLY-ON
Transport Lag:      0 seconds (computed 0 seconds ago)
Apply Lag:          0 seconds (computed 0 seconds ago)
Average Apply Rate: 2.00 KByte/s
  Real Time Query:    ON
Instance(s):
orcl_dg

Database Status:
SUCCESS

SQL> SELECT database_role, open_mode FROM v$database;

DATABASE_ROLE    OPEN_MODE
–––––- –––––––
PHYSICAL STANDBY READ ONLY WITH APPLY

Acum nu ne rămâne decât sa verificam ca funcționează:

SQL>  SELECT database_role, open_mode FROM v$database;

DATABASE_ROLE    OPEN_MODE
–––––- –––––––
PRIMARY          READ WRITE

SQL> create user test identified by test;

User created.

SQL> grant connect to test;

Grant succeeded.

SQL> grant CREATE TABLE to test;

Grant succeeded.

SQL> grant UNLIMITED TABLESPACE TO test;

Grant succeeded.

SQL> conn test/test
Connected.
SQL> create table test.t1 as
select  rownum id,
trunc(dbms_random.value(1,1e6)) n1
from dual
connect by
level <= 1e4;  2    3    4    5    6

Table created.

SQL>exit

SQL> SELECT database_role, open_mode FROM v$database;

DATABASE_ROLE    OPEN_MODE
–––––- –––––––
PHYSICAL STANDBY READ ONLY WITH APPLY

SQL> conn test/test
Connected.
SQL> select count(*) from t1;

COUNT(*)
–––-
10000

SQL> insert into t1 select * from t1;
insert into t1 select * from t1
*
ERROR at line 1:
ORA-16000: database or pluggable database open for read-only access

One comment

  1. Am facut ceva de genul asta acum vreo 15 ani mult mai simplu, cu o tehnologie de tip IP switch. Aveam redundanta atat la baza de date cat si la sistemul de operare.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s