18 Aralık 2011 Pazar

Kitap – Teoman Dinçel’in Oracle 11g kitabı hakkında

Oracle-11g-Kurun-Calistirin-Kullanin-Yonetin__30820853_0Merhabalar,
1 aydır zevkli uğraşım olan Teoman Dinçel’in Oracle 11g kitabını bitirdim. Kitap Oracle’a başlangıç için güzel bir giriş yapmış diyebilirim. Aldığım workshop I eğitimi ardından bu kitabı kurcalamaya başladığımda tüm anlatılanları anladım. Ve kitap içerisindeki verilen minik örnekleri rahatça gerçekleyebildim.
Kitabın ilk amacı, Oracle veritabanı yönetim sistemine giriş ve onu diğer veritabanı yönetim sistemlerinden ayıran özellikleri göstermek. Sonrasında SQL konusuna giriş yapılıyor ve örneklerle sürekli kullanılan SQL komutları açıklanıyor. Kitabın en arkasındaki “Bir Sonraki Adım” başlıklı kısmı da ayrıca çok beğendiğimi söyleyebilirim.
İlk amacı yol göstermek, sonrasında biraz SQL ile boğuşmamızı sağlayan ve Oracle veritabanı mimarisini anlatan bu kitabı okumanızı tavsiye ederim.
Türkiye’de Oracle ile ilgili Türkçe bir kitap bulmak zor. Ve artık İngilizce’nin zamanı! Bugün sipariş verdiğim kitabın ismi Oracle Database 11g – Underground Advice for Database Administrators. Bu kitabı da başarıyla bitirirsem mutlaka blogumda incelemesini yazacağım.
Renkli günler…

Defterimden Notlar I – Oracle Instance

Merhabalar,
Bu yazı dizisinde sizlere Oracle mimarisi, işlemleri ve yönetimi ile ilgili okuduğum makalelerden, yazılardan aldığım notları paylaşacağım. Bu yazdıklarımın hem size bir yol olmasını hem de bana hatırlatıcı ufak anektotlar olmasını isterim.
Bazen anlaya anlaya saatlerce okuyoruz ama okuduklarımıza şöyle bir tepeden bakıp onları tablolaştırmıyoruz. Bu yazımda ayrıntılara girmeden Oracle Instance nedir ve neler içerir onları anlatacağım.
Instance, çalışan veritabanımızdaki SGA, PGA ve arka plan işlemlerinin bir araya gelmesi ile oluşan yapıdır. Oracle veritabanı başlayınca instance başlar.
SGA ( System Global Area ) RAM üzerinde tahsis edilen sistem çalışma alanı.
PGA ( Program Global Area ) SGA içinde kullanıcılara tahsis edilen yer.
Hemen genel tablomuzu yapalım.
oracleInstance
Renkli günler.

Oracle Sohbetleri V – Oturum içinde Türkçe dil desteği

Merhabalar,
Bir çok uzmanın önerdiği gibi Oracle’ı İngilizce kullanmak onu öyle anlamak gerekir. Piyasaya bakınca sadece bir iki kitabın Türkçe olması da bunu doğrular nitelikte. Ama bazen alacağınız hatalarda siz de benim gibi çaylaksanız, sizin de Türkçe desteğine ihtiyacınız var demektir.
Oracle’da işlemlerimizi yaptığımız yer “session” diye tabir edilen Türkçe’si “oturum” olan birimdir. Session üzerinde yaptığımız değişiklikler de sadece session içinde kalır ve sistemi tekrardan başlattığımızda tekrar eski haline geri döner. Bu bize kendi oturumumuzda oynama imkanı sunar.
Çalışırken aldığım bazı hataları yorumlamakta güçlük çekiyorum. Buna karşı savaşacak silahım Türkçe dil desteği. Bunu nasıl mı yapıyorum? SQLPlus satırımda;
ALTER SESSION SET NLS_LANGUAGE = ‘TURKISH’;
komutu ile bana gelen uyarıları kendi dilimde değerlendirip araştırıyorum.
Kişisel olarak gördüğüm oturum işlemlerinde “ALTER SESSION” ibaresi kullanılmakta ve daha sonra değiştirilecek parametre yazılmaktadır. Bu ibareyi aklımda tutmak yararıma olacaktır.
Umarım Oracle Sohbetleri yarar sağlıyordur. Ben gördüklerimi, öğrendiklerimi buradan yazmaya devam ediyor olacağım.
Renkli günler…

