Kategoriler
ORACLE

Oracle 11g: DBA-1||Managing the ASM

5.Managing the ASM Instance

1 instance = 1 database’dir. (Standalone server mimarisi)

Instance sayısı n sayıda olduğunda ve tek database ile yönetimi sağlanırsa cluster olur.

Database dediğimiz kavramın içinde database file’ları vardır. Bunun içerisini
(control file, datafile, redo log, spfile,backup dsoyaları, archiver log — bunlar fiziksel dosyalar)

Fiziksel olan dosyalarımız nasıl ve nerede yönetilir konusuna eğileceğiz.

ASM bizden : Boyutları aynı olmak koşuluyla adedini bizim belirlediğimiz
(tek veya çift) formatlanmamış disk tahsis etmemizi ister.

Disk gruplarını oluştururken yönetim tarzını belirliyoruz.

Diskin yönetim tarzı

  • External — No Mirroring Mesela 20 gblık disk size’ının tamamını yeni bilgilere ayırır. Database external disk grubunda yönetilmez.
  • Normal — 2 way Mirroring. Diskler 2.5’ar gb olarak kullanılır. Toplamda primary extend olarak yani gelen data olarak datayı parçalara bölerek yazar. Maksimum 10 gb yazar. Geri kalan 10 gb secondary extend olarak mirror’a ayırır.
  • High — 3 way Mirroring senaryo birerbir aynı bir dosyanın 3 kopyası var. diskleri 3’te bir oranında aktif kullanırız.

Storage’da external yönetim tarzında herhangi bir diskte arıza olursa veri kaybederiz.
Backup dosyaları burada yönetilir. ( Yedeğin yedeğinin olmasına gerek yoktur)

Normal yönetim tarzında data kaybı olmaz. Çünkü farklı failure group’larda mirrorlar vardır. Yarısını kullanır yarısını yedekleme şeklinde ayırır.

ASM’in amacı diskleri kendi formatlamış olduğu bir disk teknolojisine göre yönetmektir.

ASM kendi işlemleri için 256 mb memory ister.

ASM instance

Verilen bu memory kendini yönetmesi için gereklidir. Verilen memory neticesinde:

  • Shared Pool —  ASM’e ait metadata var.
  • Large Pool — Paralel işlem operasyonları için vardır.
  • ASM Cache — Neyin okunması gerektiği veya neyin nereden yazılması gerektiği bilgisini tutar.  RBAL operasyonlarında kullanır. Proseslere görev verir ve yazılması gereken diskleri söyler.
  • Free Memory

ARBn — Başında RBAL vardır ve bunları yönlendirir. Yöneten RBAL işi yapan ARBn’dir

GMON — Disk grubu bazında aktivitelerden sorumludur. ( Disk grup mantığı değişikligi gibi)

MARK — Allocation unit’lerin işaretlenmesinden sorumlu prosestir.

Allocation Unit — Oracle veritabanının logical ve fiziksel mantığında en altta data blok vardır. Ve boyutu 8 kb’dir. Data file’lar artık ASM içindedir. ASM’de çalışan diskin içerisindeki en küçük parça allocation unit’tir. Default size 1mb’dır. 11g sistemlerde 64 mb’a kadar çıkabilir. Gelen veri 5 mb ise 5 parçaya ayırır.

//Database tarafında shared pool execution planlarını tutar. ASM’de bu tarz bi şey olmaz.

Onnn — Oracle ASM tarafıyla alakalı herhangi bir bağlantı olduğunda yoğun olması durumunda havuzda toplar yönetir. ASM, Veritabanı gibi yoğunluğu yoktur o yüzden kullanılmaz.

Pz9N –gv$ view’lardan sorumlu prosestir.

Çalışan sisteme yeni disk eklendiğinde bunun boş durma şansı yoktur. RBAL işlemi yapılır.  Ya da disk arıza çıkardığında diski kaybettiğimizde RBAL işlemi yine yapılır.  Kaybolan dataların mirrorları yoksa bunu yeni eklenen diske ya da içeride kalan disklere kopyalanır.

Stripe and Mirror Example

Her dosyanın iki kopyası ( kendisi ve mirror) olacak şekilde kalmalıdır. Yapısı bozulursa bunu yeniden sağlar.

