9 Şubat 2011 Çarşamba

Oracle Restart

Merhaba,

11gR2 ile birlikte grid kurulumu içerisine ASM kurulumu da dahil edildi ve Oracle Restart özelliği eklendi. Oracle Restart aslında adından da anlaşılabileceği gibi Oracle'ın belirli bileşenlerinin herhangi bir işletim sistemi kapanması, hatası durumunda yeniden başlatılması operasyonudur. Bu kurulumu artık RAC olmayan, tek instance kurulumlar için de yapabiliyorsunuz. Halihazırda gerçekleştirilen DBA eğitimlerinde Oracle Restart ve Grid kurulumu detaylı olarak anlatılmaktadır.

Oracle Restart'ın yönetebileceği belirli bileşenler bulunmaktadır. Bunlar;

1) Veritabanı Instance'ı
2) Oracle Net Listener
3) Veritabanı Servisleri
4) ASM Instance'ı
5) ASM Disk Grupları
6) Data Guard için ONS (Oracle Notification Services) Servisleri

Dikkat ederseniz bu listenin içerisinde Enterprise Manager bulunmuyor. EM'yi Oracle Restart aktif olsa bile sizin elle açmanız veya kapamanız gerekmektedir. Oracle Restart yukarıdaki bileşenlerin düzgün bir sıra ile başlatılmasını garanti eder ve belirlenen sıraya göre aşamalardan geçilir. Örneğin ASM Instance'ını ayağa kaldırmadan, Oracle Instance'ını ayağa kaldırmaya çalışmaz.

Aslında Oracle Restart'ın yaptıklarını biz de gerekli script'leri koşarak yapabiliyoruz. Oracle Restart bize yönetim kolaylığı ve bir düzen sağlıyor. Arka planda koşan script'lerin tamamı bizim de ulaşabileceğimiz ve elle çalıştırabileceğimiz script'ler veya servislerdir.

Oracle Restart'ın kurulumu esnasında işletim sistemi üzerindeki /etc/inittab dosyası güncellenir ve içerisine bir takım script'ler eklenir. Bu script'ler ortam değişkenlerini belirler, tanımlar ve atamalarını yapar ardından Oracle Restart daemon ve işlemlerini başlatır. Oracle Restart'ı durdurmak için bir aksiyon alırsak, kurulum sırasında yaratılan script'ler inittab içerisinde kalmaya devam eder. Sonlanan yalnızca Oracle Restart daemon'ları ve işlemleri olacaktır. Bazı OR görevleri root kullanıcısının kimliği altında çalışırken, bazıları ise Grid kullanıcısının buyruğu altında koşarlar. Bir önemli not, kurulum sırasında yaratılan script'lerin elle çalıştırılması desteklenen bir operasyon değildir.

OR'nin durumunun kontrolü için kullandığımız araç "CRSCTL"dir. Oracle Restart konfigürasyonunu görebilmek için;

$ crsctl config has

HAS: High Availability Service

Otomatik Oracle Restart özelliğini devreye alabilmek veya devreden çıkarabilmek için;

$ crsctl [enable | disable] has

Oracle Restart'ı tamamen kapatmak veya açmak için;

$ crsctl [start | stop] has

Örnek;

$ crsctl config has
CRS-4622: Oracle High Availability Services autostart is enabled.

/etc/inittab içerisine eklenen script'lerin çalıştırılmasına yarayan satırın örneği ise;

h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1

ohasd'nin açılımı ise Oracle High Availability Services Daemon'dır.

Kurulumla gelen script'in (wrapper script) amacı bu ohas daemon'ınını ve bununla birlikte koşacak olan diğer işlemleri de başlatmaktır. Bu script root kullanıcısının hakları ile koşmaktadır.

$ crsctl stop has
CRS-4549: Stopping resources.


Oracle Restart SRVCTL aracını içerir ve bu araç ile Oracle Restart'ın bileşenlerini kontrol edebilirsiniz. Kontrolden kastım, başlatmak, durdurmak ve yönetmektir. Grid kurulumunu takip eden Oracle veritabanı kurulumundan sonra SRVCTL aracı bütün ORACLE_HOME dizinleri altında tanımlanır ve yaratılır. SRVCTL'yi birçok bileşen için kullanabileceğiniz bahsetmiştim, onun için kullanmadan önce ORACLE_HOME parametresini göstermeniz gerekmektedir.

