Oracle Database 11g R2 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
Oradb11 Primary:
İşlemci: 1×4 core
Ram: 4gb
Ip: 192.168.1.30
Hostname: oradb11
Oracle Sid: orcl
Kurulum Dizini: /u01/app/oracle/product/11.2.0/db_1/
Oradg11 Standby
İşlemci: 1×4 core
Ram: 4gb
Ip: 192.168.1.31
Hostname: oradg11
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.
192.168.1.30 oradb11.localdomain oradb11 192.168.1.31 oradg11.localdomain oradg11 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
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/archive 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/initorcldg.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
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oradb11.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ORCLDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg11.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcldg) ) ) |
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
scp initorcldg.ora oracle@192.168.1.31:/u01/app/oracle/product/11.2.0/db_1/dbs/ |
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
orcldg.__db_cache_size=687865856 orcldg.__java_pool_size=16777216 orcldg.__large_pool_size=33554432 orcldg.__oracle_base=’/u01/app/oracle’#ORACLE_BASE set from environment orcldg.__pga_aggregate_target=671088640 orcldg.__sga_target=989855744 orcldg.__shared_io_pool_size=0 orcldg.__shared_pool_size=234881024 orcldg.__streams_pool_size=0 *.audit_file_dest=’/u01/app/oracle/admin/orcldg/adump’ *.audit_trail=’db’ *.compatible=’11.2.0.4.0′ *.control_files=’/u01/app/oracle/oradata/orcldg/control01.ctl’,’/u01/app/oracle/fast_recovery_area/orcldg/control02.ctl’ *.db_block_size=8192 *.db_domain=” *.db_name=’orcl’ *.db_unique_name=’orcldg’ *.db_recovery_file_dest=’/u01/app/oracle/fast_recovery_area’ *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest=’/u01/app/oracle’ *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)’ *.db_recovery_file_dest_size=4385144832 *.db_file_name_convert=’/orcl/’,’/orcldg/’ *.log_file_name_convert=’/orcl/’,’/orcldg/’ *.fal_client=’ORCLDG’ *.fal_server=’ORCL’ *.log_archive_config=’DG_CONFIG=(orcl,orcldg)’ *.log_archive_dest_2=’SERVICE=orcl NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl’ *.log_archive_dest_1=’LOCATION= /u01/app/oracle/archive’ *.log_archive_dest_state_2=’ENABLE’ *.log_archive_format=’%t_%s_%r.arc’ *.log_archive_max_processes=10 *.memory_target=1656750080 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile=’EXCLUSIVE’ *.standby_file_management=’AUTO’ *.undo_tablespace=’UNDOTBS1′ |
Ş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
SQL> alter database create standby controlfile as ‘/u01/control01.ctl’; Database altered. SQL> |
Create ettiğim controlfile01.ctl dosyasını secondary db ye kopyalıyorum
scp -r /u01/control01.ctl oracle@192.168.1.31:/u01/app/oracle/oradata/orcldg/control01.ctl
scp -r /u01/control01.ctl oracle@192.168.1.31:/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 oracle@192.168.1.31:/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 mount modda açıyorum
SQL> startup mount; ORACLE instance started. Total System Global Area 1653518336 bytes Fixed Size 2253784 bytes Variable Size 1006636072 bytes Database Buffers 637534208 bytes Redo Buffers 7094272 bytes Database mounted. |
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
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/u01/rman/%U’; RMAN> backup database plus archivelog; |
Yedek alma işmemim bitti. /u01/backup dizini altındaki Rman yedeğimi standby db ye kopyalıyorum
scp -r /u01/rman/* oracle@192.168.1.31:/u01/rman/
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/’;
RMAN> catalog start with ‘/u01/rman/’; |
Restore database; komutuyla standby veri tabanımızı yedekten geri dönüyorum
RMAN> restore database; |
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