Oracle 11G R2 Database Dataguard Kurulumu
Bu makalemde Oracle database 11g r2 versiyonu ile dataguard kurulumunu anlatacağım.
oeldb1.localdomain ve oeldb2.localdomian isimli iki server’ım var. İşletim sistemi olarak Redhat 6.7 versiyonu kurulu.
Oeldb1 server üzerinde Primary olarak Oracle Database 11gr2 versiyonu kurulu. Amaç oeldb2 server üzerine Oracle dataguard yapısını kurup datalarımızı olası bir felaket durumuna karşı korumak. Dataguard’ın özelliklerinden biri dilediğimiz anda standby veri tabanını read only modda açıp rapor çekebilir, Ya da yedek alabiliriz
Primary serverda oracle kullanıcısıyla database kurulumunu yaptım. Bu user oinstall grubuna üye. Standby olan serverda aynı kullanıcı id ve group olarak tanımlı. Oracle db’nin kurulum pathleri birebir aynı
Serverların Donanım, Ip, hostname ve Database Bilgileri
Oeldb1 Primary:
İşlemci: 1×4 core
Ram: 4gb
Ip: 192.168.200.20
Hostname: oeldb1
Oracle Sid: orcl
Kurulum Dizini: /u01/app/oracle/product/11.2.0/db_1/
Oeldb2 Standby
İşlemci: 1×4 core
Ram: 4gb
Ip: 192.168.200.30
Hostname: oeldb2
Oracle Sid: orcldg
Kurulum Dizini: /u01/app/oracle/product/11.2.0/db_1
İki server üzerinde host dosyalarına ip ve hostname olarak birbirlerini ekliyorum. İki sevrerın firewalları disabled durumda ve selinux permissive modda.
Standby server’a bağlanıp oracle kurulumunu yapıcam. İlk ekranda Sadece database software kurulumunu seçiyorum.
Enterprise Edition versiyonunu seçiyorum. Dataguard bu sürümün özelliği
Oracle Db’nin kurulucağı dizin
Install seçtikten sonra kurulum başlamış oluyor.
Primary Veri tabanında Oracle Database üzerinde yapılacak işlemler
Öncelikle Veri tabanı archive mod da olmalı. Bunun için yapılması gerekenler
Veri tabanı açıksa shutdown immediate; ile kapatılır
Startup mount; mound modda açılır
alter database archivelog; komutuyla database archlog’a alınır
alter database open; komutuyla database açılır
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=’DG_CONFIG=(orcl,orcldg)’ scope=both;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=orcldg NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg’ scope=both;
alter system set log_archive_dest_1=’LOCATION=/u01/app/oracle/fast_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl’;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT=’%t_%s_%r.arc’ SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
ALTER SYSTEM SET FAL_SERVER=orcldg;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
ALTER SYSTEM SET FAL_CLIENT=orcl;
create pfile=’/u01/orcldginit.ora’ from spfile;
alter database create standby controlfile as ‘/u01/control01.ctl’;
İşletim Sistemi Bazında Secondary Veri tabanında Yapılacak İşlemler
mkdir –p /u01/app/oracle/admin/orcldg/adump
mkdir –p /u01/app/oracle/fast_recovery_area/orcldg
mkdir –p /u01/app/oracle/oradata/orcldg
İşletim sistemi üzerinde netca komutuyla standby db için listener servisini create ediyorum
Primary server üzerinde /u01/app/oracle/product/11.2.0/db_1/network/admin dizini altında tnsnames.ora dosyasını editleyip secondary olan db’nin listener bilgilerini giriyorum
Bu işlemi standby db üzerinde de yapıyorum. Fakat burada /u01/app/oracle/product/11.2.0/db_1/network/admin dizini altında tnsnames.ora dosyası olmadığından bu dosyayı create ettikten sonra yukarıdaki listener bilgilerini giriyorum
Her iki serverda listener bağlantılarını tnsping ile kontrol ediyorum
Primary serverda Oracle tarafında /u01 dizini altında orcldginit.ora isimli bir dosya yaratmıştım. Bu dosyayı standby makinasına /u01/app/oracle/product/11.2.0/db_1/dbs altında kopyalıyorum ve ismini initorcldg.ora olarak değiştiriyorum
Bu dosyayı editleyip orcl olan yerleri orcldg olarak değiştiriyoum ve aşağıdaki parametreleri ekliyorum
*.standby_file_management=’AUTO’
*.db_recovery_file_dest_size=4385144832
*.db_file_name_convert=’/orcl/’,’/orcldg/’
*.log_file_name_convert=’/orcl/’,’/orcldg/’
Son durum aşağıdaki gibi olmalıdır
Standby veri tabanını nomount olarak açıyorum. Spfile bilgilerimi okuyarak nomount modda db açıldı
Şimdi sıra primary db de ki control file dosyalarını ve password file dosyasını standby db ye kopyalamaya geldi
Öncelikle primary db üzerinde alter database create standby controlfile as ‘/u01/control01.ctl’; komutuyla standby db için controlfile yaratıyorum
Create ettiğim controlfile01.ctl dosyasını secondary db ye kopyalıyorum
scp -r /u01/control01.ctl [email protected]:/u01/app/oracle/oradata/orcldg/control01.ctl
scp -r /u01/control01.ctl [email protected]:/u01/app/oracle/fast_recovery_area/orcldg/control02.ctl olarak kopyalıyorum
Password File dosyamızıda kopyalıyalım
scp –r /u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl [email protected]:/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcldg ismiyle kopyalıyorum
Standby server üzerinde aşağıdaki komutu çalıştırıyorum
orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcldg password=sys entries=10 force=y ignorecase=Y
Bu işlemleri tamamladıktan sonra nomount olan veri tabanımızı mount modda açıyorum
Standby db üzerinde üç adet 50mb’lık redo log dosyası oluşturcağım
alter database add standby logfile (‘/u01/app/oracle/oradata/orcldg/standby_redo01.log’) SIZE 50M;
alter database add standby logfile (‘/u01/app/oracle/oradata/orcldg/standby_redo02.log’) SIZE 50M;
alter database add standby logfile (‘/u01/app/oracle/oradata/orcldg/standby_redo03.log’) SIZE 50M;
Tekrar primary server üzerine bağlanıp rman yedeği alıcağım. Bu yedeği altıktan sonra standby makinasına kopyalayıp restore edicem. Şimdi bu işlemleri sırayla yapıyorum
Primary db
Yedek alma işmemim bitti. /u01/backup dizini altındaki Rman yedeğimi standby db ye kopyalıyorum
scp -r /u01/backup/* [email protected]:/u01/backup/
Standby Db Tarafına Geçiyorum
Hatırlarsanız Veri tabanımız mount moddaydı.
Rman target / ile bağlanıp yedeğimizin bulunduğu dizini gösteriyorum
catalog start with ‘/u01/backup/’;
Restore database; komutuyla standby veri tabanımızı yedekten geri dönüyorum
Restore ettikten sonra standby oracle veri tabanına bağlanıp
alter database recover managed standby database disconnect from session; komutuyla arch logların işlenmesini sağlıyorum
Kontrollerimizi yapalım
Dataguard Durumu Status Valid
Archlogların işlendiğini görmek için
Umarım faydalı bir makale olmuştur. Bu makalemizin de sonuna geldik, bir sonraki makalemizde görüşmek üzere.