Oracle Sohbetleri IV – User lock/unlock İşlemleri

Merhabalar,
Oracle 11g sürümünde terminalden veritabanını karıştırırken, başlangıçta yüklü olan hr kullanıcısına girmek istememle bu konuyu öğrendim.
İşe önce kullanıcıyı kilitleme işlemiyle başlayacağım, sonra ise kilitli bir kullanıcıyı açmakla devam edeceğim.
Lock/unlock işlemlerini yapacağımız yer sysdba ile bağlandığımız sqlplus satırı olacak. Sizin veritabanı yönetici isminiz farklı ise onunla giriş yapınız. O zaman bağlanalım:
$ sqlplus / as sysdba
Yönetici olarak girişimi gerçekleştirdikten sonra şu komutu kullanarak kullanıcılarımı ve hesap bilgilerini alıyorum. Aşağıdaki ekran görüntüsünü inceleyelim.
SQL> SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS;


1
Benim önceden oluşturduğum “KUTUPHANECI” isimli bir kullanıcı var baştan 8. sırada. İşlemlerimi bu kullanıcı üzerinden gerçekleştireceğim.
Şimdi bu kullanıcımızı kilitleyelim:
SQL> ALTER USER KUTUPHANECI ACCOUNT LOCK;
2
Bu işlemden sonra bakalım gerçekten kullanıcı kilitlendi mi? Hemen account_status kontrol etmek için dba_users içinde görüntüleme yapıyorum.
3
Üstteki ekran görüntüsünden “KUTUPHANECI” karşılığını bulursanız “LOCKED” yazdığını göreceksiniz.
Kilitleme işlemi tamamlandığına göre artık kullanıcımızı açalım. Tahmin edeceğiniz üzere “unlock” kelimesi bize yardım edecek:
SQL> ALTER USER KUTUPHANECI ACCOUNT UNLOCK;
Bu kodu yazdıktan sonra tekrardan sıralama yaptırarak kullanıcınızı kontrol edebilirsiniz. Hemen sıralama yaptırdığımız kodu ben size hatırlatayım:
SQL> SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS;
İşte herşey  bu kadar. Unutmamamız gereken kural tüm bu işlemler sysdba adı altında açtığımız (ya da sizin veritabanı yönetici isminiz ne ise) alanda yapılıyor olması.
Renkli günler…

Oracle Sohbetleri III – Database başlatma parametreleri

Minik bir şekerleme tadında Oracle sohbetlerinden tekrar merhaba sevgili okuyucu.
Bugünkü üzerine düştüğüm konu database başlatmak. Çeşitli şekilleri ve kullanım amaçları var database start durumlarının. Normal hayatta duyduğum ve gördüğüm kadarıyla sürekli açılıp kapanan bir database yok. Oracle kullanan sunucular hiç  kapanmıyorlar. Biraz düşününce de mantıklı geliyor değil mi? Benim bir alış veriş sitem olacak, Türkiye’de öğlen alış veriş yapan bir müşterim olacak ve bunun gibi Amerika’dan da Türkiye saatiyle gece 03:00′te alış veriş yapan müşterim olacak. Haliyle database hiç kapanmayacak.
Oldu da sistemime bir saldırı oldu. Ya da database-ime yama yükleme zamanı geldi. Ya da bir doğal afet neticesinde fiziksel sistem zarar gördü ve database kapandı. İşte bu senaryolar için farklı farklı database açma parametreleri var Oracle için.  Hemen sıralayacak olursam;
1.0 startup nomount
2.0 startup mount
3.0 startup
4.0 startup restrict
5.0 startup force
6.0 startup quiet
7.0 startup recover
8.0 startup upgrade

Tanım tanım gidelim.

1.0 startup nomount

Bu komutu sqlplus terminalinizde girdiğinizde Oracle önce init.ora parametrelerini okur ve buradan aldığı bilgilerle database-i çalıştırır. Bu parametre, recover modda kullanım için veya parametre değişiklikleri için kullanılır.
startup nomount;

 2.0 startup mount

Bu modda data dosyaları ve log dosyaları okunur. Kontrol dosyası yüklenir. Bu parametrenin kullanım amacı yapılan fiziksel yol değişimlerini ayarlamaktır. Örneğin redo dosyasını 16 GB’tan 160 GB’ta yükseltmek gerektiğinde bu modda giriş yapmak gerekir. Mount moda geçmek için;
1.0 startup nomount;
2.0 ALTER database mount;
3.0 ALTER database open;

3.0 startup

Normal database açılışları için yazılan komuttur. Data file ve database erişimleri açılır.

4.0 startup restrict

Kullanıcılara özel izinler vermek için bu modda açılış yapılır.

5.0 startup force

Geçici bir süre için database-i zorla açar. Database çöktüğü durumlarda başvurulacak yöntemlerden bir tanesidir.

6.0 startup quiet

Başlarken SGA bilgilerini de döken açılış parametresidir.

7.0 startup recover

Adından da anlaşılacağı gibi recovery operations-larda kullanılır.

8.0 startup upgrade

Database upgrade edildikten sonraki ilk açılışta kullanılması tavsiye edilen komuttur.
Renkli günler…

Oracle Sohbetleri II – sysctl.conf ve limits.conf içi parametreler


Merhabalar,
Hepimiz çeşitli sitelerden kullandığınız sisteme göre Oracle Database için sysctl.conf ve limits.conf dosyaları ayarlarını görmüşüzdür. Ve bunları Linux sistemimizde etc/sysctl.conf ve etc/security/limits.conf adreslerindeki dosyalara yazmışızdır. Peki nedir bunlar? Ne işe yararlar? Bu makalemde bu konudan bahsedeceğim.

1.0 sysctl.conf parametreleri

Öncelikle sysctl.conf dosyasını ele almak istiyorum. Bu dosyanın içine yazacağımız parametreler aşağıdaki gibidir;
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
Gelin sıra sıra inceleme yapalım;
fs.suid_dumpable = 1
Bu komut, yapılan işlemin(process) geçerli durumunu barındıran çekirdekteki alanın herhangi bir kaza(crash) anında kaydedilmesini sağlar.
fs.aio-max-nr = 1048576
AIO (Asynchronous Input Output), adından da anlaşılacağı gibi giriş ve çıkış process-lerinin düzenlendiği bir I/O çeşididir. Bu prametrede de giriş çıkış işlemlerinin maximum değeri belirtilmiştir.
fs.file-max = 6815744
İzin verilen maximum açık dosya sayısıdır.
kernel.shmall = 2097152
shmall(Shared Memory All), bellek içerisindeki paylaşılan segmentlerin büyüklüğüdür.
kernel.shmmax = 536870912
Tek bir process için paylaşılan segmentin maximum alanını tanımlar. Bu değer fiziksel RAM-den fazla olamaz.
kernel.shmmni = 4096
Sistem çapındaki maximum paylaşımlı segment sayısı. Bazı forumlarda bu parametreyi “kernel.shmmin” olarak değiştirenleri gördüm. Bu kullanım yanlıştır. Zaten terminalde sysctl.conf dosyasını akifleştirirken hata alırsınız. Koyu harflerle yazdığım kullanım doğrudur.
kernel.sem = 250 32000 100 128
Bu parametre, çekirdeğimize verdiğimiz semaphore parametreleridir. Semaphore, bellek içerisindeki segmentleri kontrol eden birimdir. Kısaca bunlar için sistemin trafik polisleri de diyebiliriz.
net.ipv4.ip_local_port_range = 9000 65500
Lokal portumuzun ayarını tanımladığımız kısımdır.
net.core.rmem_default=4194304
Kernel network parametresidir. Sokete gelen, byte cinsinden, varsayılan sinyal ayarıdır.
net.core.rmem_max=4194304
Kernel network parametresidir. Sokete gelen, byte cinsinden, maximum sinyal ayarıdır.
net.core.wmem_default=262144
Kernel network parametresidir. Soketten giden, byte cinsinden, varsayılan sinyal ayarıdır.
net.core.wmem_max=1048586
Kernel network parametresidir. Soketten giden, byte cinsinden, maximum sinyal ayarıdır.
Bu dosyaya parametrelerini girdikten sonra terminalde “/sbin/sysctl -p” komutunu çalıştırmalı, kernel-i bu şekilde ayarlamalısınız.

2.0 limits.conf parametleri

Bu dosyanın sysctl.conf-a nazaran daha az parametresi vardır.
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle soft nproc 2047
İşlemlerin(process) maximum sayısını belirler.
oracle hard nproc 16384
Eğer soft nproc-tan daha fazla işleme ihtiyaç duyulursa, işlem sayısının ulaşacağı maximum sayı bu parametrede yazılır. Bazı kullanıcılar bu iki parametreyi eşit yazar.
oracle soft nofile 1024
Kullanıcı login olduktan sonra açılabilecek dosya sayısını belirler.
oracle hard nofile 65536
Kullanıcı login olduktan sonra açılabilecek maximum dosya sayısını belirler.
Database işlemlerinde eğer kullanıcı maximum dosya sayısında hata alıyorsa “ulimit -n 65536” yazarak dosya sayısını hard nofile olarak değiştirebilir. Bu parametreler bu yüzden önemlidir ve yazılması gerekir.
oracle soft stack 10240
Yazılması zorunlu olmamakla birlikte saklanacak yığın sayısıdır.
2 dosyamızın parametreleri böyledir. Yazdığım parametreleri ayrıntılı olmasada ne olduğunu bilerek yazmak her zaman beni mutlu etmiştir.
Renkli günler…

Oracle Sohbetleri – I Tanışma

Merhabalar,
Yeni dönemde yeni çalışma konum Oracle veritabanı sistemini kavramak ve onu etkili bir biçimde kullanmayı öğrenmek. Malum 4. sınıf oldum, ilk sene aldığım C# ile yazılım geliştirme kursumdan sonra Microsoft sistemleri üzerinde bir dönem çalışıp, İtalya’ya gittiğim sırada Python ile tanışmıştım. 1 senedir Python ile devam ettiğim yazılım yolculuğumda yavaş yavaş Microsoft ve yazılımlarından uzaklaşıp, Linux’e terfi etmiş bulunmaktayım. (Tabi hala Starcraft Windows’ta olduğundan birazcık oraya bağımlıyım :) ) Kendimi geliştirme yolunda şimdi ise Oracle eğitimine başlangıç yaparak bu dünya hakkında bilgi toplamaya başladım. Ve topladığım bilgileri yine buradan sizlerle paylaşacağım.
İlk hedef Oracle 11g’yi Ubuntu üzerinde çalıştırmayı başarmak. Bunu gerçekleştirirsem buradan yayınlayacağım yazı ile nasıl kurulum yaptığımı anlatacağım. Okulumun kütüphanesinden “Oracle Veritabanı Yönetim Sistemi – Ali Öztürk” kitabını buldum. Başlangıç için hoş bir kitaba benziyor.
Durum böyle sevgili okuyucu. Tekrar görüşmek üzere.
Renkli günler…