$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid
$ $ORACLE_HOME/bin/srvctl
$ which srvctl
/u01/app/oracle/product/11.2.0/grid/bin/srvctl


Arayüz ile yarattığınız bileşenlerden sonra Oracle Restart konfigürasyonu otomatik olarak güncellenecektir. Mesela Grid kurulumunu tamamladınız ve Oracle Restart'ın devrede olduğunu gördünüz. Bu aşamadan sonra SQL komutu ile bir veritabanı yaratırsanız, Oracle Restart bu durumu otomatik olarak güncellemeyecektir. Güncellemez ise servisini de ayağa kaldırmaz ve varlığını bilemez. Bunun yerine Oracle Universal Installer veya DBCA (Database Configuration Assistant) kullanarak veritabanını yaratmış olsaydınız Oracle Restart konfigürasyonu da güncellenecekti. Burada yaptığınız tek bir komut satırı değişikliğini Oracle Restart algılayabiliyor o da ASM için yeni bir disk grup yaratmanız durumudur. Hangi metod kullanılırsa kullanılsın Oracle Restart bu durumu algılayacaktır. Oracle Restart devrede ise Oracle, SRVCTL aracının, Oracle Restart bileşenleri için kullanılmasını şiddetle tavsiye etmektedir. SRVCTL'nin nasıl kullanıldığını görebilmek için;


$ srvctl -h


$ srvctl start database -d ORCL -o mount
$ srvctl start listener -l LISTENER
$ srvctl start service -d ORCL -s "service1"
$ srvctl start diskgroup -g "DATA,FRA"
$ srvctl start asm
$ srvctl start eons -v
$ srvctl start ons


Bütün bunları yazmak yerine bir ORACLE_HOME altında ne var ne yok aşağıdaki şekilde devreye alabilirsiniz;


$ srvctl start home -o ORACLE_HOME -s STATE_FILE


Buradaki state file ORACLE_HOME altındaki Oracle Restart bileşenlerinin durumlarını göstermektedir. Bu durumlar örneğin veritabanı için nomount, mount, open olarak gösterilebilir. Bu dosya srvctl status home komutu koşulduktan sonra yaratılmaktadır. -s komutunu kullanıyorsanız gerçek dizini (absolute path) ve state file'ın adını göstermeniz gerekmektedir. Start yerine stop komutunu da kullanabilirsiniz. Tek fark eden vereceğiniz ek parametreler olacaktır. Örneğin -o mount yerine -o abort gibi.

$ srvctl status lsnr
Listener LISTENER is enabled
$ srvctl status database -d orcl
Database is running.

Verebileceğiniz diğer srvctl opsiyonları;

asm: ASM Instance
db: Veritabanı Instance
dg: Oracle ASM disk grubu
filesystem: Oracle ASM file sistemi
home: Oracle Home veya Oracle Clusterware Home
lsnr: Oracle Net Listener
ons, oens: Oracle Notification Services
serv: Veritabanı Servisi

Config komutunu kullanarak bir bileşen için Oracle Restart konfigürasyonunu görebilirsiniz;

$ srvctl config database -d orcl
Database unique name: orcl

Database name: orcl
Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/orcl/spfileorcl.ora
Domain: ogan.com
Start options: open
Stop options: immediate
Database role:
Management policy: automatic
Disk Groups: DATA,FRA
Services: service1

Oracle Restart'a elle bileşen eklemek mümkündür ve bunu yerine getirmekte olan komutun adı "add"dir.

$ srvctl add listener -l ORCL_LISTENER -p TCP:1522 -o /u01/app/oracle/product/11.2.0/grid

11g'de listener'ın varsayılan yerinin -eğer grid kurulmuş ise- grid olduğunu hatırlatmak isterim. Yukarıdaki komut ile 1522 portunu dinlemek üzere grid ORACLE_HOME'u altında ORCL_LISTENER isminde bir servisi Oracle Restart'a eklemiş olduk.

İyi çalışmalar.

Ogan

Hiç yorum yok:

Takip et: @oganozdogan