Pages

17 Aralık 2010 Cuma

ASM mimarisinde Linux üzerinde Oracle 11g kurulumu -1

Oracle 11g, Oracle 10g generasyonundan itibaren "kur ve unut" felsefesinin en son durak noktasıdır. Memory yönetiminin otomatikleştirilmesi, yeni bir takım "advisor" ların eklenmesi ve hayran bırakacak şekilde sürdürülebilirliğin arttırılması ve çökme riskinin neredeyse ortadan kaldırılması ile veritabanı teknolojisinde yeni bir süreçtir.
Oracle mimarisinde "database" ve "instance" kavramları farklılık göstermektedir. Diğer veritabanı ürünlerine gore Oracle tarafında bu iki kavram üzerinden hareket edilmektedir.

Database
Database, ilgili biligileri toplayan ve sürdüren bir database sunucusu üzerinde yer alan fiziksel disk üzerindeki  bir veya birden fazla dosya içindeki data topluluğudur. Database, çeşitli mantıksal ve fiziksel yapılardan oluşur. Tablolar, ilişkili datalardan yeralan satır ve kolonlardan meydana gelir. Genelinde, database datalara yetkisiz erişimi engeleyen güvenlik seviyelerini sağlar. Oracle 11g, güvenlik noktasında  pek çok mekanizma ile veritabanı yöneticilerinin ve yazılımcıların işlerini kolaylaştırır(oturum izleme, transaction izleme, objelerin izlenmesi, tablespace şifreleme metodu ile tablo kolonlarının şifrelenmesi, Oracle Wallet servisi v.b).
Dosya tarafında database 2 kategoriye ayrılır. database dosyaları ve database dışı dosyalar... Database dosyaları data ve metadata ile ilgili bilgileri içerir, database dışı dosyalar ise veritanabının çalışması için gerekli olan başlangıç parametreleri, kayıt günlükleri, alert dosyaları ve control dosyaları gibi sistem dosyaları ile ilgili bilgileri içerir.

Instance
Bir fiziksel sunucunun ana parçaları CPU(lar), disk alanı ve memory(RAM)'dir. Oracle database, fiziksel disk üzerinde saklanır, ancak bir Oracle instance memory içinde saklanır. SGA(system Global Area), içersinde veri barındıran bir grup paylaşımlı bellek yapısı(shared memory structure) ve Oracle veritabanı "instance"'ı hakkında kontrol bilgileri taşıyan bellek kısmıdır.Aynı "instance" ‘a bağlanan birden fazla kullanıcı SGA'da bulunan veriyi paylaşır. SGA ve Oracle işlemleri(processes) bir Oracle "instance"'ını oluşturur.Bu instance başlatıldığı anda SGA bellek alanı tutulur ve instance kapatılınca SGA alanı işletim sistemi tarafından bırakılır.Her bir instance'ın kendi SGA'sı vardır.SGA'da hem okuma hem de yazma işlemleri vardır. 

ASM-Automatic Storage Management
Otomatik Depolama Yönetimi (Automatic Storage Management-ASM), veritabanı tarafından kullanılan veri dosyalarını ve işletim sistemi seviyesi diğer dosyaların düzenini, ikiden fazla sayıdaki fiziksel disklere dağıtarak otomatikleştirmedir. ASM ortamına, yeni fiziksel diskler ilave edildiğinde veritabanı dosyaları, bu tanımlanan yeni "disk grubuna" optimum performans için yeniden dağıtılır. Bu multiplex özelliği veri kaybı olasılığını ortadan kaldırır ve yedeklerin farklı disklerde saklanması seçeneğine nazaran daha yüksek performans ve kolay yönetim sağlar.
Biz örneğimizde, ASM mimarisini kullanacağız.

ORACLE ENTERPRISE LINUX 5.0 ÜZERİNDE ORACLE 11g ENTERPRISE EDT. VE ASM KURULUMU
Örnekte yer alan Oracle 11g veritabanı için Oracle Enterprise Linux 5.0 işletim sistemi kullanılmış ve kurulum Wmware ESX Server 1.0.5 platformunda yapılmıştır.
Oracle 11g kurulumu için minumu gerekli olan OEL 5.0 gereksinimleri aşağıda yer almaktadır.
  • Fiziksel RAM : 1024 MB
  • Kernel : 2.6.18 (uname -r komutu ile kernel verisyonu görülebilir)
  • Disk alanı: /tmp için 200 MB, / için 3,6 GB boş disk alanı
  • ASM için ilave 2 fiziksel disk gereklidir(tercihen RAID-1 yapılandırlımış)
  • Web browser olarak Mozilla 1.7 veya Firefox 1.5
  • Alttaki Linux rpm paketleri ayrıca yüklenmeli( OEL 5.0 kurulum CD leri içinde yer almaktadır)
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11 (32 bit)

Oracle 11g kurulumu  öncesi LINUX üzerinde yapılacak işlemler;
Kurulum öncesinde, OEL 5.0 işletim sistemine "root" kullanıcısı olarak oturum açarak, adım-adım aşağıda yer alan bir takım ayarların yapılması gerekmektedir.
            1.  /etc/hosts dosyası altında ip ve host eşleştirilmesi yapılmalıdır(eğer isim çözümleme için DNS kullanılıyorsa, bu seçenek opsiyoneldir)
127.0.0.1     localhost.oradata.net    localhost
192.168.2.10      linux1.oradata.net         linux1

              2.     Aşağıdakileri /etc/sysctl.conf dosyasına ekleyin ve ekledikten sonra /sbin/sysctl  -p komutunu çalıştırarak kernel parametrelerini değiştirin.
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=262144

               3.     /etc/pam.d/login dosyasına aşağıdaki değerleri ekleyin.
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so

                4.   Aşağıdaki parametreleri /etc/security/limits.conf dosyasına ekleyin
oracle               soft      nproc      2047
oracle               hard    nproc      16384
oracle               soft      nofile       1024
oracle               hard    nofile       65536

                5.   Yeni kullanıcı ve bu kullanıcı için gerekli grupları oluşturun ve yeni bir şifre girin.
#  groupadd oinstall
#  groupadd dba
#  groupadd oper
#  groupadd asmadmin
#  useradd -u 500 -g oinstall -G dba,oper,asmadmin oracle
#  passwd oracle

                6.  Oracle kurulumunun yapılacağı dizinleri ve klasörleri oluşturun ve ilgili kullanıcı-gruba sahiplik verin.
#  mkdir -p /u01/app/oracle/product/11.1.0/db_1
#  chown -R oracle:oinstall /u01
                7.  Oracle kullanıcısı olarak oturum açın ve aşağıdakileri /home/oracle/.bash_profile dosyası içine ekleyin.
ORACLE_HOSTNAME=linux1.oradata.net; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID

if  [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
       ulimit -p 16384
       ulimit -n 65536
     else
      ulimit -u 16384 -n 65536
    fi
  umask 022
fi


ASM için fiziksel disklerin Vmware ESX Server üzerinde yapılandırılması 
Senaryomuzda kullanmak üzere 3 adet fiziksel diski Vmware platformunda ekleyeceğiz.  DATA ve RECO1 olmak üzere 2 adet ASM disk grubu kullanacağız. Bunlar aşağıdaki disklere işaret edecek;
DATA1 ->  /dev/sdb1
DATA2 ->  /dev/sdc1
RECO1 -> /dev/sdd1
Flashback database olarak kullanacağımız disk alanımız RECO1 olacak ve mesela, herhangi bir tablodan silinen ve commit edilen kayıtları "as of timestamp" komutu ile ilgili zaman skalasından geri getirme işlemi (flashback query) gibi olağanüstü durumlarda kullanılacak bilgileri içerir. Böylece yedekten erişilemeyecek verilerin kaybıda engellenmiş olur(1 saat öncesi yanlışıkla silinen kayıtların geri çağrılması gibi durumlar v.b)
DATA disk grubunda ise veritabanı dosyaları yer alacaktır ve her iki disk birbirleri ile senkronize olarak verileri paylaşmaktadır.
 Örnekteki her 2 disk grubunada, disk alanı yetersiz olduğu durumlarda ilave diskler ilave edilebildiği gibi, sorunlu olan disklerde kolayca disk grubundan çıkarılabilmektedir.

1.      Vmware makinemizde OEL 5.0 işletim sistemini root kullanıcı olarak shutdown -h now komutu ile kapattıktan sonra Wmware Server sistemine 3 adet sanal disk ekleyeceğiz.
2.       Edit Virtual Machine Settings > Add > Hard Disk seçeneklerini tıklıyoruz.
3.       Create a new hard disk seçeneğini seçerek NEXT düğmesine tıklıyoruz.
4.       SCSI seçeneğini değiştirmeden NEXT düğmesine tıklıyoruz.
5.       Disk kapasitesi olarak 4GB giriyorum ve Allocate All Disk Space seçeneğini seçip NEXT düğmesine tıklıyorum.
6.       asm1.vmdk adını verdikten sonra aynı pencerede ADVANCED sekmesinden Virtual Device Node olarak SCSI 1:1 ve mode olarak Independent - Persistent seçeneğini seçip FINISH düğmesine basıp ASM disk grubunda kullanmak üzere ilk diskimizi oluşturuyorum.
7.       Sırasıyla ikinci ve üçüncü disklerimizi oluşturmak için 2-6 arasındaki maddeleri teker teker uygulayarak, disk isimlerini sırasıyla asm2.vmdk ve reco1.vmdk olarak veriyorum.
8.       Fiziksel diskleri /dev/sdb1, /dev/sdc1 ve /dev/sdd1 partitionları olarak oluşturmak için makimemizi çalıştırarak root kullanıcısı ile oturum açıyoruz ve açacağımız terminal penceresinde aşağıdaki kırmızı renkte yazılı komutları giriyoruz.
# fdisk  /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-522, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522):
Using default value 391
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Sırasıyla /dev/sdc1 ve /dev/sdb1 disk partitionlarını oluşturmak için üstteki adımları takip ediyoruz. (fdisk , n, p , 1 , ENTER tuşuna bas, ENTER tuşuna bas, w)
9.       Oracle kullanıcımızın oluşturulan sdb1, sdc1 ve sdd1 partitionlarındaki ASM disk gruplarında veritabanı dosyalarını kurabilmesi için sahiplik ve erişim izinleri vermemiz gerekmektedir. Bu amaçla /etc/rc.local dosyasını açarak içine aşağıdaki satırları ekliyoruz ve makinemizi reboot ediyoruz.
                      chown oracle:oinstall /dev/sdb1
                      chown oracle:oinstall /dev/sdc1
                      chown oracle:oinstall /dev/sdd1
                      chmod 600 /dev/sdb1
                      chmod 600 /dev/sdc1
                      chmod 600 /dev/sdd1
10.       Reboot ederek tekrar açılan makinemizide root kullanıcısı ile oturum açarak ASM disk gruplarını oluşturacağız. Bu amaçla sırasıyla aşağıdaki koyu yazılı komutları terminal penceresinde çalıştıyoruz.

# service oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [ OK ]
Loading module "oracleasm": [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]
 Oracle adlı kullanıcı ve bu kullanıcının asıl üyesi olduğu oinstall grubu Oracle veritabanı kurulumda kullanılacağından, ASM sürücü kütüphanesinde bu kullanıcı ve grubuna sahiplik atadık. Her reboot esnasında ASM sürücüsünün otomatik çalıştılması, konfigürasyon dosyasının yazılması-yüklenmesi ve fix izinlerin atanmasını EVET seçeneği ile kabul ettikten sonra şimdi ASM disklerini aşağıdaki komutları çalıştırarak MÜHÜRLEYECEĞİZ ve ardından sistemimizi reboot edeceğiz.

                  # service oracleasm createdisk DATA1 /dev/sdb1
                  # service oracleasm createdisk DATA2 /dev/sdc1
                  # service oracleasm createdisk RECO1 /dev/sdd1              
                 # service oracleasm scandisks
                 
# service oracleasm listdisks

Bir sonraki yazıda ASM disk grupları üzerinde Oracle 11g veritabanı kurulumunu anlatacağız.

1 yorum:

  1. Hocam bu asm mimarisi geldi geleli oracle'ı kurmak epey zorlaştı. Aslında zor değil de biraz linux bilmek gerekli. Fakat sizin adım adım asm mimarisinde bu kurulum bilgisi çok faydalı oldu. Elinize sağlık.

    YanıtlaSil