Oracle Data Guard Kavramları, Kurulum ve Yönetimi
Oracle Data Guard , Oracle’da yüksek erişilebilirlik ve 
beklenmeyen sistem hataları neticesinde oluşabilecek veri kayıplarını en
 aza hatta sıfıra indiren oracle veritabanı ile bütünleşik bir veri 
koruma eklentisidir. Oracle enterprise sürümü gerektirir.Bütünleşiktir, 
ek kurulum gerektirmez. Veri tabanı hizmeti veren birincil sisteme 
(Primary) ek olarak bir veya daha fazla yedek (Secondary) sistem veya 
sistemlerin eş zamanlı veya eş zamanlı olmayan şekilde eşleştirilmesi 
prensibiyle çalışır. Çalışma prensibi , birincil veritabanında oluşan 
arşivlenmiş geridönüş loglarının (Archived Redo Logs) ikincil 
veritabanına aktarılması ve bu logların iki farklı yöntemle ikincil 
veritabına işlenmesine dayanır. Logların ikincil veritabanına işlenmesi 
yöntemi eşitlemenin fiziksel(Physical) mi mantıksal(Logical) mı olduğunu
 belirler. bu iki farklı işletim temel farklılıklar getirir. Sistemler 
birbirleriyle “Oracle Net” ile haberleşirler. Sistemler aynı ortamda 
veya uzak mesefalerde olabilirler. Sistemlerin yerleşimleri ile ilgili 
bir kısıtlama yoktur.
Fiziksel Bekleme Veritabanı (Physical Standby Database) : 
Birincil veritabanın birebir kopyasının ikincil veritabanında 
tutulmasıdır. İkincil veritabanı birincil veritabanın birebir kopyası 
olarak hazırlanır, birincil veritabanında oluşan arşiv geridönüşüm 
loglarının ikincil veritabanına uygulanması ile eşitlik sağlanmış olur. 
Fiziksel Bekleme Veritabanları açık veritabanları değillerdir. Startup 
Mount komutu ile açılırlar. birincil veritabanından gelen loglar 
Veritabanı Kurtarma(Database Recover) mantığıyla ikincil veritabanına 
işlenir. İstenirse ikincil vertabanı salt-okunur olarak açılabilir, 
fakat bu süre zarfında loglar işlenmez, biriktirilir. Tekrar işleme 
moduna alınarak logların işlenmesine devam edilebilir. Fiziksel Bekleme 
Veritabanları çoğunlukla felaket durumda kurtarma(disaster recovery) 
amaçlı olarak kullanılırlar. Felaket durumunda birincil veritabanının 
yerine geçecek olan veritabanı budur. böylece veri kaybı olmadan ve süre
 kaybetmeden kurtarım yapılmış olur.
Mantıksal Bekleme Veritabanı (Logical Standby Database) : Birincil
 veritabanının mantıksal olarak bir kopyasıdır, yani tablolar ve 
indexler gibi nesneler aynıdır fakat datafile dosyalarının düzeni 
farklılık gösterebilir. Birincil veritabanından gelen loglar SQL 
cümleciklerine çevrilerek işlenirler. Veritabanı açıktır, yani 
veritabanı üzerinde raporlama işlemleri yapılabilmektedir.Mantıksal 
veritabanına ait birtakım kısıtlamalar vardır. Bazı veri tipleri 
desteklenmemetedir. Ayrıca sistemdeki eşleşecek tabloların birincil 
anahtar indeksinin olması gerekmektedir. Oluşturulan SQL cümlecikler bu 
birincil anahtarlar kullanılarak işlenmektedir. Mantıksal veritabanları 
hem yedekleme için kullanılırlar hem de açık veritabanı oldukları için 
raporlama gibi işlemlerde de kullanılırlar. Böylece birincil 
veritabanının üzerinden yük alınarak performans artışı sağlanmış olur.
Oracle Data Guard 3 farklı koruma seviyesi sunar. Bunlar :  
- Maksimum Koruma : Bu seviyede hiçbir veri kaybı olmaması sağlanır. Birincil veritabanında oluşan redo log dosyası eş zamanlı olarak en ez bir ikincil veritabanına kopyalanıp işlenemelidir. Eğer bir sorun olur da ikincil veritabanına işlenemez ise birincil veritabanı kapatılır.
- Maksimum Kullanılabilirlik : Bu seviye de maksimum korumada olduğu gibi sıfır veri kaybı hedeflenir, fakat hata durumunda veritabanı kapatılmaz, commit işlemi yapılmaz. hata düzelene kadar maksimum performans seviyesine geçilir. böylece veritabanının devamlılığı sağlanır. Hata düzeldikten sonra tekrar maksimum kullanılabilir seviye geçilir.
- Maksimum Performans : Bu seviye varsayılan seviyedir ve birincil veritabanın performansında azalma olmadan koruma sağlar. Birincil veritabanında işlem commit edilir ve online redo log dosyasına yazılır. Bu redo loglar eşzamansız olarak ikincil veritabanına aktarılır ve işlenir. Log dosyalarının aktarılmasında sorun olursa sorun düzeldikten sonra kalınan yerden işleme devam edilir.
Donanımsal ve Yazılımsal gereksinimler : Sistemler aynı 
platformlara sahip olmalıdırlar. Örneğin 32-bit intel Linux sisteme 
sahip olabilirler. Donanımsal olarak bir kısıt yoktur. Farklı sayıda 
işlemci , ram disk birimlerinden oluşabilirler. Oracle veritabının 
enterprise sürüm olması ve sürümlerinin aynı olması gerekmektedir. 
Standart sürümde çalıştıralamamaktadır. Birincil Veritbanının ARCHIVELOG
 modunda çalışması gerekmektedir. Bütün sistemlerde COMPATIBLE 
