13 Kasım 2015 Cuma

ASM Instance Yönetimi

ASM INSTANCE YÖNETİMİ
ASM instance’ı ORCL instance’ı gibi çalışır. Ancak ORCL instance’ı gibi bir Storage’e sahip değildir, çünkü zaten kendisi bir database’dir. İnput ve output için tasarlanmış bir yapıdır. Tek bir disk olması durumunda bizim yapacağımız işlem diskin okuma ve yazma hızına göre işlem gerçekleştirmektir. ASM birden fazla disk yapısında okuma yazma işlemini birden fazla diske böler ve performansı arttırır. Normal bir file sistem yapısında çalışırsak, her data file’e isim vermek zorunda kalırız. Çok sayıda data file olursa işimiz zorlaşacaktır. ASM bu işlemi kendisi yapar.ASM (Automatic Storage Management) özelliği ile herhangi bir dosya sistemine (FAT32, NTFS, EXT2, EXT3 vb.) ihtiyaç duymaz. Block sevisyesinde okuma ve yazma işlemi yapar ve load balancig (Yük Dengelem) işlemi yaptığından dolayı daha performanslı çalışır.
ASM Instance’ı çok fazla bellek alanına ihtiyaç duymaz. ASM’ye ait metadata ASM’ye ait shared pool var.
Yukarıdaki resmi incelediğimizde görmekteyiz ki ASM de kendi içinde MEMORY ve PROCESSES olarak ikiye ayrılır.
ASM İnstance’ının da Memory ve Processes parçalarından oluştuğunu söyledik. Şimdi bu parçaları inceleyelim.ASM’nin SGA’sı database instance’ından farklı olduğu slayttan anlaşılmaktadır. Ki ASM Cache ve Free Memorybileşenlerinin ek olarak geldiğini ve yine database instance’ıyla kıyasladığımızda sadece shared pool ve large poolalanları bulunmakta. Processes içerisinde çeşitli CPU bileşenleri bulunduğu slayttan anlaşılmakta.  Şimdi bu iki İnstance bileşenini inceleyelim. Memory bileşenleri:
Shared Pool : Metadata bilgisi için kullanılır.
Large Pool : Paralel operasyonlar için kullanılır.
ASM Cache : Rebalance işlemi sırasında blokların okuma ve yazma işlemi için kullanılır. Okunacak veriyi de yazılacak veriyi de bilir.
Free Memory : Memoryde ayrılmamış alandır.
Processes :
RBAL : Rebalancing işlemini gerçekleştirir. ASM disklerinin arasındaki veriyi dengeler.
ARBn : Rebalancing işlemine destek verir. Balance işlemini gerçekleştiren process’dir.
GMON : Disk seviyesindeki aktivitelerin yönetilmesinden sorumludur.
MARK : Allocation units’lerin (Allocation Unit’in ne olduğu ile ilgili ilerleyen konularda bahsedeceğim) işaretlenmesinden sorumlu olan process’dir.
Onnn : ASM Insatance’ına gelecek bağlantı isteklerinin bir havuzda toplanmasını sağlayan ve yönetimini sağlayan process’dir. ASM insance’ı ilk açıldığında ortaya çıkar. Daha sonra bağlantı isteği geldiğinde yeniden çalışır. Bağlantının olmadığı durumlarda çalışmasını durdurur.
PZ9n : Bir veya birden fazla paralel göreve sahip, PZ9n process’i GV$’lı viewlardan Cluster sisemler için, veri çekme amacı taşır. V$’lı olanlar cluster olmayan yapılar için kullanılmaktaydı.
ASM Instance Parametreleri