Failure ExampleData tutarlılığını yeniden sağlamak ve garantiye almak için farklı failure group’lara kopyalar.  5 ve 3 disklerini kaybettiğimizde  Fail Group 1’de disk 3 bulunduğu için bunu Fail Group 2’ye kopyalar. Bu mantıkla çalışır. (Fail Group Mantığı)

SYSASM — En yetkili rol
SYSDBA — ASM’i kapatamaz.
SYSOPER —

show parameter instance_type;
–RDBMS

ASM  Parameters

ASM Instance Initialization Parameters

 ASM Disks

Disk grupları içerisinde yer alan depolama alanlarıdır. Disk grubunun içinde yaratılan bu diskler bizim veritabanımıza ait depolanma alanları olacak şekilde kullanılıyor. Bir veya birden çok disk grubunda kullanabiliriz. Stripe ve Mirroring özelliğine sahiptir. Mirroring özelliğini yönetim algoritmasına göre değiştirebiliriz. Ama stripe özeliği kapatılamaz. (Bölerek yazma diyemeyiz)

ASM tarafındaki disk içerisinde en küçük parça Allocation Unit’ler demiştik. Bu unitler ( extent parçaları) 1mb-64mb arasındaki size’ları olur. Bir disk grubu yaratılırken allocation unit size’ları belirtilir. Daha sonra bunda değişiklik yapamayız. 10g’de bu değişemez ve 1 Mb olarak gelir.

ASM Files

Bizim için +’nın anlamı ASM olmasıdır. ASM’de her dosya + ile başlamak zorundadır.  ASM’de table space yaratırken datafile seçip size’ını belirtip hangi disk grubunda yaratılacağını ve sonraki isimlendirmesini belirtiyoruz. İsim çakışması olmayacak. Bunu kendini konfigre eder.

+DATA/orcl/datafile/system.256.689832921

Alias’lar yaratabiliriz.

+DATA/dbfiles/mydb/system01.dbf

Extent Maps

Gelen yeni bir bilginin disk grubu içerisindeki diskin hangi parçacığına yaratılacağını bilen, tanımlayan ve okuma yaptığında da nereden, ne şekilde okunacağını ASM cache’e bildiren bir haritalama metotudur.

Extent Maps

Striping Senaryosu

Striping Granularity

Bu özellik disable edilebilir.  Bizim 8 adet diskimiz var.  Var olan bu diskin içerisine yeni bir bilgi(extent) geldiği zaman diske gelen bilgiyi bölerek yazar. 8 adet disk varken 3 adet disk boş kalmıştır. Bunun nedeni allocation unit’in size’ı ile doğru orantılı olmasıdır. Default’ta disk grupları böyle çalışır. Coarse-grain striping metotudur.

Fine-Grained Striping

  • 8 AU size 1 mb extent geldiğinde 128 kb parçalara böldü.
  • 1 mb ‘lık kısmın 128 kb kullanılyor.
  • 1 mb daha gelirse kırmızı altına mavi ekler.

Her diske eşit şekilde dağılması isteniyorsa. ( Allocation unit size 1mb).  8 adet disk var ve external redundancy yani full size kullanabiliriz. 1 mb extend geldiğinde 128 kb’lık parçalara bölüyoruz ( disk sayısına göre). Ancak bu istenen bir iş olmayabilir. Çünkü burada 8 mb allocation unit size’ını diske ayırmış olduk ama sadece 1 mb’lık kısmını kullanıyoruz.

Ama diğer senaryo da 5mb’lık bir alanı alloca ettik ve gelen datayı yazdık. Burada gelen datayı disklere eşit dağıtma ihtiyacından ötürü biz 8 tane allocation unit’i disklere parçalarız içerisini full kapasite kullanıp kullanmama önemli değil gelen data eşit olsun yeterlidir. 1 mb daha gelecekse kırmızının altına mavi’yi getiririz. Süreç bu şekilde devam eder.

Fine-Grained Striping

 

ASM Failure Groups

ASM Failure Groups

Datayı kaybetmeme adına failure grup mantığı çok önemlidir. Bizim sabit olduğumuz sistemlerde: Bizim DATA disk grubumuz var bu disk grubunun içerisinde 4 tane grup var. Bu 4 diskin içerisine dağılan verinin yönetimi şuan itibariyle bizde değil. Biz kesinlikle yönlendirme yapamıyoruz.

Stripe and Mirror Example

