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
Hocam emeğine sağlık. Kendi ana dilimizdeki bir oracle kaynağından yararlanmak güzel.
YanıtlaSilmerhaba asm yi vmware sanal makineye kurulu oralce linux üzerine kurmanın avantajları ve/veya dezavantajları var mı acaba?
YanıtlaSil