ASM instance’ının kendine ait parametre dosyası bulunmakta. Parametre dosyasının içerisi aşağıdaki gibidir.
Yukarıdaki resmi incelediğimizde görmekteyiz ki ASM de kendi içinde MEMORY ve PROCESSES olarak ikiye ayrılır.
ASM İnstance’ının da Memory ve Processes parçalarından oluştuğunu söyledik. Şimdi bu parçaları inceleyelim.ASM’nin SGA’sı database instance’ından farklı olduğu slayttan anlaşılmaktadır. Ki ASM Cache ve Free Memorybileşenlerinin ek olarak geldiğini ve yine database instance’ıyla kıyasladığımızda sadece shared pool ve large poolalanları bulunmakta. Processes içerisinde çeşitli CPU bileşenleri bulunduğu slayttan anlaşılmakta.  Şimdi bu iki İnstance bileşenini inceleyelim. Memory bileşenleri:
Shared Pool : Metadata bilgisi için kullanılır.
Large Pool : Paralel operasyonlar için kullanılır.
ASM Cache : Rebalance işlemi sırasında blokların okuma ve yazma işlemi için kullanılır. Okunacak veriyi de yazılacak veriyi de bilir.
Free Memory : Memoryde ayrılmamış alandır.
Processes :
RBAL : Rebalancing işlemini gerçekleştirir. ASM disklerinin arasındaki veriyi dengeler.
ARBn : Rebalancing işlemine destek verir. Balance işlemini gerçekleştiren process’dir.
GMON : Disk seviyesindeki aktivitelerin yönetilmesinden sorumludur.
MARK : Allocation units’lerin (Allocation Unit’in ne olduğu ile ilgili ilerleyen konularda bahsedeceğim) işaretlenmesinden sorumlu olan process’dir.
Onnn : ASM Insatance’ına gelecek bağlantı isteklerinin bir havuzda toplanmasını sağlayan ve yönetimini sağlayan process’dir. ASM insance’ı ilk açıldığında ortaya çıkar. Daha sonra bağlantı isteği geldiğinde yeniden çalışır. Bağlantının olmadığı durumlarda çalışmasını durdurur.
PZ9n : Bir veya birden fazla paralel göreve sahip, PZ9n process’i GV$’lı viewlardan Cluster sisemler için, veri çekme amacı taşır. V$’lı olanlar cluster olmayan yapılar için kullanılmaktaydı.
ASM Instance Parametreleri
ASM instance’ının kendine ait parametre dosyası bulunmakta. Parametre dosyasının içerisi aşağıdaki gibidir.

INSTANCE_TYPE: Bu parametre bir ASM instance’ı için olmazsa olmazdır. Mutlaka tanımlanması gereken zorunlu alandır. ASM instance’ları için “ASM” olarak tanımlanması gerekir. Veri tabanı instance’ları için RDBMS olarak tanımlanmaktadır.
ASM_POWER_LIMIT: Rebalancig işleminin hızını yarlayan parameterdir. Varsayılan olarak 1′dir. En yüksek değeri 11 olabilir. Performansı etkileyeceğinden kullanıcı bağlantı sayısı baz alınarak limit belirtilmeli. Gündüz yapılacak rebalancing işlemi için değer 1 olması demek kullanıcıların etkilenmeden işlemin yapılması demek. Ancak gece yapılan işlemde 11 olması da sorun çıkarmayacaktır. Tabi bu tespitler bir çok neden bağlı olarak farklılık gösterebilir. (veri boyutu, kullanıcı bağlantı sayısı gibi.)
ASM_DISKSTRING: Bu değerin null olması kimi zaman bir ASM instance’ı için yeterli olmaktadır ancak işletim sistemi seviyesinde tanımlanmış disk’lerin dizin adlarını yazdığımız zamansa ASM’nin disk ünitelerinin mount sürelerini uzatabiliriz. Birçok koşulda null olması yeterlidir.
ASM_DISKGROUPS: ASM instance’ının disk gruplarını göstermektedir. Bu parametrenin de bir varsayılan değeri yoktur ve 11g ile gelen “Oracle Restart” özelliğinde ASM instance’ının sahip olduğu bütün disk gruplar otomatik olarak mount edilir.
ASM_PREFERRED_READ_FAILURE_GROUPS: İleride olası durumlar için tanımladığımız failure, yani başarısızlık gruplarını ifade eden parametredir. Amacı arttırılmış kopyalama ve daha fazla sağlamlık için kullanılacak disk’lerin gruplanmasıdır.
DIAGNOSTIC_DEST: DIAGNOSTIC_DEST parametresi içerisinde bütün dump’ların bulunduğu dizinlerin kümelenmiş dizin ismi durmaktadır.
LARGE_POOL_SIZE: Bu alan ASM tarafından otomatik olarak yönetilmektedir.
REMOTE_LOGIN_PASSWORDFILE: Bağlantı kurmak isteyen kullanıcıların isteklerini karşılar ve şifre, kullanıcı adı kontrolü yapar. Default değeri EXCLUSIVE’dir.
ASM Dynamic Performance View

ASM ile ilgili her türlü bilgi Database ve ASM instance altındaki viewlarda tutulur. Bu viewları bulmak için aşağıdaki sorguyu kullanırız.
                Select * from dict where table_name like %ASM%;
Yukarıdaki sorgu çalıştırdığımızda üstteki tablodaki bilgileri görebiliriz. Aşağıdaki şemada da viewların birbirleriyle olan ilişkisel durumları göserilmiştir.

Bu viewlar kullanılarak yazılacak olan force viewlar ya da SQL syntaxları ile ASM diskler monitör edilebilir.
ASM System Yetkileri:
ASM instance’ı data dictionary’ye sahip değildir. Bu neden le ASM’ye bağlanmanın tek yolu system  haklarını kullanmaktır.
SYS kullanıcısı SYSASM hakları ile otomatik olarak oluşturulur.
Sistem haklarına sahip olan 3 tane kullanıcı vardır. Bunlar SYSASM, SYSDBA ve SYSOPER.
SYSASM: ASM instance’ı için full yönetimsel haklara sahiptir.
SYSDBA: Oracle Database tarafında olduğu gibi ASM tarafında da tam hakka sahiptir.
SYSOPER: SYSOPER’le ilgili olaraksa söylemek istediğim, CREATE DISKGROUP gibi komutları çalıştıramayacak olması. ALTER DISKGROUP koşabilir ve hatırlayınız, SYSOPER’in bir veritabanı instance’ında SYSDBA’den farklı olarak create / drop database yetkileri bulunmamaktaydı fakat veritabanını açıp kapatabiliyordu.
Enterprise Manager Üzerinden ASM Kullanıcılarını Yönetmek
Yukarıda saydığımız kullanıcılar Oracle’ın Otomatik olarak oluşturduğu Admin hesaplarıydı. Şimdi biz Enterprise Manager Üzerinden nasıl kullanıcı oluşturur ve hak atamaları yaparız ona bakalım.
Yukarıdaki slayta baktığımızda. Enterprise Manager ekranında Users tabına geldiğimizde kullanıcılarımızı görürüz. Kullanıcıların Sağ Üstünde Create ikonu var tıkladığımızda User Name ve parola belirleyebileceğimiz alanları görmekteyiz. Hemen alt kısmındaysa Atayabileceğimiz haklar bulunmakta. Çok fazla bir seçenek yok zaten. SYSDBA, SYSASM, SYSOPER bu üç yönetim hakkından birini vermemiz gerekmekte. Neden üç tane diye soracak olursak. ASM’nin yönetimi zaten bunları gerektirir. Ve ASM’yi çok kişi yönetmemeli.
ASM Instance’ını Durdurma (Stopping) ve Başlatma (Starting):,
ASM instance’ıda Database instance’ı gibi durdurulup, başlatılır. Aşağıda ASM instance’ını kapatıp açma örneği görünmektedir. ASM instance’nı kapatıp açmak için öncelikle terminal penceresinden ASM’yi set etmeliyiz. Aşağıdaki örnekte de görüldüğü gibi. Sırasıyla aşağıdaki işlemleri yaparız.
                               [oracle@ora2   ̴]$ . oraenv
                               [oracle@ora2   ̴]$ ? +ASM
                               [oracle@ora2   ̴]$  sqlplus / AS SYSASM
Bu şekilde set işlemi bitmiş ve SYSASM ile giriş yaptık. Artık start / stop yapabiliriz. Aşağıdaki işlemi aynen uygulayınız.
 ASM instance kapalıyken Oracle instance start olamaz. Çünkü Oracle instance’ın kullanacağı tüm data ASM üzerinde tutulmakta.
ASM Instance Açma metodları: Oracle Instance’da olduğu gibidir. Aynı komutlar geçerlidir.
ASM Instance Açma Metodları:
Start up Force: Restart etmek için kullanılır. Eğer çalışan bir ASM instance var ise Shutdown abort ile kapatılır. Ardından yeniden başlatılır. Debug işleminde ve anormal durumlarda kullanılır. Diğer durumlarda kesinlikle kullanılmamalıdır.
Start up Mount ya da Open: Belirli disk gruplarını başlatır. Eğer başka bir başlatma metodu (nomount, force, restrict) kullanılmadıysa varsayılan olarak bu kullanılır. Yani startup tek başına yazıldığında bu komutla beraber varsayılan olarak açılır.
Start up Nomount: Herhangi bir disk grubunu mount olarak açmadan başlatmak istersek bu komut kullanılır.
Startup Restrict: Bazı durumlarda sadece yetkili kullanıcıların sisteme bağlanmalarını isteyebiliriz. İşte bu aşamada restrict’i devreye sokarız. ASM’yi kapatırız ve restrict ile açarız. O zaman yönetim bizden başka kimse Database’e bağlanamayacaktır.
NOT: RAC sistemi bir database yapımız dahi olsa ASM üzerinde tüm databaseler yönetilebilir.
   