Asıl iş dağıtılan datanın mirroning’in dağıtılması sürecinde başlıyor.  Bu mantıkta failure grup şu demektir. 1 diskinin mirrori failure group 2’de ise datanın kendisi failure group 1’de olmalıdır.  Aynı partlar yan yana olmamalıdır.

Managing Disk Groups

Managing Disk Groups

2 adet Failure Group oluşturuyoruz. controller1’in içinde A1 ve A2 adında diskler. controller group 2 içinde B1 ve B2 adında diskler. A1’in için alias diskA1 ve size 120 gb özellikleri verilmiştir.  A1 diski için 120 g aksiyonu yazılmasının nedeni boyutunun(kapasite) daha fazla olmasındandır.  120 gb force et(ASM kullanacak) geri kalanını da sistem kullanabilir.

Daha sonra Drop ederek kaldırıyoruz.

Adding Disks to Disk Groups

4 adet diski iki şekilde de bir adet disk group’a ekleyebiliriz. Size belirtilmemiş çünkü hepsi aynı size’da.

Miscellaneous ALTER Commands

Miscellaneous ALTER Commands

Disk A5 drop edilir.  Daha sonra RBAL işlemi başlar.

Miscellaneous ALTER Commands

Önce A6’yı drop et. Sonra bir adet içinde A9’un yer aldığı fail group oluştur. Miscellaneous ALTER Commands
Drop işlemlerini iptal et.

Using Enterprise Manager to Edit Disk Group Attributes

 

 

Kategoriler
ORACLE

Oracle 11g: DBA-1||Managing the Database Instance

4. Managing the Database Instance

Management Framework

Elimizde komponent olarak 3 tane kavram var:

  • Database instance
  • Listener
  • Management interface:

– Database Control
– Management agent (when using Grid Control)

Management Framework

 

Database instance = SGA + Background Proses bu süreç start olduğu anda instance ilk aşamaya gelmiş oluyor. ( nomount, mount, open)

Listener = uzaktan gelen bağlantının kontrolü listener servisi tarafından yapılır.

Management Interface =

database control = Tek database tek bir kontrol ile yönetiliyor. ( Enterprise Manager)
Biz orcl ismindeki db’nin tüm kontrolü buradan yapabiliriz.

management agent ( grid control) = Farzedelim ki orcl1 diye db var. Bunun interface’i var
ve buradan yönetimini sağlıyoruz. orcl2 diye başka bir db var ve bunun da interface’i
var. orcl3, orcl4 şeklinde devam ediyor. Ve hepside Enterprise Manager ile yönetiliyor.

orcl2 ya da orcl3 ile ilgili herhangi bir iş yapacağımız zaman orcl3’e bağlanıp konsolu açıyoruz ve yönetimi sağlıyoruz. Oracle bu noktada devreye girip bunun grid kontrolle yapılmasını tavsiye ediyor. Tek bir sayfa olsun ve giriş sayfasında db isimleri ya da makinelerinin adı ya da id’leri yazsın Bu durumun avantajı tek sayfa üzerinden sadece tıklama işlemi ile onun yönetim sayfasına bağlanıyoruz. Ayrı ayrı operasyon yönetmektense tek bir ortam üzerinden tüm süreci yönetiriz. ( Grid Control)

Starting and Stopping Database Control

Environment set etmek; Terminalden

. oraenv

ORACLE_SID = [orcl] ? orcl   // gitmek istediğimiz yer. environment set edildi.

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1
is /u01/app/oracle

$ emctl start dbconsole

srvctl status database -d orcl     // db çalışıyor mu kontrolü

srvctl status listener -d listener    //listener çalışıyor mu kontrolü

srvctl status asm     // asm çalışıyor mu kontrolü

emctl status dbconsole // enterprise manager durum kontrolü

emctl start dbconsole // web tabanlı konsolu açar.

emctl stop dbconsole // web tabanlı konsolu kapat.

https://pcadi.oracle.com:1158/em      //enterprise manager url

Windows tarafında ise:

set ORACLE_SID=orcl ile envriromenti set ediyoruz.

diğer kısımları aynen kullanabiliriz.

Oracle Enterprise Manager

enterprise managerhttps://machine_name:port/em şeklindedir.

Enterprise Manager’ı sadece admin kullanıcıları bağlanır. Konsolu yani veritabanını buradan yönetiriz.

SYSDBA rolü ile bağlantı kurar ve veritabanında her türlü işlemi gerçekleştirir.

Database Home Page

Database Home Page

Other Oracle Tools

Birden fazla environment’ı olan sistemlerde home klasörünü olarak neresi olarak gördüğü önemlidir. Buna göre set edilmesi gerekir.

sqlplus / as sysdba  ile sqplus’a sysdba olarak direkt bağlanabiliriz.

sqlplus

Eğer hangi instance içinde olduğunu bilmiyorsak

select instance_name from v$instance

ile hangi instance içinde olduğumuzu görürüz.

cd /u01/app/oracle/product/11.2.0/dbhome_1/sqldeveloper/

sqldeveloper’ın bulunduğu dizin.

sqldeveloper.sh // unix
sqldeveloper.exe // windows

Calling SQL*Plus from a Shell Script

./batch_sqlplus.sh

sh.batch_sqlplus.sh

execute eder.

Account is lock hatası var ise: 

alter user hr indentified by hr account unlock

SQL DEVELOPER

SID ismine dikkat etmek gerekmektedir. Daha sonra şekildeki gibi Success mesajını görürsek başarıyla bağlantı kurabiliriz.

script

şeklinde istediğimiz işlemleri yapan bir script oluşturuyoruz. ( EOF — End of File. O dizinde durur)

./batch_sqlplus.sh

sqlplus çıktı

şeklinde bir çıktı verir. Windows’ta bu script çalışmaz. sh scripti windows’ta çalışmaz. Eğer bir script yazıyorsak ve içinde sql sorguları varsa .sql uzantılı script yazarsak bunlar her ortamda çalışır.

sekaistscript.sql adında bir script oluşturuyoruz.

unix ortamda 

vi sekaistscript.sql dedikten sonra açılan ekrandan yapılması gereken script işlemlerini yazabiliriz.

esc basınca bulunduğu insert moddan çıkar
:q kaydetmeden çık
:ws kaydet çık

gedit sekaistscript.sql  ile içeriği görebiliriz.

script

sqlplus hr/hr @sekaistscript.sql

--sqlplus'a bağlanmadan yaparız

bunun çalışması için ya doğru dizinde bulunmak lazım ya da full path vermek lazım.  Ama en kolayı onu bulunduğun ortamın hemen altında yaratmak olur. Çünkü direkt olarak çalıştırabiliriz.

sqlplus çıktı

Parameter File

spfileorcl.ora ve initorcl.ora şeklinde iki tanedir. ( orcl kısmı sid isminine göre değişiklik gösterir)

SPFile server ya da sistem parametre dosyası olarak geçer.Binary formatlıdır. İçeriğine girip değişiklik yapılamaz. Ancak bu dosyanın birebir aynısı PFile olan dosya (initorcl.ora) spfile’ın kopyasıdır. Bir veritabanında spfile dosyası dbhome/ dbs altında bulunur.

show parameter spfile

: +DATA/orcl/sp
--spfile dosyamızın bulunduğu dizin.

karşılığında value kısmı boş ise pfile ile açıldığını gösterir.
karşılığında value bir değer almış ise spfile ile açıldığını gösterir.

'home/oracle/initorcl.ora' 
--bizim pfile dosyamız

Bir database açılırken pfile’ın içindeki spfile’ın location bilgisini kontrol eder.
Açılan bir database 11g R2 eğer ASM kurulumu varsa açılıştı hem pfile hem spfile kullanır.