parametrelerinin aynı olması gerekmektedir.  
Fiziksel Bekleme Veritabanının Oluşturulması :Fiziksel 
bekleme vertabanı oluşturulmadan önce birincil veritabanında birtakım   
      ayarlar ve kontrollerin yapılması gerekir. Bunlar :
-  Force Logging ayarının açılması :             Aşağıdaki 
komutla birlikte veritabanın geçici Tablespace’lerin haricindeki tüm 
aktivitelerin loglanması sağlanır. Bu komuttan            sonra 
NOLOGGING olarak ayarlanmış nesnelerde loglanmaya başlanır. Böylelikle 
bütün aktivitelerin log dosyalarına yazılması ve            ikincil 
veritabanlarına uygulanması sağlanmış olur.
SQL > Alter Database force logging; 
 
- Standby Redo Log oluşturulması : Maksimum Koruma ve Maksimum Kullanılabilirlik seviyelerinin kullanılabilmesi için Standby Redo Logların oluşturulması gerekmektedir. Maksimum performans seviyesinde zorunlu değil fakat kullanılması performans ve koruma açısından fayda sağlar. Standby Redo Log dosyaları bekleme modundanki veritabanlarında çalışırlar. Bekleme modunda çalışma için dizayn edildiklerinden online redo loglara veya arşivlenmiş loglara göre daha fazla koruma sağlarlar. Oluşturulacak olan Standby Redo Logların boyutlarının mevcut Online Redo Logların boyutlarıyla aynı olması gerekmektedir. Aşağıda bir Standby Redo Log dosylarının oluştrulması gösterilmiştir.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10                         ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;
Standy Redo Loglar ikincil veritabanlarında çalışırlar. Birincil 
veritabınında oluşturulması şartı yoktur. Fakat birincil ve ikincil 
veritabanlarının yer değiştirilmesi (switchover) işlemlerinden sonra 
düzgün çalışılabilmesi için birincil vertabanında da aynı şekilde 
Standby Redo Logların oluşturulması yararlı olacaktır. Aşağıdaki sorgu 
sistemdeki Standby Redo Logların durumu gösterir.  
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;         GROUP# THREAD#  SEQUENCE #ARC  STATUS          -------  --------   ---------   --- ----------                  3         1         16         NO  ACTIVE                  4         0          0         YES UNASSIGNED                  5         0          0         YES UNASSIGNED
Birincil Veritabanında Başlangıç Parametrelerinin Oluşturulması : Birincil
 veritabanında oluşan log dosyalarının    ikincil veritabanlarına 
