Oracle Data Guard Kurulumu: RMAN DUPLICATE

YUNUS EMRE ATAY

oracle data guard

Oracle Data Guard, birincil veritabanının (Primary Database) fiziksel veya mantıksal kopyalarını (Standby Database) oluşturarak veri yedekleme ve kurtarma işlemlerini otomatikleştiren bir Oracle teknolojisidir. Data Guard, felaket kurtarma (“Disaster Recovery”) ve yük dengesini optimize etme (“Load Balancing”) gibi avantajlar sunar.

1. Data Guard Kurulumu İçin Gereken Sunucu ve Veritabanı Bilgileri

Primary Database Sunucusu:

  • Hostname: oraclius.prod
  • IP: 10.10.10.11
  • İşletim Sistemi: Linux Server release 7.9 (Maipo)
  • Database Versiyonu: 19.3.0.0
  • DB_NAME: orac
  • DB_UNIQUE_NAME: orac
  • SID: orac

Standby Database Sunucusu:

  • Hostname: oraclius.dg
  • IP: 10.10.10.12
  • İşletim Sistemi: Linux Server release 7.9 (Maipo)
  • Database Versiyonu: Kurulu Değil
  • DB_NAME: orac
  • DB_UNIQUE_NAME: oracdg
  • SID: oracdg

Primary Database sunucusu, aşağıdaki yazıyı takip ederek kurulmalıdır.

Standby Database sunucusu ise aşağıdaki yazının yalnızca 3.1 Oracle Database Binary Kurulumu adımına kadar (3.1 dahil) takip edilerek kurulmalıdır.


2. Oracle Data Guard Kurulum Aşamaları

2.1 Primary Sunucu Hazırlığı

2.1.1 /etc/hosts Dosyasının Güncellenmesi

Primary sunucunuzun /etc/hosts dosyasına, Standby sunucusunun IP adresi ve hostname bilgilerini eklemeniz gerekiyor. Bu, iki sunucunun birbirini tanıyabilmesi için gereklidir.

2.1.2 FORCE LOGGING Kontrolü

FORCE_LOGGING parametresi, tüm veritabanı işlemlerinin redo loglarına yazılmasını zorunlu kılar. Bu, Data Guard yapılandırması için gereklidir.

SELECT FORCE_LOGGING FROM V$DATABASE;
FORCE_LOGGING
---------------------------------------
NO

Eğer FORCE_LOGGING değeri NO ise, aşağıdaki komutla açılmalıdır:

ALTER DATABASE FORCE LOGGING;

2.1.3 ARCHIVELOG Modunun Kontrolü

ARCHIVELOG modu, redo loglarının dönüştürülmeden önce bir yedek olarak saklanmasını sağlar. Redo loglar arşivlenerek hem veri kurtarma hem de Data Guard için gerekli redo transferi sağlanır.

SELECT LOG_MODE FROM V$DATABASE;
LOG_MODE
---------------------------------------
NOARCHIVELOG

Eğer NOARCHIVELOG dönerse, şu komutlarla ARCHIVELOG modu açılmalıdır:

SHU IMMEDIATE; 
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

2.1.4 Flash Recovery Area (FRA) Ayarları

db_recovery_file_dest parametresi ayarlanmazsa, Oracle veritabanı arşiv log dosyalarını $ORACLE_HOME/dbs dizinine kaydeder.

Öncelikle, FRA’nın ne kadar disk alanı kullanabileceğini belirlemek için db_recovery_file_dest_size parametresini ayarlamanız gerekir. Bu değeri, FRA için tahsis etmek istediğiniz maksimum disk alanına göre belirleyin.

FRA’nın depolanacağı bir dizin belirlemeniz için db_recovery_file_dest parametresini ayarlamanız gerekir. Bu dizin genellikle veritabanınızın yedeği, log dosyaları ve geri yükleme verileri için kullanılır.

SHO PARAMETER DB_RECOVERY_FILE_DEST
NAME				     TYPE	 VALUE
------------------------------------ ----------- ----------------------------
db_recovery_file_dest		     string
db_recovery_file_dest_size	     big integer 0
mkdir -p /u01/FRA
chown -R oracle:oinstall /u01/FRA
chmod -R 775 /u01/FRA

Oracle veritabanına Flash Recovery Area (FRA)‘yı kullanmaya başlatmak için aşağıdaki SQL komutlarını çalıştırarak veritabanının FRA parametrelerini ayarlayın:

ALTER SYSTEM SET db_recovery_file_dest_size = 3G SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest = '/u01/FRA' SCOPE=BOTH;

Ayarlamalarınızı doğrulamak için şu sorguları çalıştırarak yapılandırmanızı kontrol edebilirsiniz:

SHOW PARAMETER db_recovery_file_dest;

NAME				     TYPE	 VALUE
------------------------------------ ----------- -----------------------------
db_recovery_file_dest		     string	 /u01/FRA
db_recovery_file_dest_size	     big integer 3G

2.1.4 DB_NAME VE DB_UNIEUQ_NAME Kontrolü

DB_NAME ve DB_UNIQUE_NAME Sorgulama:

SHO PARAMETER DB_NAME
NAME				     TYPE	 VALUE
------------------------------------ ----------- ----------------------------
db_name 			     string	 orac

SHO PARAMETER DB_UNIQUE_NAME
NAME				     TYPE	 VALUE
------------------------------------ ----------- ----------------------------
db_unique_name			     string	 orac

2.1.5 SERVICE Kontrolü

Primary Database Sunucusunda tnsnames.ora dosyasını kullanarak Service bilgilerinin Eklenmesi:

vi /u01/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
ORAC =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = orac)
        )
    )

ORACDG =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.12)(PORT = 1521))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = oracdg)
        )
    )

2.1.6 DG_CONFIG, LOG_ARCHIVE_DEST VE LOG_ARCHIVE_DEST_STATE Kontrolü

LOG_ARCHIVE_CONFIG, Oracle Data Guard yapılandırmasında kullanılan bir parametredir ve veritabanı arşivleme konfigürasyonunun yönetilmesine yardımcı olur. Özellikle, Data Guard ortamında primary and standby veritabanları arasındaki log shipping (yazılım günlüğü gönderimi) işlemlerinin düzgün çalışabilmesi için kritik bir parametredir.

DG_CONFIG=(PROD_DB_UNIQUE_NAME,STANDBY_DB_UNIQUE_NAME)

SHO PARAMETER LOG_ARCHIVE_CONFIG
NAME				     TYPE	 VALUE
------------------------------------ ----------- ----------------------------
log_archive_config		     string
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orac,oracdg)' SCOPE=BOTH;

Oracle veritabanı yönetiminde LOG_ARCHIVE_DEST and LOG_ARCHIVE_DEST_STATE parametreleri, archive log dosyalarının hedeflere yönlendirilmesi ve bu hedeflerin durumlarının yönetilmesi için kullanılır. Bu parametreler, özellikle Data Guard and High Availability senaryolarında çok önemlidir.

SERVICE= tnsnames.ora dosyasında yazdığımız service ismi olmalı.

ALTER SYSTEM SET log_archive_dest_state_2=DEFER SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=ORACDG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oracdg' SCOPE=BOTH;

Dataguard sunucumuz için belirlediğimiz değerleri ise şöyle:

  • DB_NAME: orac
  • DB_UNIQUE_NAME: oracdg


2.2 Standby Sunucu Hazırlığı

Standby Database sunucusu ise aşağıdaki yazının yalnızca 3.1 Oracle Database Binary Kurulumu adımına kadar (3.1 dahil) takip edilerek kurulmalıdır.

Standby Database sunucumuzun /etc/hosts dosyasına Primary sunucumuzun bilgilerini ekleyelim.

2.2.1 Profile Dosyasının Ayarlanması

Standby Sunucumuzda profile dosyasının oluşturulması:

vi .profile_db
export ORACLE_HOSTNAME=oraclius.dg
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_UNQNAME=oracdg
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=oracdg

export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export TNS_ADMIN=$ORACLE_HOME/network/admin

export TMPDIR=/tmp
export TMP=/tmp

2.2.2 SERVICE Kontrolü

Standby Database Sunucusunda tnsnames.ora dosyasını kullanarak Service bilgilerinin Eklenmesi:

vi /u01/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
ORAC =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = orac)
        )
    )

ORACDG =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.12)(PORT = 1521))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = oracdg)
        )
    )

2.2.3 Password Dosyasının Standby Sunucuya Kopyalanması

Password file’ının Primary Sunucudan Standby Sunucuya kopyalanması:

–Primary > Standby