ASM Instance Kapatma Metodları:
Shutdown Normal: Çok kullanılmayan bir yöntemdir. Çünkü kullanıcıların işlerini bitirip session’larını bitirmeleri beklenir. kullanıcıların işlerini ne zaman bitireceğini bilemeyiz. O yüzden tercih etmeyiz.
Shutdown Immediate/Transactional: Bağlı kullanıcıların oturumlarını kapatır. En çok kullandığımız ve kullanacağımız bir yöntemdir. En hızlı biçimde kapatılır. Tutarlıdır.
Shutdown Abort: Direk kapatır.
SRVCTL Komutunu Kullanarak Start ya da Stop etmek.
Server Control ASM Instance’ını açmak ve kapamak için kullanılabilir. Kullanımını örneklerle inceleyelim.
                $ . oraenv
                ORACLE_SID = [oracle] ? +ASM
                The Oracle bas efor
                        ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle
                $ srvctl start asm –o mount
                $ srvctl stop asm -f
SRVCTL komutunu kullanarak ASM’yi START et ve MOUNT modda. Anlamına gelir.
SRVCTL komutunu kullanarak ASM’yi STOP et ve Force (restart) anlamına gelir.
SRVCTL syntaxı aşağıdaki gibi
    Srvctl start asm [-o <start seçeneği>]                                                                                                             
Start seçeneği derken FORCE, MOUNT, NOMOUNT ya da RESTRICT seçenekleridir.
    Srvctl stop asm [-o <start seçeneği>]                                                                                              
    Stop seçeneği derken NORMAL, IMMEDIATE, TRANSACTIONAL ya da ABORT.
ASMCMD Kullanarak Start ya da Stop Etmek:
SQL Dilini kullanmadan komut satırı ile start / Stop yapmamızı ağlar. Öncelikle ASM’yi set etmemiz gerekmekte.
                $ . oraenv
                ORACLE_SID = [oracle] ? +ASM
                $ asmcmd
                Connected to an idle instance.
                ASMCMD> startup
                ASMCMD> shutdown –abort
ASMCMD ile ilgili olarak seçenekler aşağıdaki gibidir.
Start için seçenekler:
–nomount : Diskgrupları mount olmaksızın ASM instance’ı başlatılır.
–restrict : ASM Instance diğer bütün kullanıcıların girişini engelleyerek başlar.
–pfile <pfile.ora> : Pfile’ı düzenleme modunda açarak AMS instance başlar.
Shutdown için seçenekler:
    –Immediate : ASM tutarlı olarak kapatılır. Yani bağlı kullanıcıların bağlantısı kesilir ve kapatılır.
    –Abort: Direkt olarak kapatır.
Oracle Disk Grupları:
ASM disk gruplarını kullanılması veri tabanı sistem performansında pek çok yoldan avantajlar sağlar. I/O Performansını yükseltir. Veri tabanı uygunluğu artar.  Disk gruplarına yeni diskler ilave edebilir. Birden fazla veri tabanı için ilave boş disk alanları oluşturabiliriz.
Konunun ilerleyen aşamalarında Failure gruplara disk eklemek,  disk gruplarının ayarlanması (mirrored) ve disk gruplarının eklenmesi, çıkarılması ve düzenleme, yönetilmesi ile ilgili konuları anlatıyor olacağım.
ASM Disk Grubu mimarisi:
ASM Instance parametrelerinden bahsederken ASM_PREFFERED_READ_FAILURE_GROUPS parametresine değinirken Failure Gruops’dan bahsetmiştik. Disk grupları birden fazla diskin tek bir birim olarak yönetildiği yapılardır. ASM diskleri DBA yada  veri tabanı sistemi tarafından otomatik olarak isimlendirilmek suretiyle oluşturulur. Diskler içindeki dosyalar aşağıda detaylı olarak anlatacağım 2 türde paylaştırılır. Coerse-grain stripingve Fine-grain striping olarak iki türde paylaştırılır.
Disk grubu içerisindeki disk kontroller gibi ortak bir kaynak kullanan, birden falza diskten meydana gelen yapıyafailure group denir. Disklerin bozulması gibi disklerin başına gelen felaket durumunda failure group içindeki diskler disk grubu için erişilemez olabilir.
Server yapılarında olduğu gibi ASM disk grupları için mirroring uygulayabiliriz. Disk gruplarının 3 çeşit mirroring işlemi vardır.
1.       External redundancy: Eğer failure grup içerisindeki diskler herhangi bir RAID contoller ile yapılandırılmamışsa bu seçenek kullanılabilir. Tek bir disk belirtilebilir.
2.       Normal Redundancy: Çift taraflı mirroring desteği sunar. Ve en az 2 failure gruptan oluşturulur. Disklerden birinin çökmesi veri kaybına veya DBA için bir sıkıntıya, veri kaybına neden olmayacaktır.
3.       High Redundancy: Disk gurubunda en az 3 failure gurup olması gerekmektedir. İki failure grup çökse bile veri tabanı çalışır. Ve diskler çalışmalarına devam eder.
ASM Diskleri:
ASM Diskleri oracle disk grupları içerisinde yer alan depolama alanlarıdır. Sistem yöneticisinin formatlamış olduğu diskleri bir veya birden çok disk grubu içerisinde saklanabilmesidir. ASM diskleri hem striping (bölerek) hem de Mirroring (Yedekli) özelliğini içinde barındırır. Datayı mirror olacak şekilde yazmak DBA (Database Administrator) tarafından tercih edilirken, Striping işlemi DBAyin isteğine bakmaksızın ASM kendisi yapar.
Diskler üzerinde Allocation Units dediğimiz yapılar vardır. Allocaiton Units’lerden ASM Instance’ını anlatırken bahsetmiştim. Şimdi Allocation Unit’leri anlatacağım.
Allocation Units: diskler üzerinde mantıksal olarak bulunan 1 mlik bloklar yada extendler olarak düşünebiliriz.  Oracle 11G sistemlerde allocation unitlerin boyutlarını 1 mb ile 64 mb arasında değiştirebiliriz (1,2,4,8,16 – 64 olarak). Büyük database yapılarında allocation unitleri 64 mblik bloklara çekmek daha performaslı olacaktır.
ASM Files (Dosyaları):
ASM “Files” ise AU’lardan oluşan extent’lerdir. Dosya adları + ile başlarlar ve ASM instance’ı tarafından yönetilirler. Dosya isimleri genelde değişken sayılardan oluşmaktadır ancak bu dosya isimlerine (örneğin bir datafile) alias verme şansımız bulunmaktadır. Bu dosya isimleri benzersizdir ve hiçbir zaman başka bir datafile ismi ile çakışmaz. ASM’nin yönettiği dosyalar disk’ler üzerinde SAME metodolojisi ile tutulmaktadır (Stripe-And-Mirror Everything). ASM dosyalarından kastımız nedir? Datafile, kontrol dosyası, redolog dosyası, RMAN yedekleri gibi. Burası önemli, 11g Release 2′ye kadar ASM, OCR dosyaları, cluster-voting disk, alert log dosyaları, trace dosyaları ve Oracle binary’leri gibi dosyaları desteklemiyordu ancak 11gR2 bu kısıtı ortadan kaldırarak, bu tipte dosyaların da ASM tarafından desteklenmesini sağladı. 11gR2′yi tercih etmek ve kullanmak için yine çok ufak ama büyük bir neden.
Extent Map:
Yukarıdaki resimden de anlaşılacağı gibi Extent map, ASM’nin yönettiği dosyaların disk üzerinde nerede olduğu bilgisine sahiptir. Tabii tabloların veya objelerin nerede olduğundan öte bu objelerin bulunduğu extent’lerin nerede durduğunun bilgisine sahiptir.
Striping Granularity:
Veriyi disklere eşit olarak bölme işlemi yapar, I/O yük dağılımını yapar veya I/O gecikmelerini azaltabilir. Bu sayede de load balancig işlemi olacaktır. Ve veri güvenliği ile birlikte performans yükselecektir.
ASM’nin 2 türlü işlediği striping (Yazma) şekli vardır.
    1) Coarse-grain
    2) Fine-grain
Coarse-grain striping özelliği ile Allocation Unitler disk ünitleri üzerinde dağıtılmaktadır. Dosyaları disk üzerinde 1 mb’lık birimler halinde dağıtır. Genellikle OLTP işlemleri yoğun kullanılan veri tabanları için daha uygundur. Bu durumda bir “load balancing” yani yük dengelemesi söz konusu olacaktır. Bu dağılımın %100 eşit olacağını ifade edemeyiz. Disk üniteleri üzerinde eşit bir dağılım yapmamaktadır. Örneklendirelim:
Yukarıdaki resim baz alarak 8 tane diskten oluşan bir disk grubumuz olduğunu görüyoruz. Biz 5 MB.’lik veri yazmak istediğimizde veri eşit olarak bölünecek ve sadece 5 tane diske yazılacaktır.
Fine-grain striping özelliğinde ise veriyi eşit olarak tüm disklere yazacaktır. Dosyaları disklere 128 KB’lik birimler halinde dağıtır. Rapolama ve OLAP işlemlerinin yoğun olarak kullanıldığı veri tabanlarında kullanılır. Buda şu demektir 1 MB’lik extent bile bölünecektir. Yani 5 MB’lik veri 8 parçaya bölünecektir. Buda bizim aradığımız olay diyebiliriz.

Yukarıdaki resim Fine-grain striping özelliği ile ilgili örneğimizin resmidir. 5 MB ‘lik veri tam 8 parçaya eşit olarak bölünmüştür.
Stripe ve Mirror Örneği:
Yukarıdaki örneğe baktığımızda iki tan failure grup mevcut. Ve 5 MB’lik bir veri var. Disk gruplarına bu veriyi bölmüş. Faile gruop 1 de disk A’da 2 var iken diğer bir kopyası File grup 2 deki E diskinde. Eğer disklerden biri bozulursa kopyasının bulundu diskten çalışmasına devam edecek. Bir Failure Group 1 bozulsa bile diğer failure gurup’tan devam edecektir.
Yukarıdaki senaryomuza uygun olarak üstteki resmi görmekteyiz. İncelediğimiz de daha net anlayacaksınız.
Disk Gruplarının Yönetilmesi
ASM Instance’ının ana hedefi disk gruplarının yönetimi ve verilerin korunmasıdır. ASM instance’ları ayrıca dosya sistemi ve veri tabanı instance’ının bağlantısını kurar. Bu sayede database instance’ı disk gruplarındaki dosyaların konumlarına doğrudan erişebilir.
Disk gruplarını yönetmek için birkaç tane komut var. Bu komutları çalıştırmak için ise SYSASM yada SYSDBA hakkına sahip olmak gerekir.
Bu komutlar ile yeni disk ekleyebilir. Ayrıca var olan disk gruplarına yeni disk ekleyebilir, kaldırabilir diğer bir çok işlemi gerçekleştirebiliriz. Ayrıca yeni disk grubu da ekleyebiliriz.
SQL*Plus ile Disk gruplarını oluşturmak ve silmek:
Bir failure grup çıkardığınızda yada bir failure gruptan disk çıkardığınızda veya eklediğinizde disk grubunun yapısında değişiklik meydana gelir. Bu durumda, Oracle eski disklerden yeni disklere orantılı olarak yeniden dağıtmak üzere otomatik olarak yeniden balanslama yapar. Bu yeniden balanslama esnasında veri tabanının online olması ve kullanıcıların veri tabanına bağlı olmasının I/O performansına etkisini azaltmak için ASM_POWER_LIMIT adlı başlangıç parameter değerinin düşük değerde olması gerekir.
Aşağıdaki komut bize disk gruplarını, bunların ait olduğu failure guruplarını, disk isimlerini ve oluşturma tarihlerini öğrenebileceğimiz sorgudur.
                SQL >    select group_number, disk_number, name, failgroup, create_date, path
                               from v$asm_disk;
Ne kadar boş alan odluğunu öğrenmek için
                SQL >    select group_number, name, type, total_mb, free_mb
                               from v$asm_diskgroup;
