SVN Repository i Başka Sunucuya Taşıma

Merhabalar,

Bu yazımda SVN sunucumuzda bulunan repository i başka bir sunucuya nasıl aktaracağımdan bahsedeceğim. Aslında burda yapacağımız iş basit olarak yedek alma ve aldığımız yedeği başka sunucuda geri yükleme işidir.

  1. Repository inizin yedeğini alın.
  2. Yedek alma işlemini, svn in komutlarından “svnadmin” i kullanarak yapıyoruz. Aşağıdaki komutu kullanarak yedeğinizi alabilirsiniz.

    svnadmin dump /path/to/repository > repo_name.svn_dump
    

    Bu komut repository de bulunan tüm revizyonların da yedeğini alacaktır.

  3. Taşıyacağınız sunucuda aynı isimde bir repository oluşturun.
  4. Not: İlk önce taşıyacağınız sunucuya svn kurmanız gerekmektedir. Kurulum için buraya bakabilirsiniz.
    Aşağıdaki komutu çalıştırarak yeni bir repository oluşturabilirsiniz.

    svnadmin create /path/to/repository
    
  5. Almış olduğunuz yedeği Yeni sunucudaki boş repository e geri yükleyin.
  6. Almış olduğumuz yedeği yeni sunucuya taşıyoruz ve aşağıdaki komutu çalıştırıyoruz.

    svnadmin load /path/to/repository < repo_name.svn_dump
    

Artık repository miz yeni sunucuda aynı özelliklerle ve içeriklerle çalışmaktadır.

Oracle Enterprise Linux e SVN Sunucu Kurulumu

Merhabalar,

Bu yazımda Oracle Enterprise Linux e SubVersioN (SVN) kurulumunu anlatacağım. SVN, bir grup insanın aynı proje üzerinde ortak çalışmasını sağlayan ve geliştirdikleri kodları ortak bir makinede tutarak birbirleriyle çakışmasını önleyen, kodların başka kullanıcılar tarafından ezilmesini önleyen ve geçmişe dönük olarak kodları tutabilen bir uygulamadır.
Şimdi kuruluma başlayabiliriz:

  • RHEL tabanlı bir işletim sisteminde öncelikle SVN için gerekli olan paketleri kurun.
  • # yum install httpd mod_dav_svn subversion
    
  • SVN repository oluşturmak için aşağıdaki komutları çalıştırıyoruz:
    # mkdir /var/www/svn/
    # cd /var/www/svn/
    # svnadmin create testRepo
    
  • Bu repository i apache kullanıcısına atıyoruz.
  • # chown -R apache:apache testRepo
    
  • SVN konfigurasyon dosyasında bazı tanımlamalar yapmamız gerekiyor.
    /etc/httpd/conf.d/subversion.conf dosyasına aşağıdaki bilgileri girin.
  • # vi /etc/httpd/conf.d/subversion.conf
    
       DAV svn
       SVNParentPath /var/www/svn  
       AuthType Basic
       AuthName "Subversion repositories"
       AuthUserFile /etc/httpd/conf.d/svn.users 
       AuthzSVNAccessFile /var/www/svn/testRepo/conf/authz 
       Require valid-user
    
    

    Yukarıdaki dosyada bulunan,
    SVNParentPath parametresi svn repository lerinin kurulacağı klasörü gösteriyor.
    AuthUserFile parametresi ise svn repository sine erişecek olan kullanıcıların kayıt edileceği dosyayı gösteriyor.
    AuthzSVNAccessFile dosyası ise kayıtlı kullanıcıların repository olan yetkilendirilmesini yapıyor.

  • Repository erişecek kullanıcıları aşağıdaki kod ile oluşturuyoruz.
    Eğer parola dosyası yoksa “htpasswd -cm” parametresiyle çalıştırıyoruz.
  • # htpasswd -cm /etc/httpd/conf.d/svn.users oracle
    New password:
    Re-type new password:
    Adding password for user oracle
    
  • Eğer mevcut kullanıcıyı güncellemek istiyorsak ya da yeni kullanıcı ekleyeceksek “htpasswd -m” parametresiyle çalıştırıyoruz.
  • htpasswd -m /etc/httpd/conf.d/svn.users oracle2
    New password:
    Re-type new password:
    Adding password for user oracle2
    
  • Konfigurasyon dosyasında belirttiğimiz kullanıcı listesi dosyasını sorguladığımızda eklediğimiz kullanıcıları görebiliriz.
  • # cat /etc/httpd/conf.d/svn.users
    oracle:$apr1$9t19J…$hCF2GJTlizZfnPjKyk9rk/
    
  • Repository erişecek kullanıcıların yetkilendirilmesi için aşağıdaki kodu çalıştırıyoruz:
  • # vi /var/www/svn/testRepo/conf/authz
    ## grup oluşturmak için
    ## group_adi = kullanici_adi
    [groups]
    developer = oracle
    other = onur.cinar
    
    ##repository ye tanımlı kullanıcılara yetki vermek için
    ## [repository_adi/ repository klasörü]
    ## kullanıcı ya da group adı = (r,rw) yetkilerinden biri
    ## r = read, rw = read – write
    
    [/]
    @other = r
    @developer = rw
    
  • Httpd servisini restart edip, başlangıçta çalışması için chkconfig e yazıyoruz.
  • # /etc/init.d/httpd restart
    # chkconfig httpd on
    

SVN sunucumuz hazırdır. Kendi locallerinizde olan SVN clientlarla sunucuya bağlanabilirsiniz.

Linux İşletim Sistemlerinde sunucu açıldığında otomatik olarak Oracle Veritabanını açmak

Merhabalar,

Geçenlerde bir müşterimiz için, sunucu açıldığında otomatik olarak veritabanını açan script yazmamız istenildi.
oracle-base.com dan bulduğum script, 11g ve üzeri single instance Oracle Veritabanı versiyonlarında, ve RHEL tabanlı işletim sistemlerinde test edilmiştir.

Öncelikle scriptin servis olarak çalışması için “init.d” klasörünün altına start ve shutdown scriptlerini çalıştıracak olan scripti koymamız gerekiyor.

“/etc/init.d/orclScript” dosyasını root kullanıcısıyla oluşturalım. İsterseniz aşağıdaki linkten bu dosyayı indirebilirsiniz.

orclScript

#!/bin/sh

# Set OS user of Oracle database to ORA_OWNER variable. 
ORA_OWNER=oracle

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        # Remove "&" if you don't want startup as a background process.
        su $ORA_OWNER -c "/home/oracle/dbscripts/startup.sh >> /home/oracle/dbscripts/orclScript.log 2>&1" &

        touch /var/lock/subsys/orclScript
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su $ORA_OWNER -c "/home/oracle/dbscripts/shutdown.sh >> /home/oracle/dbscripts/orclScript.log 2>&1"
        rm -f /var/lock/subsys/orclScript
        ;;
esac

Bu dosyaya chmod 750 yetkisini verelim.

chmod 750 /etc/init.d/orclScript

Bu scriptin otomatik olarak çalışması için chkconfig e girmemiz gerekiyor.

chkconfig --add orclScript

Şimdi veritabanını açıp kapatacak scriptleri oluşturmamız gerekiyor. Bunun için scriptleri koyacağımız klasörü oluşturalım.
Veritabanını açıp kapadığımız OS kullanıcısıyla sisteme bağlanalım ve “home” klasörü altına “dbscripts” klasörünü oluşturalım. Ben “oracle” kullanıcısıyla bağlanıyorum.

# su - oracle
$ mkdir dbscripts

Bu klasörün altına aşağıdaki startup ve shutdown scriptlerini oluşturalım. Bu scriptlerde oracle parametrelerini kendi veritabanı parametrelerine göre değiştirmeyi unutmayın.

startup.sh

#!/bin/bash

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=orcl11g.localdomain
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1
export PATH=$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin:$PATH
export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl

# Start Listener
lsnrctl start

# Start Database
sqlplus / as sysdba << EOF
STARTUP;
EXIT;
EOF

shutdown.sh

#!/bin/bash

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=orcl11g.localdomain
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1
export PATH=$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin:$PATH
export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl 

# Stop Database
sqlplus / as sysdba << EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# Stop Listener
lsnrctl stop

Dosyaları oluşturduktan sonra yazma yetkisi verelim.

$ chmod u+x /home/oracle/dbscripts/startup.sh /home/oracle/dbscripts/shutdown.sh

orclScript servisini kapatıp açtığımız zaman veritabanımız ve listener ımız otomatik olarak açılıp kapanacaktır.

# service orclScript start
# service orclScript stop

Kaynak: oracle-base.com

Linux sunucularda otomatik olarak Huge Page Değeri hesaplamak

Merhabalar,
Büyük SGA e sahip olan veritabanlarımızda huge page ayarı yapmak sanal bellek yönetimi konusunda bize çok büyük kolaylık sağlar. Huge page ayarlamadan önce veritabanımızda Automatic Memory Management (AMM) ayarının yapılmamış olması gerekiyor. Çünkü AMM ve Huge Page Linux sunucularda uyumlu çalışmamaktadır. Onun yerine Huge Page kullanmak istediğiniz sunucularda, Automatic Shared Memory Management ve Automatic PGA Management yapmanız gerekecektir. Diğer önemli nokta ise bu scripti çalıştırmadan önce veritabanınızın çalışır halde olması gerekmektedir.
İlk önce sunucumuzdaki “memlock” değerlerini RAM miktarına göre ayarlamamız gerekmektedir. Örneğin 64 GB RAM imiz varsa, bu değeri KB olarak hesaplayıp, bu değerden küçük bir değer vermemiz gerekecektir. Bu değeri de “/etc/security/limits.conf” dosyasına yazmamız gerekiyor.

vi /etc/security/limits.conf

* soft memlock 60397977
* hard memlock 60397977

Bu ayarı yaptıktan sonra scriptimizi çalıştırabiliriz.
Aşağıdaki scripti veritabanı sunucumuzda oluşturup, çalışma yetkisi verelim.

Scripti buradan indirebilirsiniz.
hugepages.sh

$ chmod +x hugepages_settings.sh
$ ./hugepages_settings.sh
Recommended setting: vm.nr_hugepages = 1496

Gördüğünüz üzere script otomatik olarak bize huge page değerini vermektedir.
Peki buradaki 1496 değerini ne yapacağız?
“/etc/sysctl.conf” dosyasını root kullanıcısıyla açıp uygun bir yere aşağıdaki satırı yazmamız gerekiyor.

....
vm.nr_hugepages = 1496
...

Bu eklemeyi yaptıktan sonra veritabanımızı durdurup, sunucumuzu yeniden başlatmamız gerekecektir.
Sunucuyu yeniden başlattıktan sonra aşağıdaki komutu çalıştırdığımızda Huge Page ayarının yapılmış olduğunu göreceksiniz.

# grep HugePages /proc/meminfo
HugePages_Total: 1496
HugePages_Free: 485
HugePages_Rsvd: 446
HugePages_Surp: 0

Oracle Standby Veritabanı Arşiv Silme Scripti

Merhabalar,
Bu yazımda standby veritabanında biriken yüklenmiş arşivleri temizlemek için kullanabileceğimiz bir scriptten bahsedeceğim.
Scriptimiz Linux ve Unix işletim sistemlerinde çalışıyor ve 3 dosyadan oluşuyor. Şimdi bunları açıklayalım:

maxThreadNumber.sql

// Aşağıdaki sql komutunda veritabanında bulunan thread'lerin max sequence sayılarını öğrenip, maxThreadNumber.tmp adında bir dosyaya yazıyoruz.
// Select sorgusunda max değerden 10 çıkarıyoruz çünkü her türlü ihtimale karşı standby veritabanında en son 10 arşiv logunu tutuyoruz.
connect / as sysdba 
set heading off pages 0 echo off feedback off; 
spool maxThreadNumber.tmp; 
select thread#, max(sequence#)-10 from v$archived_log where applied ='YES' and REGISTRAR='RFS' group by thread# ; 
spool off; 
exit; 

archiveDelete.sh

#!/bin/bash

export ORACLE_HOME=Bu kısıma Oracle Home tam adresini yazacağız. Ör: /oracle/app/product/11.2.0/dbhome_1
export ORACLE_SID=Bu kısıma Oracle SID i yazacağız
export archivePath=Bu kısıma arsiv silme scriptini koyacağımız klasörün adresini yazacağız. Ör: /home/oracle/archiveDelete

## arsivDelete scriptini her çalıştırdığımızda maxThreadNumber.sql scripti maxThreadNumber.tmp adında bir dosya üretiyor. 
## Yeni dosya oluşturmadan önce eskisini siliyoruz.
 rm -f $archivePath/maxThreadNumber.tmp

 $ORACLE_HOME/bin/sqlplus / as sysdba < $archivePath/maxThreadNumber.sql 

## maxThreadNumber.tmp dosyasında veritabanımızda kaç tane thread olduğu yazmaktadır.
## Bu dosyaya göre aşağıda bulunan seq1,seq2.. gibi satırları çoğaltalım.
## Örneğin veritabanımızda 4 tane thread varsa seq2 ve seq3 teki '#' işaretlerini kaldırıp, seq4 için de bir satır oluşturmamız lazım.
 seq1=`cat $archivePath/maxThreadNumber.tmp | awk 'NR==1{print $2}'`
#seq2=`cat $archivePath/maxThreadNumber.tmp | awk 'NR==2{print $2}'`
#seq3=`cat $archivePath/maxThreadNumber.tmp | awk 'NR==3{print $2}'`

$ORACLE_HOME/bin/rman << EOF
 connect target /
 run{
 crosscheck archivelog all;
## Yukarıdaki thread sayısına göre aşağıdaki satırları düzenlemeyi unutmayın.
 delete noprompt archivelog until sequence $seq1 thread 1;
#delete noprompt archivelog until sequence $seq2 thread 2;
#delete noprompt archivelog until sequence $seq3 thread 3;
 }
 EOF
exit

Arşivleri silmek için sadece archiveDelete.sh scriptini çalıştırmamız gerekiyor.

$./archiveDelete.sh

Linux – Volume Group'dan Fiziksel Sürücüleri Çıkarmak

Merhabalar,

Bazen LVM için oluşturmuş olduğunuz fiziksel sunucuları geri almak isteyebilirsiniz. Ya da o fiziksel sürücüleri başka bir LVM için kullanmak isteyebilirsiniz. Fakat bu işlemi yapmadan önce fiziksel sürücüleirn kullanılmadığından emin olmalısınız. Bunun için ‘pvdisplay’ komutunu kullanabilirsiniz. PV Size bölümünde NOT usable yazısını görmelisiniz.

# pvdisplay /dev/hda1

--- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
PV Size               1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV#                   1
PV Status             available
Allocatable           yes (but full)
Cur LV                1
PE Size (KByte)       4096
Total PE              499
Free PE               0
Allocated PE          499
PV UUID               Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7

Eğer fiziksel sürücü kullanılıyorsa, öncelikle verileri başka sürücülere aktarmalısınız. Bunun için pvmove komutunu kullanabilirsiniz.

Diskimiz hazır ise vgreduce komutunu kullanarak fiziksel sürücüyü volume group’dan çıkarabiliriz.

# vgreduce myvg  /dev/hda1

LVM Boyutunu Düşürme

Merhabalar,

Bu yazımda Linux sistemimizde bulunan mevcut LVM diskimizin boyutunu düşürmekten bahsedeceğim. Öncelikle sistemimizde yeterli miktarda boş alan bulunduğunu kontrol etmemiz lazım.
Daha sonra sırasıyla aşağıdaki komutları uygulayın. Bu işlemi uygularken yanlış yaptığınız zaman veri kaybı yaşayabileceğiniz unutmayın.

# umount /oracle
# resize2fs /dev/oraclevg/oraclelv 50000
# lvreduce -L-1G /dev/oraclevg/oraclelv
# mount /home

Oracle DB Konsola Manuel Olarak Database Vault u (/dva) Entegre Etmek

Merhabalar,

Bu yazımda Oracle Database Vault konsol ekranına ( https://hostname:port/dva ) bağlanmak için gerekli olan ayarları manuel olarak yapmaktan bahsedeceğim. Not: Aşağıdaki tüm komutlar Linux / Unix ortamında çalışmaktadır.

Bildiğiniz üzere Oracle Database vault konsolu da aynı Enterprise Manager gibi DB Konsol üzerinde çalışıyor. Buraya Database Vault u entegre etmek için öncelikle DB Konsolu kapatmamız gerekiyor.

  1. $ORACLE_HOME/bin klasörüne gidip, DB Konsol u kapatalım.
    cd $ORACLE_HOME/bin
    ./emctl stop dbconsole
  2. Değişiklik yapmadan önce dosyaların koyasını almamızda yarar var.
    cp $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml.backup
  3. </application-server> elementini aşağıdaki gibi düzenleyin.
    vi $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml
    <application name="dva" path="$ORACLE_HOME/dv/jlib/dva_webapp.ear" parent="default" start="true" />

    Not: $ORACLE_HOME değişkeni yerine tam adresi yazmanız gerekiyor.

  4. Değişiklik yapmadan önce aşağıdaki dosyanın da yedeğini alın.
     cp $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/http-web-site.xml $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/http-web-site.xml.backup
  5. </web-site> elementini aşağıdaki gibi düzenleyin:
    <web-app application="dva" name="dva_webapp" load-on-startup="true" root="/dva" shared="true"/>
  6. Oracle Database Console yeniden başlatın.
    cd $ORACLE_HOME/bin 
    ./emctl start dbconsole

Oracle Database Vault Administrator konsoluna aşağıdaki URL den ulaşabilirsiniz:

https://hostname:port/dva

Eğer port numarasını hatırlamıyorsanız  ORACLE_HOME/host_sid/sysman/config/emd.properties dosyası içerisinde bulunan REPOSITORY_URL alanından öğrenebilirsiniz. Genellikle port numarası Oracle Enterprise Manager Database Konsol port numarasıyla aynıdır.

Oracle Linux de LVM Boyutunu Arttırma

Merhabalar,

Bu yazımda Oracle Linux üzerinde bulunan LVM disklerinin boyutunun arttırılmasından bahsedeceğim. LVM boyutunu arttırmak için öncelikle sunucumuza yeni disk atamamız gerekiyor. Diskimizi sunucuya tanıttıktan sonra fdisk komutuyla test edelim.

# fdisk -l

Yeni atanan diskimiz “/dev/sdb” olsun. Öncelikle PhysicalVolume oluşturuyoruz. Bunun için “pvcreate” komutunu kullanıyoruz.

# pvcreate /dev/sdb

Daha sonra LVM bağlı olduğu Volume Group u bulup, ona yeni oluşturduğumuz diski atıyoruz. Sistemde mevcut olan Volume Group ları listelemek için “vgdisplay” komutunu kullanıyoruz.

# vgdisplay

Büyüteceğimiz volume group “VolGroup00” olsun. Bu volume group un boyutunu arttırmak için “vgextend” komutunu kullanıyoruz.

# vgextend VolGroup00 /dev/sdb

Volume group u boyutunu arttırdıktan sonra Logical Volume Group unda boyutunu arttırmamız gerekiyor. “lvdisplay” komutunu çalıştırarak boyutunu arttıracağımız LVM i buluyoruz.

# lvdisplay

Boyutunu arttıracağımız LVM “/dev/VolGroup00/LogVol00” olsun. Bu LVM in boyutunu arttırmak için “lvextend” komutunu kullanıyoruz.

# lvextend -L+#G /dev/VolGroup00/LogVol00

Yukarıdaki “#” işareti yerine sistemimize eklediğimiz disk boyutunu yazıyoruz. Örneğin 20GB lık disk eklediysek, komutumuz:

# lvextend -L+20G /dev/VolGroup00/LogVol00

LVM in boyutunu arttırdık. Son olarak bu LVM den oluşturduğumuz file system in boyutunu artırmaya. Bunun için “resize2fs” komutunu kullanıyoruz.

# resize2fs /dev/VolGroup00/LogVol00

Yukarıdaki komutu çalıştırdıktan sonra df ile yeni diskimizin boyutuna bakabiliriz.

# df -h