Hurriyet

6 Eylül 2013 Cuma

Linux / Unix İşlem: Oracle Shell Scripting ve Loglama

Windows

Windows'ta Oracle Script'leri çalıştırmak için  ilk önce komutlarımızı windows'ta bir dizine kaydetmemiz lazım. Göstereceğimiz ilk örnek sql scripti yazmak ve çalıştırmak olacaktır.

Sql Script İçeriği:,

Sql scriptimizde bu örneğimizde basit bir işlem yapacağız. Sonrasında bunun çıktılarını göreceğiz. Aşağıda yazdığımız scriptimizi "C:\abc.sql" olarak kaydedelim.

CONNECT berke/berke
 SPOOL C:\abc.log  
 SET LINESIZE 100  
 SET PAGESIZE 50  
 SELECT *  
 FROM hr.employees;  
 SPOOL OFF  
 EXIT;  

Yukarıdaki script'de basitçe sample schema'mızdaki employees tablosuna bir select atarız.Çıkan sonuçları da C:\ dizinindeki abc.log 'unun içine atarız. Bağlanırkenki kullanıcı adı ve şifrenizi değiştirmeyi unutmayın. Buradaki kullanıcı hr tabloları üzerinde yetki sahibi bir kullanıcıdır.

Bu scriptimizi istersek sqlplus'ta çalıştırabiliriz. 

 cd C:\  
   
 sqlplus berke/berke  
 SQL>@abc.sql  

Kendimizi yukarıdaki kodlardan da kurtarabiliriz. İşlemlerimizi daha otomatik bir hale getirmek için bir batch file yaratabiliriz. Bat dosyamızı C:\abc.bat olarak yaratalım.

  
 cd C:\  
 sqlplus /nolog @C:\abc.sql  

Bat dosyamız içerisine yukarıdaki kodları yazıp çalıştırırsak programımız istediğimiz gibi çalışır.

Peki bu bat file'ın otomatik çalıştırılması için ne yapılması gerekir?

Windows'ta bu işlem "Scheduled Tasks Wizard" adlı yerden gerçekleştirilir. (Start > Programs > Accessories > System Tools > Scheduled Tasks)

Unix ve Linux(Method 1)

Unix örneğimizde de yukarıda yazdığımız sql script örneğimizi kullanacağız. Sql scriptimizi alıp Linux veya Unix ortamlarda da aynı şekilde çalıştırabiliriz.  Windows ortamdan farklı olarak batch dosyası yaratmak yerine bir script dosyası yaratırız.

 #!/bin/bash  
 sqlplus /nolog @/home/oracle/Desktop/abc.sql  

Bu script dosyasını yarattıktan sonra abc.sh olarak kaydederiz. Bununla birlikte scriptimize çalıştırmak için chmod ile yetki vermemiz gerekir.

 chmod 777 /home/oracle/Desktop/abc.sh  


Unix ve Linux(Method 2)

Linux'taki başka bir metod ise yukarıdaki gibi bir tane sql dosyası bir tane de script dosyası yaratmak yerine sadece bir script dosyası yaratıp yukarıdaki işlerden kendimizi kurtarmamızı sağlar.

 #!/bin/bash  
 sqlplus /nolog << EOF  
 CONNECT berke/berke  
  SPOOL /home/oracle/Desktop/abc.log   
  SET LINESIZE 100   
  SET PAGESIZE 50   
  SELECT *   
  FROM hr.employees;   
  SPOOL OFF   
  EXIT;   
 EOF  

Buradaki script'imizede yukarıdaki örneğimizde verdiğimiz gibi tekrar chmod ile yetkilerini verdikten sonra çalıştırabiliriz. Bu methodumuzu Windows'ta da uygulayabiliriz. Yani orada da bir bat dosyası bir sql dosyası yaratmak yerine sadece bir bat dosyası çalıştırıp, bat dosyası içine aşağıdaki bilgileri bu örnek için yapıştırabiliriz.

 cd C:\   
  sqlplus /nolog <

Unix ve Linux'ta Script'ten Nasıl Değer Döndürebiliriz?

Yazdığımız scriptlerde amacımız eğer bir değer geri döndürmek ise sorgumuzun sonuçlarını alıp ekrana basmamız ve script içinde bu değeri işlememiz gerekir. Aşağıdaki örnekte employees tablosundan çektiğimiz sonuçları x değişkenimizin içine atarız. Sonrasında sql scriptinin içi bittiğinde console a geri döner ve eğer hiç bir sonuç yoksa bunu ekrana basar.

Script'lerden değer döndürmede sorun birden fazla satır ve değer geldiğinde oluşmaktadır. Bu durumda sonuçların parse edilmesi ve istenen sonucun ayrılması gerekmektedir; ancak tek sonuç geliyorsa işimiz kolaydır.

#!/bin/bash  
 x=`sqlplus -silent berke/berke <





Hiç yorum yok:

Yorum Gönder