scp /u01/app/oracle/product/19c/dbhome_1/dbs/orapworac oracle@10.10.10.12:/u01/app/oracle/product/19c/dbhome_1/dbs/orapworacdg

2.2.4 Audit File Dizininin Ayarlanması

AUDIT_FILE_DEST parametresi, Oracle Data Guard yapılandırmasında, özellikle audit (denetim) verilerini depolamak için kullanılan bir yol belirtir. Bu parametre, primary veritabanı and standby veritabanları arasında audit verilerinin nasıl toplanacağını ve depolanacağını belirler.

Primary Database Sunucusundaki path’in benzerini Standby Database Sunucusunda oluşturulması gerekir.

— Primary:

sho parameter audit_file_dest
NAME			TYPE	 VALUE
----------------------  -------  ---------------------------------
audit_file_dest         string   /u01/app/oracle/admin/orac/adump

— Standby:

mkdir -p /u01/app/oracle/admin/oracdg/adump

2.2.5 Pfile Oluşturma

Production Database’den Spfile Pfile oluşturup Standby sunucusuna atılması gerekir. Spfile’ın nerede olduğunu öğrenelim:

SHO PARAMETER SPFILE;
NAME			TYPE	 VALUE
----------------------  -------  ---------------------------------------------------------
spfile                  string  /u01/app/oracle/product/19c/dbhome_1/dbs/spfileorac.ora

Spfile’dan Pfile Oluşturup Standby Sunucumuza kopyalama:

CREATE PFILE='/home/oracle/pfile_for_duplicate.ora' FROM SPFILE='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileorac.ora';
scp /home/oracle/pfile_for_duplicate.ora oracle@10.10.10.12:/home/oracle/pfile_for_duplicate.ora

Standby Database’e atılan pfile’ın düzeltilmesi gerekir. Instance id ile başlayan satırların silinmesi(sadece * ile başlayanlar kalmalı) ve Standby database’e göre ayarlanması gerekir.

Pfile ilk hali:

orac.__data_transfer_cache_size=0
orac.__db_cache_size=1845493760
orac.__inmemory_ext_roarea=0
orac.__inmemory_ext_rwarea=0
orac.__java_pool_size=16777216
orac.__large_pool_size=16777216
orac.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orac.__pga_aggregate_target=117440512
orac.__sga_target=2147483648
orac.__shared_io_pool_size=16777216
orac.__shared_pool_size=234881024
orac.__streams_pool_size=0
orac.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orac/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORAC/control01.ctl','/u01/app/oracle/oradata/ORAC/control02.ctl'
*.db_block_size=8192
*.db_name='orac'
*.db_recovery_file_dest_size=3221225472
*.db_recovery_file_dest='/u01/FRA'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracXDB)'
*.local_listener='LISTENER_ORAC'
*.log_archive_config='DG_CONFIG=(orac,oracdg)'
*.log_archive_dest_2='SERVICE=ORACDG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oracdg'
*.log_archive_dest_state_2='DEFER'
*.memory_max_target=0
*.memory_target=0
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=104857600
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2147483648
*.undo_tablespace='UNDOTBS1'
*.use_large_pages='FALSE'
mkdir -p /u01/app/oracle/oradata/ORACDG/
mkdir -p /u01/FRA

Eklenecek parametreler:

*.log_archive_dest_1='LOCATION=/u01/FRA'
*.standby_file_management='AUTO'
*.fal_server='orac'
*.fal_client='oracdg'
*.db_unique_name='oracdg'
*.parameter_value_convert 'ORAC','ORACDG'
*.set db_file_name_convert='/u01/app/oracle/oradata/ORAC', '/u01/app/oracle/oradata/ORACDG'
*.set log_file_name_convert='/u01/app/oracle/oradata/ORAC', '/u01/app/oracle/oradata/ORACDG'

Pfile son hali:

*.audit_file_dest='/u01/app/oracle/admin/oracdg/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORACDG/control01.ctl','/u01/app/oracle/oradata/ORACDG/control02.ctl'
*.db_block_size=8192
*.db_name='orac'
*.db_unique_name='oracdg'
*.db_recovery_file_dest_size=3221225472
*.db_recovery_file_dest='/u01/FRA'
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_dest_1='LOCATION=/u01/FRA'
*.standby_file_management='AUTO'
*.fal_server='orac'
*.fal_client='oracdg'
*.db_unique_name='oracdg'
*.db_file_name_convert='/u01/app/oracle/oradata/ORAC', '/u01/app/oracle/oradata/ORACDG'
*.log_file_name_convert='/u01/app/oracle/oradata/ORAC', '/u01/app/oracle/oradata/ORACDG'
*.log_archive_config='DG_CONFIG=(orac,oracdg)'
*.log_archive_dest_2='SERVICE=ORACDG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oracdg'
*.log_archive_dest_state_2='DEFER'
*.memory_max_target=0
*.memory_target=0
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=104857600
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2147483648
*.undo_tablespace='UNDOTBS1'
*.use_large_pages='FALSE'

2.2.6 Listener.ora Dosyasını Static Registlirasyon ile Düzenlenmesi

listener.ora dosyasına aşağıdaki satır eklenmesi gerekir. GLOBAL_DBNAME and SID_NAME değerleri Case Sensitive‘dir

GLOBAL_DBNAME => tnsnames.ora dosyasındaki service name.

SID_NAME => Oracle SID

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oraclius.dg)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=oracdg)
      (SID_NAME=oracdg)
      (ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1)
    )
  )

Listener Stop, Start edilir:

lsnrctl stop listener
lsnrctl start listener
lsnrctl status


LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-MAR-2025 16:25:53

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                05-MAR-2025 13:21:50
Uptime                    0 days 3 hr. 4 min. 3 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/orac/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.11)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.13)(PORT=1521)))
Services Summary...
Service "oracdg" has 1 instance(s).
  Instance "oracdg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

3. Oracle Data Guard Test Aşamaları

3.1 Startup Nomount

Standby Database sunucumuzu nomount modunda Production Sunucumuzdan kopyalayıp birkaç değişiklik yaptığımız pfile ile açıyoruz:

. .profile_db
sqlplus / as sysdba
startup nomount pfile='/home/oracle/pfile_for_duplicate.ora';

Database nomount modda açtıktan sonra listener kontrol edelim. Nomount modda UNKNOWN and BLOCKEN şeklinde 2 servis olmalı.

lsnrctl status


LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-MAR-2025 16:25:53

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                05-MAR-2025 13:21:50
Uptime                    0 days 3 hr. 4 min. 3 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/orac/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.11)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.13)(PORT=1521)))
Services Summary...
Service "oracdg" has 1 instance(s).
  Instance "oracdg", status UNKNOWN, has 1 handler(s) for this service...
  Instance "oracdg", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully

3.2 Test Connection

Primary ve Standby sunucuda da tnsping testi yapılması gerekir. Test sırasında sunuculardaki listenerlar açık olmalı. Sqlplus ile test işleminde password file dosyası önceki adımlarda kopyalandığı için Standby sunucumuzun sys şifresi Prod ile aynıdır.

tnsping ORAC
tnsping ORACDG

sqlplus sys/<sifre>@ORAC as sysdba
sqlplus sys/<sifre>@ORACDG as sysdba

3.3 Duplicate.sh Script’inin Hazırlanması

Oracle Home dizinine duplicate.sh adında bir dosya oluşturup aşağıdaki satırları ekleyelim:

rman << EOF
connect target sys/1234@ORAC
connect auxiliary sys/1234@ORACDG
  run {
    allocate channel prmy1 type disk;
    allocate channel prmy2 type disk;
    allocate channel prmy3 type disk;
    allocate channel prmy4 type disk;
    
    allocate auxiliary channel stby type disk;
    duplicate target database for standby from active database section size 512G;
  }
EOF

Oluşturduğumuz script dosyasına execute yetkisi verelim:

chmod +x duplicate.sh

4. Oracle Data Guard Kurulum

4.1 Hazırladığımız Duplicate.sh Script’inin Çalıştırılması

Duplicate.sh script’i ister prduction ister Standby sunucuda çalıştırılabilir.

sh duplicate.sh
...
Finished Duplicate Db at 05-APR-25
released channel: prmy1
released channel: prmy2
released channel: prmy3
released channel: prmy4
released channel: stby

RMAN> 

Recovery Manager complete.

4.2 Duplicate Sonrası Yapılması Gerekenler

Duplicate sonrasında kendi hazırladığımız pfile’ı kullanarak devam edeceğiz.

CREATE SPFILE='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileoracdg.ora' from pfile='/home/oracle/pfile_for_duplicate.ora';

Database Spfile’ı kullanması için kapatılıp açılması gerekir.

