30 Nisan 2009 Perşembe

JDBC url for oracle RAC

If you have to connect to oracle RAC (Real Application Cluster) using JDBC with thin driver, the classic url:
jdbc:oracle:thin:@hostname:1521:SID

doesn’t work and you get the error ORA – 12505.Instead, you must use this url:

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service)))

If you have an oracle client, like toad, check the tsnames.ora for the correct values of SERVICE_NAME and host.

21 Nisan 2009 Salı

Database instance kontrol ve başlatma

ps -efgrep smon

komutu ile ayakta olan database instance larını görebilirisin yada

sqlplus sys@SID as sysdba diyerek bağlanabiliyorsan ayakta demektir o SID e ait instance


ayakta değilse

export ORACLE_SID=yoursidname
dbstart

ile çalıştırabilirsin

4 Nisan 2009 Cumartesi

ORACLE_SID ve ORACLE_HOME değiştirme

terminalde

ORACLE_SID=yeniadi enter
ORACLE_HOME=yeni home adresi enter
export ORACLE_SID ORACLE_HOME enter

test etmek için de
echo $ORACLE_HOME
echo $ORACLE_SID
kullanılabilir.

Database Configuration Assistant

$ORACLE_HOME/bin altında dbca uygulaması sayesinde yeni veritabanı oluşturabilir ve var olanları yönetebiliriz....

3 Nisan 2009 Cuma

Oracle Enterprise Linux 5.1′e Oracle 10g Veritabanı Kurulumu

Oracle tüm yazılımlarını websitesinden indirebilmenize olanak tanır. Bu yazılımları ister eğitim, ister deneme amaçlı olarak, zaman sınırı olmadan kullanabilirsiniz. Yazılımları ticari amaçla kullanmadığınız sürece her hangi bir lisans ücreti ödemenize gerek yoktur. Şimdi beraberce Oracle 10g veritabanı yazılımını bir Linux sunucuya nasıl kurabileceğimizi göreceğiz.

Oracle 10g veritabanını (Oracle websitesine ücretsiz üye olduktan sonra) şu linkten indirebilirsiniz:

http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linuxsoft.html

Öncelikle elinizde Oracle kurulumu için hazırladığınız, Linux işletim sistemi yüklü bir sunucu olduğunu varsayıyorum. Oracle Enterprise Linux’ı bir sisteme nasıl kuracağınızı “Oracle Enterprise Linux 5.1 Kurulumu” yazımda anlatmıştım. Şimdi bu sunucuya Oracle 10g veritabanını kuracağız.

İlk olarak sisteme “oracle” kullanıcısı olarak login olun. X Window Masaüstüne girdiğinizde, menüleri kullanarak bir terminal ekranı açın ve “su -” komutu ile root kullanıcısına geçin. root kullanıcısı olmamızın sebebi, sistemin root dizinine (/ dizini) oracle veritabanını kuracağımız dizini oluşturmak.
$ su -

  1. mkdir /u01

  2. chown oracle:oinstall /u01





u01 isimli dizini oluşturmak oracle’ın common practice’lerinden biridir. Oracle Flexible Architecture metodu, oracle ürünlerini bu şekilde isimlendirilmiş bir dizine kurmanızı tavsiye eder. İsterseniz siz başka bir isimde bir klasör (dizin) oluşturabilirsiniz.

Oracle 10g Installer, Redhat ile uyumlu olmasına rağmen Oracle Enterprise Linux dağıtımını uyumsuz bir Linux dağıtımı olarak görecektir. Installer’ın işletim sistemi kontrolünde hata vermemesi için, işletim sistemi adını değiştiriyoruz:
# echo redhat-4 > /etc/redhat-release

  1. exit





root kullanıcısı ile yapacaklarımız şimdilik bu kadar. exit ile root kullanıcısından çıkıp, oracle kullanıcısının bash ayar dosyasını (.bashrc) değiştirmeye başlıyoruz:

Grafik ekranda (X Window - GNOME) çalıştığımız halde ben genelde editor olarak gedit gibi araçlar yerine, vi editörünü kullanırım. Bence Linux ile uğraşacaksanız “vi” editörüne alışmanız gerekli. Bununla ilgili küçük bir klavuz hazırlayacağım, ileri ki zamanlarda blogumda bulabilirsiniz.

İstediğiniz bir editör ile home/oracle/.bashrc(dikkat bashrc değil) dosyasını açıp içine şunları ekleyiniz
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH

umask 022

Bu yaptığımız ayarların etkin olabilmesi için terminal penceresini kapatıp, yeni bir terminal açmamız gerekli. Bunu yaptıktan sonra download ettiğimiz oracle kurulum dosyasını unzip ile açıyoruz ve kurulum dosyalarının bulunduğu dizine geçiyoruz:
$ unzip
$ cd database

Bu ön hazırlıklardan sonra Java ile yazılmış olan Oracle Universal Installer’ı çalıştırıp, kurulumu gerçekleştirebiliriz:
$ ./runInstaller

Öncelikle karşımıza kurulumu nasıl yapacağımızı soran ekran geliyor:



Bu ekranda eğer basic installation‘ı seçersek, neredeyse hiç bir ayar yapmadan”Next’lere tıklayarak kurulumu tamamlayabiliriz. Ben daha ayrıntılı ayarlar yapabileceğim advanced installation‘ı seçip Next’e tıklıyorum.



Installer .bashrc’e girdiğimiz değerler sayesinde ORACLE_BASE bilgisini okuyup, bir inventory dizini seçecektir. Bu dizin, yüklediğimiz Oracle ürünleri ile ilgili bilgileri tutan dosyaları barındıracaktır. Varsayılan değerini kabul edip Next ile bir sonraki adıma geçiyoruz:



Oracle veritabanının hangi sürümünü (Enterprise veya Standard) kuracağımızı bu adımda seçiyoruz. İstersek “custom” seçeneği ile veritabanı birleşenlerini tek tek seçebiliriz.



Oracle veritabanı dosyalarının yükleneceği HOME dizinini seçiyoruz. Bu kısımda da her hangi bir şey yapmamız gerek olmayacak çünkü HOME dizinini .bashrc’de tanımladığımız ORACLE_HOME’dan alacak.



Bu adımda oracle universal installer (OUL), sistemin doğru olarak ayarlanmadığını (örneğin swap boyutu, kernel parametreleri vb.) kontrol ediyor. Ben bu kısımda bütün kontrollerin “Succeeded” olmasına dikkat ediyorum. Eğer OUL bu kontrollerde her hangi bir hata veya uyarı verirse, detayları “X requirements to be verified” yazısının altındaki textbox’da görebilirsiniz.



Şimdi kurulum sırasında veritabanı yaratılacak mı, yoksa bir ASM mi yaratılacak (ASM’ye ilerde değineceğim) yoksa sadece oracle yazılımı mı yüklecenecek onu şeçiyoruz. Eğer bu kısımda veritabanını yarat seçeneğini seçmezsek, ve sadece “software” kurulumu yaparsak, ilerde dbca (database configuration assistant) aracını kullanarak manuel olarak da veritabanı yaratabiliriz. Veritabanını yaratmasını istediğimizden, bu kısmı NEXT ile geçiyoruz.



Bu ekranda kuracağımız veritabanının tipini seçiyoruz. “Genel ihtiyaca” yönelik olanı, yani varsayılanı seçip Next’e basabiliriz. OLTP sistemler için “Transaction Processing”, veri ambarı uygulamaları için “Data Warehouse” ve ileri düzey planlama gerektiren veriabanları için “Advanced” seçeneğini işaretleyebilirsiniz.



Veritabanına vereceğimiz ismi ve veri tabanında kullanmak istediğimiz dil ayarlarını buradan seçiyoruz. Ben veritabanına isim olarak orcl verdim, zaten .bashrc dosyasında da ORACLE_SID değeri olarak orcl yazmıştım. Eğer veritabanı ismini değişik verecekseniz, .bashrc’de de değişiklik yapmayı unutmayın. Karakter kodlaması olarak WEISO8859P9′u seçebilirsiniz. Blogum ve Oracle kurslarında kullanılan örnek schemalara sahip olmak istiyorsanız “create database with sample schemas” seçeneğinin işaretli olmasına dikkat edin.



Bu ekranı next ile geçiyoruz. İstersek burada veritabanının erişebileceği bir SMTP sunucusunun adresini girip, veritabanında oluşan hatalarda, veritabanının bize email atmasını sağlayabiliriz.



Bu ekranda veritabanını hangi dizine yükleyeceğimizi seçiyoruz. Eğer ASM teknolojisini kullanmak istersek file system yerine onu seçebiliriz. Raw Devices artık pek kullanılmadığı için onu göz ardı edebilirsiniz. Bu ekranı next ile geçiyoruz.



Şimdilik otomatik yedekleme ile ilgili bir ayar yapmayacağımızdan, bu ekranı Next ile geçiyoruz.



Veritabanımızdaki 4 önemli user için tek tek veya hepsine birden şifre tanımlaması yapıyoruz. Sisteminizin güvenliği açısından bunları ayrı şifreler vermenizi öneririm, ama ben bu veritabanını test için kurduğumdan hepsine ortak şifre verdim.



Özet ekranında yaptığımız tüm seçimlerin bize raporu gösteriliyor. Eğer seçimlerinizde hata yoksa, “install” düğmesine basıp, dosyaların kopyalanmasını başlatıyoruz:



Dosyalar kopyalanıp, veritabanı yazılımı çalışmaya hazır hale geldikten sonra, dbca aracı çalışıp veritabanını yaratıyor:



Bu işlem bittikten sonra, yaratılan veritabanında oluşturulmuş schemaların şifrelerini değiştirebileceğimiz ekran geliyor, bu ekranı OK düğmesine tıklayarak geçebilirsiniz.



OK düğmesine basınca Linux ve Unix sistemlerinde kurulumun önemli adımlarından bir karşımıza geliyor.



OUL, oracle kullanıcısı olarak çalıştırıldığından root yetkisine sahip değil ve bizim bir terminal açıp, root yetkisi ile ekranda yeri belirtilmiş olan orainstRoot.sh ve root.sh dosyalarını çalıştırmamız gerekiyor. Bu scriptleri çalıştırmdan ekrandaki OK tuşuna basmayınız!



Daha önce yaptığımız gibi bir terminal açıp, bu iki scripti çalıştırıyoruz. Script bizden “local bin” dizinini istediğinde <ENTER>’a basıp varsayılan değeri kabul etmemiz yeterli. Bu işlemi tamamladıktan sonra terminal penceresini kapatıp, installerdaki OK tuşuna basıyoruz ve kurulum tamamlanıyor.



Veritabanın dbstart komutuyla açılabilmesi için, /etc/oratab dosyasında şu değişikliği yapıyoruz:
orcl:/u01/app/oracle/product/10.2.0/db_1:N

orcl:/u01/app/oracle/product/10.2.0/db_1:Y

Böylece instance başladığında Oracle, “orcl” veritabanını açacaktır. Veritabanını oracle kullanıcısı ile bağlanıp, dbstart ile çalıştırabilir ve dbstop ile kapatabilirsiniz. Bu iki komut sizden oracle’ı kurarken belirlediğiniz home dizinini isteyecektir. Biz .bashrc’ye bu bilgiyi girdiğimizden, bu iki komutu şu şekilde kullanabiliriz:

(konsolda oracle kurulu dizin içindeki bin klasörünün içine gittikten sonra)
$ ./dbstart $ORACLE_HOME
$ ./dbstop $ORACLE_HOME

Oracle 10g’nin Linux sürümünde bir bug var. Bu yüzden dbstart doğru çalışmıyor. Bunu düzeltmek için /u01/app/oracle/product/10.2.0/db_1/bin/dbstart dosyasını bir editör ile açıp,
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

satırını bulun. Bu satırı,
ORACLE_HOME_LISTNER=$1

olarak değiştirin. Bu işlem sonrası artık dbstart $ORACLE_HOME komutu hatasız çalışacaktır. Linux ve Solaris sistemlerde, sistem reboot edildikten sonra, Oracle veritabanı otomatik başlamaz. Veritabanını ya manuel olarak açmanız ya da bu işlemi otomatikleştiren bir script yazmanız gerecektir. Otomatik olarak başlatmak içi şuna benzer bir script kullanabilirsiniz:
# chkconfig: 345 99 10

  1. description: Oracle otomatik baslangic scripti.

  2. # (C) 2008 Gokhan Atil - www.gokhanatil.com

  3. ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1


ORACLE_USER=oracle
ORACLE_SID=orcl

export ORACLE_SID ORACLE_HOME

case “$1″ in
start)
su $ORACLE_USER -c $ORACLE_HOME/bin/dbstart $ORACLE_HOME

  1. su $ORACLE_USER -c “$ORACLE_HOME/bin/emctl start dbconsole”


;;
stop)

  1. su $ORACLE_USER -c “$ORACLE_HOME/bin/emctl stop dbconsole”


su $ORACLE_USER -c $ORACLE_HOME/bin/dbshut $ORACLE_HOME
;;

  • )


echo “Kullanim: /etc/init.d/dbora startstop veya service dbora startstop”
exit 1
;;
esac

exit 0

Bu scripti root kullanıcı olarak /etc/init.d/ içinde “dbora” adıyla yaratın. İsmin dbora olması zorunlu değil ama genelde bu isim verilir. Dosya modunu 755 yapın (çalıştırıabilir dosya olsun) ve sonra chkconfig –add dbora komutunu çalıştırarak sisteme servis olarak tanıtın. Bu sayede sunucu açıldığında veritabanıda açılacaktır:
# cd /etc/init.d/

  1. chmod 755 dbora

  2. chkconfig –add dbora





Kurulum sırasında ve sonrasında yaşadığınız problemlerle ilgili sorularınızı bana sorabilirsiniz.

2 Nisan 2009 Perşembe

Yeni Veritabanı (Database) Ekleme

oracle dizini/product/10.2.0/db_2/network/admin/tnsnames.ora içindeki bilgileri kendi oracle ınızda aynı dosyaya kopyalayacaksınız. hepsi bu kadar...