Disk grubu oluşturmak için aşağıdaki syntax kullanılır. +ASM Set edildikten sonra aşağıdaki komutlar girilir. /dev dizininde A1,A2,B1 ve B2 disklerinin olduğunu varsayalım. Ayrıca B1 ve B2, A1 ve A2 den ayrı bir controller’a sahip olsun. Aşağıdaki kodlamada CONTOLLER1 ve CONTROLLER2 olarak iki farklı grup ile DGROUPA denen disk gurubunun nasıl yapılandırılacağını görmekteyiz.
Ayrıca aşağıdaki örneğe baktığımızda redundancy özelliği olarak default redundancy seçilmiştir ki bu da NORMAL REDUNDANCY’dir. İsteğe bağlı olarak disk ismi ve boyutunu ayarlayabiliriz. Eğer biz ismi ve boyutunu ayarlamazsak ASM kendisi ayarlayacaktır. Eğer bir diskin özelliği diğerlerinden farklı ise yani örneğin boyutu farklı ise o zaman hata oluşacaktır. O bu durumda aşağıdaki örnekte olduğu gibi FORCE komutu kullanılarak disk boyutu bildirilir.
                SQL>     CREATE DISKGROUP dgroupA NORMAL REDUNDANCY
                               FAILGROUP controller1 DISK
                                   ‘/devices/A1’ NAME DiskA1 SIZE 120G FORCE,
                                   ‘/devices/A2’,
                               FAILGROUP controller2 DISK
                                   ‘/devices/B1’,
                                   ‘/devices/B2’;
Yukarıdaki syntax’ta SIZE 120G FORCE olduğunu görmekteyiz bunun amacı 120 GB olduğunu bildirmektir. Yani diğer eklediğimiz disklerden farklı olduğunu ASM’ye bildirmiş olduk.  Disk gruplarımızı enterprise manager, ASMCMD ve ASMCA’dan da oluşturabiliriz. ASMCA’dan nasılyapıldığına bir bakalım.
Bunu yapmak için ise öncelikle ASM’i set etmemiz gerekmekte.
Yukarıdaki gibi   ASM yi set ettikten sonra asmca yazıclır. ASMCA (ASM configuration assistant) ile de disklerimizi oluşturabileceğimizi yazmıştık.
Gelen erkanı zannedersem hatırladınız. Disk oluşturmak için Create butonuna basılır.
Yukarıda görüldüğü gibi disk ekleme işlemi bu kadar kolay. Yani bu kolaylık varken çok zorunda kalmadıkça komut ile yapmanın pek gereği olmadığını düşünüyorum.
Disk Grubunu kaldırmak için ise aşağıdaki syntax kullanılır. Drop işleminde ise INCLUDING CONTENTS komutunu görmekteyiz kelimlerden anlaşılacağı gibi içeriğini de kaldırır.
                SQL> DROP DISKGROUP dgroupA INCLUDING CONTENTS;
Yukarıdaki syntax ile dgroupA içeriğiyle birlikte drop edilir. Including contets kullanmadığımızda içindeki veriler silinmez. Ve o diski içindeki verilerle sonrasında tekrar ekleyebiliriz.
Disk Gruplarına Disk veya Diskler Eklemek:
                SQL> ALTER DISKGROUP dgroupA ADD DISK
                               ‘/dev/sde1’ NAME 05,
                               ‘/dev/sdf1’ NAME 06,
                               ‘/dev/sdg1’ NAME 07,
                               ‘/dev/sdh1’ NAME 08;
Yukarıdaki örnekte disk gruplarına yenir bir diskin nasıl ekleneceğini gösteren bir syntax yazılı. Yukarıdaki kodlamaya göre dgoupA disk gurubuna 4 yeni disk eklenmiş oldu. Disk grubuna yeni bir diski ALTER DISKGROUP [DİSK GURUBU İSMİ] ADD DISK  ‘/dev (/dev dizininde default olarak makineye taktığımız disklerin kendi isimleri olacaktır. Ki buradaki default disk isimleri sde1, sdf1, sdg1 ve sdh1’dir.) NAME 05 “Name : isim ataması yaparken kullanırız. Yanındaki 05 ise eklediğimiz diske belirlediğimizi isimdir.”
                SQL> ALTER DISKGROUP dgroupA ADD DISK ‘/device/A*’;
Yukarıdaki kodlamada /device dizinindeki baş harfi A ile başlayan diskleri dgroupA ya ekler.
Çeşitli Alter Komutları:
                SQL> ALTER DISKGROUP dgroupA DROP DISK A5;
Yukarıdaki kodlamada DgroupA grubundan A5 diskini kaldırır.
                SQL> ALTER DISKGROUP dgroupA
                    DROP DISK A6
                    ADD FAILGROUP controller3
                               DISK ‘/dev/sdi1’ NAME A9;
Yukarıdaki kodlamada DgroupA disk grubundan A6 diskini çıkartır ve controller3 failgroup’unu ekler ve /dev dizini içerisindeki sdi1 diskinin ismini A9 yaparak ekler.
                SQL> DISKGROUP dgroupA UNDROP DISKS;
Yukarıdaki kodlamada drop işlemini iptal etmek için kullanılır.
    alter diskgroup [Disk Grup adı] drop [Disk adı] add [Eklenmek istenen şey]; 
Failure gruptan disk çıkarır ve yerine yenisi eklemek için kullanılır.
    alter diskgroup [Disk Grup adı] mount;
Disk grubunu tüm instance lar için erişilir yapar.
    alter diskgroup [Disk Grup adı] nomount;
Disk grubunu tüm instance lar için erişilmez yapar.
    alter diskgroup [Disk Grup adı] checkall;
Disk grubunun dahili bütünlüğünü check eder.
Bu işlemleri komutla yapmak yerine ASMCA ile yapmak daha kolay şimdi bunu inceleyelim.
Yukarıdaki resimde de görüldüğü gibi eğer makineye boş bir disk takmışsak Add Disks ile ekleriz. Disk grubundan disk çıkarmak istersek Dismount ya da drop etmek istersek Drop seçeneği ile yaparız. Yani komut kullanmak zorunda değiliz. İşimizi kolaylaştıran şeyler hızlandırırda.
Enterprise Manager Kullanılarak ASM Yönetimi:
Enterprise manager özel yazılımlar, uygulamalar, networkler, IT altyapısı ve daha fazlası için Oracle’ın ailesindendir.
ASM Disk Gruplarının Uyumluluğu:
ASM disk grubuna uygulanabilen 3 çeşit uyumluluk metodu var. Bunlara Attributes (özellikler) denir. Bu attribute’ler şunlardır: ASM Compatibility, RDBMS (Database) Compatibility ve ADVM Compatibilitydir. Her bir disk gurubunun compatibility’si bağımsız olarak kontrol edilebilir. Hem Oracle 10G hem de Oracle 11G’den disk grupları ile farklı yapıdaki çevresellere izin vermeyi gerektirir. Kısacası uyumluluk 11G seviyesine çekilirse 11G ile birlikte gelen özelliklerden yararlanabiliriz. Ayrıca Database 10G olarak kalabilir. ASM’nin uyumluluğunu 11G yaparsak o zaman ASM 11G olarak çalışır ve ASM’nin yeniliklerinden faydalanmış oluruz. Database 10G olarak bırakabiliriz.
Enterprise Manager Kullanarak Disk Gruplarının Attribute (özelliklerini) ayarlamak.
Yukarıdaki resmi baz alarak; EM kullanarak Disk Gruplarının Attribute’lerini ayarlayacaksak, general tabına gelerek, alttaki edit linkini tıklarız. Gelen pencerede tek yapmamız gereken attribute’leri girmektir. Unutulmaması gereken önemli bir not var Attribute’ler yükseltilebilir ancak geriye alınamaz. Düşürtülemez. Yani 11G ye çekmişsek 10G’ye alamayız.
ASM Fast Mirror Resync:
Yukarıdaki resmi inceleyerek resim üzerinden anlatayım. Oracle 11G bize veri kaybını önlemek için çok fazla güvenlik stratejisi sağlamakta. Yukarıdaki resme göre ilk ekranda görülen 3 farklı disk failure yapısı görünmekte. Her disk bir başka diskin yedeğini barınmakta. Disk gruplarından herhangi birinde problem oluşsa mirroring işleminde diğer disklerden kendini telafi eder demiştik. Yani aynı veriyi diğer disklerden okumaya devam eder. Bozulan yada problem oluşan gruptaki diskleri değiştirdiğimizde verileri yeni diske yazar. Ancak burada şu anlaşılır ki yazma işlemi sırasına performans ve zaman kaybı olacaktır. İşte oracle bunu düşünmüş ve bize disk ile irtibat kesildiğinde yani problem olduğunda DISK_REPAIR_TIME parametresi devreye girer ve defaultta 3 ila 6 saat arası bir süre bekler. Eğer parametrede belirtilen süre içerisinde disk tekrardan devreye girerse diskin devreden çıktığı zaman ile devreye girdiği zaman arasında yapılan değişiklikleri diske geri yazar. Bu da bize hem zamandan hem de performanstan kazandırır.
Aşağıdaki sorgu veri tabanındaki ASM’de tutulan datafile’leri gösteren bir sorgudur. Bu sorguyu bir kenarda bulundurun.
Veri tabanındaki datafile’leri gösteren script.

Hiç yorum yok:

Yorum Gönder