shu immediate;

Daha sonra database açılabilir:

startup mount
SQL> sho parameter spfile

NAME      TYPE	   VALUE
--------- -------- ----------------------------------------------------------
spfile	  string   /u01/app/oracle/product/19c/dbhome_1/dbs/spfileoracdg.ora

4.3 Duplicate Sonrası Standby Dosya Kontrolü

Duplicate sonrası standby logfile dosyaları oluşmazsa elle oluşturulması gerekir.

SELECT * FROM V$STANDBY_LOG;

Standby Redolog dosyalarını birincil redolog dosyaları ile aynı dizine, aynı boyutta ve bir adet fazla sayıda olmak üzere oluşturulması gerekir.

SELECT GROUP#,MEMBER FROM V$LOGFILE;
    GROUP# MEMBER
---------- --------------------------------------------------------------------------------
	 3 /u01/app/oracle/oradata/ORACDG/redo03.log
	 2 /u01/app/oracle/oradata/ORACDG/redo02.log
	 1 /u01/app/oracle/oradata/ORACDG/redo01.log
SELECT GROUP#,BYTES FROM V$LOG;
    GROUP# BYTES
---------- ----------
	 1  209715200
	 3  209715200
	 2  209715200

3 Adet Log file mevcut. Aynı path ve boyuttan 1 adet fazla Standby Logfile oluşturulması gerekir:

alter database add standby logfile group 11 ('/u01/app/oracle/oradata/ORACDG/standby11.log') SIZE 209715200;
alter database add standby logfile group 12 ('/u01/app/oracle/oradata/ORACDG/standby12.log') SIZE 209715200;
alter database add standby logfile group 13 ('/u01/app/oracle/oradata/ORACDG/standby13.log') SIZE 209715200;
alter database add standby logfile group 14 ('/u01/app/oracle/oradata/ORACDG/standby14.log') SIZE 209715200;

Standby Logfile’ları oluşturduktan sonra kontrol edelim:

SELECT GROUP#, TYPE, MEMBER FROM V$LOGFILE;
    GROUP# TYPE    MEMBER
---------- ------- -----------------------------------------------------------------------------
	 3 ONLINE  /u01/app/oracle/oradata/ORACDG/ORACDG/onlinelog/o1_mf_3_mwkgp6t2_.log
	 2 ONLINE  /u01/app/oracle/oradata/ORACDG/ORACDG/onlinelog/o1_mf_2_mwkgp6j5_.log
	 1 ONLINE  /u01/app/oracle/oradata/ORACDG/ORACDG/onlinelog/o1_mf_1_mwkgp66h_.log
	11 STANDBY /u01/app/oracle/oradata/ORACDG/ORACDG/standby1.log
	12 STANDBY /u01/app/oracle/oradata/ORACDG/ORACDG/standby2.log
	13 STANDBY /u01/app/oracle/oradata/ORACDG/ORACDG/standby3.log
	14 STANDBY /u01/app/oracle/oradata/ORACDG/ORACDG/standby4.log

4.4 Apply Başlatılması

Apply’ı başlatmadan önce Production Sunucumuzda log_archive_dest_state_2 parametresi DEFER olarak ayarlanmıştı. Bu değer Production sunucumuzda ENABLE olarak ayarlanır:

ALTER SYSTEM SET log_archive_dest_state_2=ENABLE SCOPE=BOTH;

Standby Sunucumuzda Apply başlatılması:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

4.5 Son Kontroller

SQL> r
  1* select name, value, time_computed from v$dataguard_stats

NAME		    VALUE		        TIME_COMPUTED
------------------- --------------------------- -----------------------------
transport lag	        +00 00:00:00		04/05/2025 21:17:43
apply lag	        +00 00:00:00		04/05/2025 21:17:43
apply finish time       +00 00:00:00		04/05/2025 21:17:43
estimated startup time	14	                04/05/2025 21:17:43
select process,status, thread#, sequence#,block#,blocks from v$managed_standby;
select sequence#, first_time, next_time, applied from v$archived_log order by 1;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel; 

Leave a Reply to %s

Your email address will not be published. Required fields are marked with *

Hey!

Hello! I'm EMRE, and I'm passionate about technology, software, databases, and data analytics. In this blog, I aim to provide helpful content by sharing my learnings and experiences. In my spare time, I enjoy exploring new technologies, writing, and self-improvement.

My contact addresses