Hurriyet

22 Haziran 2012 Cuma

Oracle Veritabanı: ASM - Automatic Storage Management

ASM Nedir?

Asm veritabanındaki verileri bütün disk üzerine dağıtan, veri şebekesini yaratıp bunun düzenlemesiyle ilgilenen yapıdır. Asm verinin otomatik düzenlemesiyle ilgilenir ve disklerin ayarlanmasını sağlar.

ASM Oracle database'inde 10g sürümüyle gelen bir özelliktir. ASM database datafile'larının, controlfiles'larının ve logfile'larının yönetimini kolaylaştırır. Bunu yapmak için de komutları sql benzeri bir yapıda kurar. Bu şekilde dba'lere kolaylık sağlar.

ASM sistemi disklerin kontrolünü alır ve bunları dba'lere logical partitionlar halinde ayırma kolaylığını sağlar. Dba'ler bu şekilde  daha fazla sistem bilgisi edinmeye gerek duymazlar.

Diskler daha rahat bir şekilde eklenebilir. Tek bir komutla yeni eklene diskler sistemde gözükür ve bu diskler üzerinde mirroring ve striping işlemleri yapılır.

Yine ASM sayesinde I/O'lar bütün diskler üzerine eşit dağıtılır. Bu işlem "Striping" olarak tabir edilir. Bir data birden fazla diskte parçalı olarak saklanabilir.

Yukarıda anlattığımız striping konusunu tamamlayan bir başka özellikte "Mirroring"'dir. Her türlü bilgi kaybolma ihtimaline karşı başka disklerde mirror edilir; yani kopyalanır ve bu kopya  başka disklere dağıtılır. Bu şekilde disklerden bir tanesi bozulursa; bu bozukluktan dönme şansı doğar.

Veriler diskler arasında değiştirilebilir, dizinler başka yerlere taşınabilirler.

Aynı diskler birden fazla veritabanı tarafından paylaşılabilir.

ASM Nereye Kurulmalıdır?

ASM best practice olarak kurulumların başka bir Oracle Home'a mümkünse farklı bir diske yapılmasını tavsiye eder. Böylece "Upgrade" işlemleri veritabanını etkilemez.

ASM Kurulu Bir Database'de Instance Nasıl Başlatılır?

İlk önce +ASM instance'ı açılır. Aşağıdaki gibi giriş yapıldıktan sonra sysasm yani asm yöneticisi  veya sysdba, database yönetcisi olarak giriş yapılabilinir.


 export ORACLE_SID=+ASM  
 $ sqlplus "/ as sysdba"  




ASM'de Diskgroup Nasıl Yaratılır?

ASM'e diskgroup'ları aşağıdaki "create diskgroup" syntax'ı şeklinde eklenebilinir. Diskgroup'u önce bir tane diskten oluşturup sonra bu disk grubuna başka diskler ekleriz ve bu disk gruplarının elemanlarını arttırırız.

Bu örneğimizde oluşturduğumuz disk grubunun adı disk5'tir. External Redundancy diyerek yedekleme işini engelleriz.

ASM yedekleme seviyeleri:

  • High  : 2 kere yedeklenir.
  • Normal : 1 bir kere yedeklenir.
  • External : 0, hiç yedeklenmez.

ORCL:VOL5 diskin adıdır.


 SQL> create diskgroup disk5 external redundancy disk 'ORCL:VOL5';  
 Diskgroup created.  
 SQL> select group_number,disk_number,mode_status,name from v$asm_disk;  
 GROUP_NUMBER DISK_NUMBER MODE_STATUS  NAME  
 ------------ ----------- -------------- -------------------------------------  
       0      5 ONLINE  
       1      0 ONLINE     VOL1  
       1      1 ONLINE     VOL2  
       1      2 ONLINE     VOL3  
       1      3 ONLINE     VOL4  
       2      0 ONLINE     VOL5 

Genel olarak Oracle 2 tane disk grubunun olmasını tavsiye eder. Bir tanesi datafile'ların yönetimi için kullanılacak olandır. Diğeri de backupların bulunacağı ayrıca datafile'ların yedekleneceği bir disk grubudur. Aşağıda bununla ilgili bir örnek vardır.

 CREATE DISKGROUP data  EXTERNAL REDUNDANCY DISK '/dev/d1', '/dev/d2', '/dev/d3', ....;  
   
 CREATE DISKGROUP recover EXTERNAL REDUNDANCY DISK '/dev/d10', '/dev/d11', '/dev/d12', ....;  

Diskgroup'lara Disk Nasıl Eklenir?

Yukarıdaki örneğimizden yola çıkarak data disk grubumuza diskimizi aşağıdaki ifadeyle ekleyebiliriz. Disk'i ekledikten sonra bu disk'i isimlendirirsek bizim için kullanımı daha kolay olur. Bu /dev/d15 ismi disk Linux sistemi tarafından atanan isimdir. Bu ismi kullanırız disk'i atarken.


ALTER DISKGROUP data ADD DISK
     '/dev/d15' NAME VOL15;

Diskgroup'lardan Disk Nasıl Drop Edilir?

Disk'ler aşağıdaki ifadeyle drop edilir. Logical olarak yarattığımız, diskimize referans olarak kullandığımız VOL15 ismini silmek için kullanabiliriz.


 ALTER DISKGROUP data DROP DISK VOL15;  

ASM'deki Disk Kullanım Miktarı Nasıl Bulunur?

Aşağıdaki sorguyu kullanabilmemiz için +ASM instance'ına girmemiz gerekir.


 export ORACLE_SID=+ASM  
 $ sqlplus "/ as sysdba" 

Bu şekilde ASM tablolarına erişim sağlarız. Sonra aşağıdaki komutu gireriz.


 SQL> SELECT name, free_mb, total_mb, free_mb/total_mb*100 "%" FROM v$asm_diskgroup;   
   
 NAME               FREE_MB  TOTAL_MB     %  
 --------------------          ----------------  --------------------- -----------  
 DATA                219314  1638400 13.3858643  
 REDOLOG1            86178   102400 84.1582031  
 REDOLOG2            86178   102400 84.1582031  

Bir başka yöntemde hazır ASM instance'ındayken asmcmd command line'ına girip orada lsdg komutunu çalıştırmaktır.

 ASMCMD> lsdg  
 State  Type  Rebal Unbal Sector Block    AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name  
 MOUNTED EXTERN N   N     512  4096 1048576   11264   9885        0      9885       0 DATA/  
 MOUNTED EXTERN N   N     512  4096 1048576   10240   9906        0      9906       0 RECOVER/  

Automatic File Management Nasıl Sağlanır?

Automatic File Management'ı db_create_file_dest,db_recovery_file_dest ve db_recovery_file_dest_size parametrelerini ekleriz. Bu şekilde database file'ları artık ASM diskgruplarımızda yaratılmaya başlanır.


ALTER SYSTEM SET db_create_file_dest = '+DATA' scope=SPFILE;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 100G scope=SPFILE;
ALTER SYSTEM SET db_recovery_file_dest = '+RECOVER' scope=SPFILE;


ASM ile İlgili Tablo ve View'lar


 V$ASM_DISK - ASM diskleri  
 V$ASM_DISK_STAT  
 V$ASM_DISKGROUP - ASM diskgroupları  
 V$ASM_DISKGROUP_STAT
 V$ASM_OPERATION  



Referans:
http://www.dba-oracle.com/t_asm_external_redundancy.htm
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmdiskgrps.htm#OSTMG137
http://www.orafaq.com/wiki/ASM_FAQ
http://www.oracle-base.com/articles/10g/automatic-storage-management-10g.php


2 yorum:

  1. Hocam emeğine sağlık. Kendi ana dilimizdeki bir oracle kaynağından yararlanmak güzel.

    YanıtlaSil
  2. merhaba asm yi vmware sanal makineye kurulu oralce linux üzerine kurmanın avantajları ve/veya dezavantajları var mı acaba?

    YanıtlaSil