Linux altında Oracle Database`nin yedeğini aldırma - Zamanlanmış görev ekleme
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.Diyelim ki kendi kullanıcımıza kayıtlı tüm zamanlanmış görevleri listelemek istersek şu komutu kullanırız:
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.
sudo crontab -u kullanıcı_adı -lcrontab -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_adiBurada;
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/pidginHaftada bir saat 23:00`da rsnapshot programı ile sistem yedeği alan görevin oluşturulması:
00 23 * * * /usr/local/bin/rsnapshotHer iki dakikada bir demek için
*/2 * * * * /usr/local/bin/rsnapshotHer üç gecede bir demek için
* */3 * * * /usr/local/bin/rsnapshotkullanabiliriz.
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 DBSID
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 MAINUSER/MAINPASS@DBSID FILE=$yedekdizin/BackupGunluk.dmp LOG=$yedekdizin/BackupGunluk.log OWNER=MAINUSER
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 -eolay bu kadar basit. Artık her akşam gece 12 de belirttiğimiz database`in yedeği alınacak.
0 0 * * * /root/Desktop/backup.sh
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