aktaramıyla ilgili parametreler oluşturulacaktır. Bunun yan
ında zorunlu olmasa da , daha sonra veritabanlarının rol değiştirmesi (switchover,failover işlemleriyle) gerekli olan , birincil veritabanının ikincil veritabanı olarak çalışması ile ilgili ayarlar da yapılacaktır. Aşağıdaki hem birincil hem de ikincil veritabanlarına ait ayırıcı bilgiler bulunmaktadır. Bu bilgiler parametrelerde kullanılacatır.
* DB_UNIQUE_NAME parametre değişkenin her veritabanı için 
farklı olan, log transfer ayarlarında kullanılan bir            
değişkendir.Veritabanlarının log transferi seviyesinde birbirlerinden 
ayrılmalarını sağlar.        Aşağıda birincil veritabanına ait bir 
başlangıç parametleri gösterilmektedir.
Yukarıdaki parametrelerin oracle başlangıç paremetre dosyasına yazılması gerekir. Öncelikle mevcut sistemdeki SPFILE bir dosyaya yazılır. Oluşturulan bu dosyaya yukarıdaki parametreler eklenir(Control_files parametresi zaten mevcuttur.) ve bu dosya kullanılarak yeni SPFILE oluşturulur.
SPFILE düzenlemesi istanbul #
ında zorunlu olmasa da , daha sonra veritabanlarının rol değiştirmesi (switchover,failover işlemleriyle) gerekli olan , birincil veritabanının ikincil veritabanı olarak çalışması ile ilgili ayarlar da yapılacaktır. Aşağıdaki hem birincil hem de ikincil veritabanlarına ait ayırıcı bilgiler bulunmaktadır. Bu bilgiler parametrelerde kullanılacatır.
| Veritabani | DB_UNIQUE_NAME* | Oracle Net Service Name | 
| Birincil(Primary) | istanbul | istanbul | 
| İkincil(Secondary) | ankara | ankara | 
DB_NAME=istanbulDB_UNIQUE_NAME=istanbulLOG_ARCHIVE_CONFIG='DG_CONFIG=(istanbul,ankara)'CONTROL_FILES='/opt/oracle/product/10gR2/dbs/control1.ctl',                                        '/opt/oracle/product/10gR2/dbs/control2.ctl'LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/product/10gR2/archive/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
   DB_UNIQUE_NAME=istanbul'LOG_ARCHIVE_DEST_2='SERVICE=ankara LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=ankara'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=30Yukarıdaki parametrelerin oracle başlangıç paremetre dosyasına yazılması gerekir. Öncelikle mevcut sistemdeki SPFILE bir dosyaya yazılır. Oluşturulan bu dosyaya yukarıdaki parametreler eklenir(Control_files parametresi zaten mevcuttur.) ve bu dosya kullanılarak yeni SPFILE oluşturulur.
SPFILE düzenlemesi istanbul #
istanbul # sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 – Production on Sal Mar 18 14:58:19 2008Bağlantı:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit ProductionWith the Partitioning, OLAP and Data Mining optionsSQL>SQL> shutdown immediate;SQL> --Veritabanı kapatıldı.SQL> --Veritabanı kullanıma kapatıldı.SQL> create pfile=’/tmp/pfile.txt’ from spfile;SQL> --Dosya yaratıldı.
Yukarıdaki parametrelerde LOG_ARCHIVE_DEST_1 parametresi 
sistemdeki online redo logların nereye arşivleneceğini belirtiyor. 
LOG_ARCHIVE_DEST_2 ise ikincil veritabanı hakkında bilgiler 
içeriyor.”SERVICE=ankara” parametresi logların ankara veritabanına 
aktarılacağını,”LGWR” aktarma için LGWR yönteminin kullanılacağını (ARCH
 da olabilir di) ,”ASYNC” ise aktarmanın eşzamansız olduğunu belirtiyor.
 Bu parametreler daha önce bahsettiğimiz 3 farklı koruma seviyesinden 
hangisinin kullanılacağını belirler.         
Birincil Veritabanınında Log Arşivlemenin Ayarlanması : Eğer birincil veritabanında log arşivleme etkin değilse aşağıdaki komutlar ile etkin hale getirilmelidir.  
SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE ARCHIVELOG;SQL> ALTER DATABASE OPEN;  
Artık birincil veritabanı hazır hale geldi.
 bundan sonraki ilk işlem birincil veritabanına ait bütün datafile 
dosyalarının ,      Online Redo Logları ve oluşturulan Standby Redo 
Logların ikincil veritabanına kopyalanmasıdır. dosyalar ikincil 
veritabanına              kopyalandıktan sonra birincil veritabanından 
controlfile ve initfile bilgileri aşağıdaki sorgularla alınır ve ikincil
        veritabanına işlenir.
Artık her iki veritabanı başlatılabilir. Birincil veritabanı
ALTER DATABASE OPEN; komutuyla açılarak kullanıma başlanabilir. daha sonra listener hizmetinin açılması gerekir.
istanbul # lsnctrl start;
İkincil veritabanı ise STARTUP MOUNT; komutuyla
açılmalıdır. Daha sonra gelen log dosyalarının işlenmesini sağlamak için aşağıdaki komut çalıştırılır.
Artık yedekleme işlemi başlamış durumdadır.Birincil veritabanında;
Komutu ile bir arşiv log dosyası oluşturulur ve bu dosyanın ikincil veritabanına ulaşıp ulaşmadığı ve işlenip işlenmediği aşağıdaki komutla test edilebilir.İkincil veritabanında :
Birincil veritabanında aşağıdaki sorgu çalıştırılarak sistemin işleyip işlemediği, var ise hatanın sebebi görülebilir.
- İkincil Veritabanı için Controlfile Dosyasının oluşturulması : İkincil veritbanına birincil veritabanına ait controlfile dosyalarının alınıp birebir kopyalanması hatalıdır. Bekleme modundaki ikincil veritabanı için önce birincil veritabanında “Standby Controlfile” oluşturulmalıdır.
- Oluşturulan bu dosya ikincil veritabanına kopyalanmalıdır. Kopyalama SCP ve FTP kullanılarak yapılabilir. ikincil veritabanın da kontrol dosyalarının ‘/opt/oracle/product/10gR2/dbs/control1.ctl’ ve ‘/opt/oracle/product/10gR2/dbs/control2.ctl’ olduğunu, istanbul bilgisayarının ip adresinin ankara bilgisayarındaki /etc/hosts dosyasına tanımlı olduğunu varsayarsak aşağıdaki scp komutları ile kontrol dosyları kopyalanmış olur.SQL > STARTUP MOUNT;SQL >ALTERDATABASECREATESTANDBY CONTROLFILEAS'/tmp/ankara.ctl';
 
 ankara # scp istanbul:/tmp/ankara.ctl /opt/oracle/product/10gR2/dbs/control1.ctl;ankara # scp istanbul:/tmp/ankara.ctl /opt/oracle/product/10gR2/dbs/control2.ctl;
-  İkincil Veritabanında Başlangıç Parametrelerinin Oluşturulması : İkincil veritabanının başlangıç parametreleri birincil veritabanına göre biraz farklılık gösterir.
Buradaki LOG_ARCHIVE_DEST_1 ve LOG_ARCHIVE_DEST_2 ikincil veritabanı birincil veritabanına çevrilirse çalışacaktır.İkincil veritabanında bu parametreler çalıştırılmaz. Bu ayarlar yapıldıktan ve spfile dosyası yukarıda anlatıldığı gibi oluşturulur.Veritabanları başlatılmadan önce Oracle Net ayarlarının yapılması gerekmektedir. aşağıda birincil ve ikincil veritabanına ait TNSNAMES.ora dosyası vardır.DB_NAME=ankaraDB_UNIQUE_NAME=ankaraLOG_ARCHIVE_CONFIG=’DG_CONFIG=(istanbul,ankara)’CONTROL_FILES='/opt/oracle/product/10gR2/dbs/control1.ctl','/opt/oracle/product/10gR2/dbs/control2.ctl'LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/product/10gR2/archive/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=ankara'LOG_ARCHIVE_DEST_2='SERVICE=istanbul LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=istanbul'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=30
 
 ankara =(DESCRIPTION =(ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = ankara)(PORT =1521)))(CONNECT_DATA =(SERVICE_NAME = FINANS))) istanbul =(DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL= TCP)(HOST = istanbul)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME = FINANS)))
 İşletim sisteminde her iki bilgisayarda ping ankara ve ping 
istanbul komutlarının başarılı olması gerekmektedir. Başarılı değil ise 
linux sistemlerde /etc/hosts dosyasında gerekli tanımların yapılması 
gerekmektedir.Artık her iki veritabanı başlatılabilir. Birincil veritabanı
ALTER DATABASE OPEN; komutuyla açılarak kullanıma başlanabilir. daha sonra listener hizmetinin açılması gerekir.
istanbul # lsnctrl start;
İkincil veritabanı ise STARTUP MOUNT; komutuyla
açılmalıdır. Daha sonra gelen log dosyalarının işlenmesini sağlamak için aşağıdaki komut çalıştırılır.
| SQL> ALTERDATABASERECOVER MANAGED STANDBY DATABASEDISCONNECT FROMSESSION; | 
| SQL> altersystem switch logfile; | 
Komutu ile bir arşiv log dosyası oluşturulur ve bu dosyanın ikincil veritabanına ulaşıp ulaşmadığı ve işlenip işlenmediği aşağıdaki komutla test edilebilir.İkincil veritabanında :
| SQL> SELECTSEQUENCE#,APPLIED FROMV$ARCHIVED_LOG ORDERBYSEQUENCE#;        SEQUENCE# APP         ---------    ---                   8     YES                   9     YES                 10      YES                 11      YES | 
| SELECT* FROMV$ARCHIVE_DEST_STATUS WHERESTATUS 'DEFERRED'ANDSTATUS 'INACTIVE'; | 
 
 
Hiç yorum yok:
Yorum Gönder