create pfile 'home/oracle/initorcl.ora' from spfile;
-- pfile dosyası yaratıyoruz. (Spfile'ı kullanarak)

Artık düzenlenebilir bir spfile dosyamız olmuş olacak.

Using SQL*Plus to View Parameters

Bir parametrenin syntax olarak tam nasıl yazıldığını bilmek zorunda değiliz.

show parameter para

dediğimizde içinde para geçen parametreleri bize listeler.

parameter

desc V$parameter
--tablonun yapısı. dinamik performans view'ıdır aslında.

desc V$parameter

Parametrelerin Değerlerinin Değiştirilmesi

Statik parametre özelliğe sahip parametre ise:

Bu parametreyi sadece parametre dosyasında değiştirirsin. (Şuandaki sistemi entegre etmem tekrar açıldığında entegre ederim)

Önemli parametrelerdir. Çalışan sistemde değişiklik database aksiyonunu bozar.

Dinamik Parametre

Bunlar sistem çalışırken değişebilir. Database’i çok etkileyen değişiklikler değildir.  Dinamik olanlar iki opsiyonla değişir.

  • Session level (açılan session’da değişiklik yapar)
  • system level ( sistemde değişiklik yapar)
alter system set open_cursors=500 scope=spfile;
--static olan parametreler için
--scope değiştirilen parametrenin hangi özellikle set edileceği
--şimdi değiştirme açılıştan sonra değiştirir

scope = memory;  — memory’de tutar. tekrar açılışta kaybolur
scope= both; — o anlık yansır ve tekrar başlatılınca aynı değerde kalır.

şeklinde değerlerde alabilir.

Parametre değiştirme örneği:

SELECT SYSDATE FROM dual;

— alter session dediğimiz için sadece o session için değişiklik yapar.
— alter system dersek sistemde değişiklik yapar. sistem içni default scope=botht dur.

Shutting Down an Oracle Database Instance

shu

  • Yeni bağlantı gerçekleştirilebilir mi?
  • Var olan bağlantılar
  • Transaction gerçekleştiren bağlantılar
  • Tutarlı Kapatıp kapatmadığı

gibi özelliklere göre yukarıda tablolandırılmıştır.

Normal ve Transactional pek kullanılmaz. Abort hiç bir kontrol yapmadan direkt kapatır. Zorunlu durumlarda tercih edilir. Biz çoğunlukla Immediate tercih edeceğiz.  Zaman olarak uzun sürdü ise başka bir session da shu abort yapıp hemen kapatabiliriz. Abort diğerlerini ezer.

(idle bekleyen sorgulamalar demektir.) intstance recovery sürecinde bize yardımcı olan veritabanın tutarlı hale gelmesini sağlayan prosestir.

shu optional

STARTUP FORCE >> Abort’la kapatıp startup ile açar.

Starting Up an Oracle Database Instance

Starting Up an Oracle Database Instance

idle olan instance açmak için:

Nomount = instance başlatılır.  Background prosesleri aktif olur

Mount= Control File’larının açık ve senkron şekilde çalışması lazım.

Open=  Database gerçek anlamıyla açık hale geliyor. Bütün control file ve instance’ler başlatılıyor. (redolog, datafile açılır. ve işlem yapar hale gelir) Sadece startup gönderirsek bütün basamakları yapmış olur.

Startup Options: Examples

 Alert Log

Bir veritabanında herhangi bir problem ya da görüntüleme adına bilgi istediğimizde
Alert Log kısmına bakarız. Database kurulduğu andan itibaren içerisi bilgilerle
doldurulan ve illa büyük problemi gösterecek diye bir kaide olmayan amacı sadece bilgi
veren bir görüntüleme alanıdır. Bu alanı Enterprise Manager konsoldan Database Home page > Related Links region >Alert Log Content kısmından ulaşabiliriz.

Alert Log

 

Dynamic Performance Views

Biz SQL tarafında Data Dictionary views’larını gördük. Şimdi bu başlık altında Dynamic Performance Views’larını göreceğiz. DBA’in işlerini kolaylaştırmak adına tasarlanmış view yapılarıdır. Dynamic Performance Views V$ ile başlayan view’lardır. Bunları ezberlemek münkün değildir.  Bu view’lar görüntüleme gerçekleştiren view’lardır.

select * from v$fixed_table
-- dinamik view'ları sorgularız

fixed_table

Bu view’lar tamamen bilgi amaçlı ve veritabanında neler olduğunu görmek istediğimizde bakarız.

select * from v$fixed_table
where name like '%BACKUP%'

 select * from v$fixed_table where name like '%BACKUP%'

Dynamic Performance Views: Usage Examples

1,2,3 de’ki gibi sorgulamalar ile gerekli görüntülemeler sağlanır.

select name from v$datafile;

select name from v$datafile

Anlık olarak değişikliğe adapte olan view’lardır.

select current_scn from v$database;

select current_scn from v$database

 

Data Dictionary Views

DBA_ ile başlayanlar — her kullanıcının göremediği sadece dba yetkisine sahip olanların

ALL_ ile başlayanlar — user’ın sahip olduğu + yetkisinin olduğu görüntüleyebildiği

USER_ ile başlayanlar — kiminle bağlandı isek onun sahip olduğu view’lar

select * from dictionary;

dictionary