Linux altında Oracle Database`nin yedeğini aldırma - Zamanlanmış görev ekleme

Linux Yazıları19/01/2008


Windows da hepimizin aşika olduğu zamanlanmış görevler linux da cront denilen bir araç ile yapılır. Bu araç zaman darlığı yüzünden insanların yapmasının zor olduğu uygulamaları otomatik olarak yerine getirir. Komut çalışması olarak 4 adet farklı parametreye bağlıdır, ve kullanımı şu şekildedir:

crontab -l: Tüm kayıtlı crontab görevlerini listeler.
crontab -e: Yeni bir görev eklemek için crontab dosyasını düzenlemek üzere açar.
crontab -d: Güncel crontab görevlerini kaldırır.
crontab -u: Kullanıcı belirlenir.


Diyelim ki kendi kullanıcımıza kayıtlı tüm zamanlanmış görevleri listelemek istersek şu komutu kullanırız:

sudo crontab -u kullanıcı_adı -l

crontab -e komutu ile yeni bir görev eklenmek üzere crontab dosyasının düzenlenmek üzere açıldığını belirtmiştim, fakat açılan dosyaya görev eklemenin özel bir yolu vardır. Eklenecek içeriğin biçimi şu şekilde olmalıdır:

* * * * * kullancı_adi istenen_gorev_adi

Burada;

Birinci * karakteri dakikayı simgeler ve 0-59 arası değerler alır.
İkinci * karakteri saati simgeler ve 0-23 arası değerler alır.
üçüncü * karakteri ayın günlerini simgeler ve 1-31 arası değerler alır.
Dördüncü * karakteri yılın aylarını simgeler ve 1-12 arası değerler alır.
Beşinci * karakteri haftanın günlerini simgeler ve 0-7 arasında değerler alır, burada 0 ve 7 Pazar gününü belirtir.

örneklerle daha iyi anlıyacağınızı zannediyorum. önemli bir not burada verilen tüm örnekler vi(default editor) kullanılarak yapılmaktadır. Ben gibi ilk anlarda zorluk çekmek istemiyorsanız bence ilk önce bu editörün kullanımına bir bakın.

Hergün saat 10:11`de Pidgn programını çalıştıran görevin oluşturulması:

11 10 * * * /usr/bin/pidgin


Haftada bir saat 23:00`da rsnapshot programı ile sistem yedeği alan görevin oluşturulması:

00 23 * * * /usr/local/bin/rsnapshot

Her iki dakikada bir demek için

*/2 * * * *
/usr/local/bin/rsnapshot

Her üç gecede bir demek için

* */3 * * * /usr/local/bin/rsnapshot

kullanabiliriz.

En güzeli kendi ihtiyacım için kullandığım bir örnek. Her gece 00:00 saatinde(yani gece 12 de) Server`ımızda kurulu TKALE isimli oracle database`mizin o andaki zaman bilgisi adıyla yedeğini alacak bir örnek yapalım.

İlk önce Masaüstüne komut dosyasını oluşturalım...

vi /root/Desktop/backup.sh
-------------------------
#!/bin/csh -f

# set your variables
setenv ORACLE_HOME /opt/oracle/product/10.2/db_1
setenv ORACLE_SID TKALE
setenv LD_LIBRARY_PATH ORACLE_HOME/lib
set path = ($path $ORACLE_HOME/bin)

setenv yedekdizin /root/Desktop/YEDEK #yedeğin alınacağı adres
smbmount //192.168.1.100/yedek $yedekdizin -o username=administrator,password=1234,uid=0,gid=0,lfs #agdaki adres yedekdizinine baglaniyor. Lfs parametresi ile smbmount`un 2 Gb`lık sınırı kaldırılmış oluyor.


# run export FULL
exp MAIN/MAIN@TKALE FILE=$yedekdizin/BackupGunluk.dmp LOG=$yedekdizin/BackupGunluk.log OWNER=MAIN

echo "EXPORT ISLEMI TAMAMLANDI"

exit 0
-------------------------

Vi editorunde dosyaamızı kaydettik. şimdi geldi bu yedek alma dosyasının her gün çalışacağı satırları crontab tablosuna eklemeye.

crontab -e
0 0 * * * /root/Desktop/backup.sh

olay bu kadar basit. Artık her akşam gece 12 de belirttiğimiz database`in yedeği alınacak.

Crontab kullanmasını istemediğiniz kullanıcıları engellemek için kullanıcı adını
/etc/cron.d/cron.deny dosyasına ekleyebilirsiniz. Mesela ahmet kullanıcısını engellemek için.

# vi /etc/cron.d/cron.deny
ahmet





Etiketler: