Oracle Database 11g R2 Dataguard Kurulumu

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir