expdp ile günlük export almak …
Solaris üzerinde backup saklanacak /backup/export_test/ dizinini oluşturuyoruz.
Ardından dizinin sahibini oracle:dba yapıyoruz.
root@test #mkdir -p /backup/export_test/
root@test# chown -R oracle:dba /backup/export_test/
Oracle kullanıcısına geçiş yapıp, sqlplus’a bağlanıyoruz.
root@test # su – oracle
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
-bash-3.00$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sun Feb 19 22:54:44 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Daha sonra ORACLE_BACKUP dizinini oluşturuyoruz..
SQL> CREATE OR REPLACE DIRECTORY
2 ORACLE_BACKUP AS
3 ‘/backup/export_test/’;
Directory created.
Test kullanıcısına bu dizine okuma / yazma hakkı veriyoruz.
SQL> GRANT READ, WRITE ON DIRECTORY SYS.ORACLE_BACKUP TO TEST WITH GRANT OPTION;
Grant succeeded.
Aşağıdaki yazmış olduğumuz shell script ile datapump kullanarak backup almasını ve işlem sonunda bizi mail ile bilgilendirmesini sağlıyoruz.
root@TEST #cat /u01/oracle_backup/oracle_backup.sh
#!/bin/bash
vDateTime=`date ‘+%d_%m_%Y_%H%M’`
vSubDir=`date ‘+%m_%Y’`
vBackupDir=ORACLE_BACKUP
vDmpFile=pump_test_$vDateTime.dmp
vLogFile=pump_test_$vDateTime.log
vSourceDir=/backup/export_test/
vTargetDir=/backup/export_test/
ORACLE_SID=TEST
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_HOME
export ORACLE_SID
# Oracle Yedekleme islemi yapiliyor…
# **************************************************************
echo “1 – Yedekleme islemi basliyor…”
$ORACLE_HOME/bin/expdp TEST/1qaz2wsx@TEST DIRECTORY=$vBackupDir DUMPFILE=$vDmpFile LOGFILE=$vLogFile SCHEMAS=TEST,TESTLOG,TEMP_USER EXCLUDE=TABLE:\”IN \(\TEST_LOG_ES\’\)\” EXCLUDE=STATISTICS
echo “Yedekleme islemi bitti…”
# **************************************************************
# Dosya tasinma islemi
# **************************************************************
echo “2 – Dosyalar yedek klasorune tasima islemi basliyor…”
if [ ! -d $vTargetDir$vSubDir ]; then # yedekleme ait tarih klasoru varmi ? yoksa olustur…
mkdir $vTargetDir$vSubDir
fi
echo “Dosya zipleniyor…”
/usr/bin/gzip -1 $vSourceDir$vDmpFile
echo “Dosya zipleme islemi bitti…”
mv $vSourceDir$vDmpFile.gz $vTargetDir$vSubDir
mv $vSourceDir$vLogFile $vTargetDir$vSubDir
echo “Dosyalari yedek klasorune tasima islemi bitti…”
# **************************************************************
SUBJECT=” haftalik yedekleme islemleri”
EMAIL_ADDRESS=”[email protected]”
mailx -r “[email protected].” -s “$SUBJECT” “$EMAIL_ADDRESS” <<EOF
aylik yedek $vDmpFile dosyasi olarak alinmistir.
EOF
#***************************************************************
Scriptin sahibini oracle:oinstall yapıyoruz.
Oracle kullanıcısına scripti execute etme hakkı veriyoruz.
root@TEST# chown oracle:oinstall oracle_backup.sh
root@TEST# chmod 755 oracle_backup.sh
Son olarak oracle kullanıcısının crontab’ına yazdığımız scriptin düzenli olarak çalışmasını istediğimiz dk/saat/gün/hafta/ periyotları belirtiyoruz.
Aşağıdaki crontabta her haftanın ilk günü gece 02 de düzenli olarak backup scriptimiz çalışır./tmp/oraclebackup.log 2>&1 dosyasına script çalışması esnasında oluşan logları yazar.eğer herhangi bir hata almışsak script çalışmasında bu dosyaya inceleyip bir sonuca varabiliriz.
-bash-3.00$ crontab -e
GNU nano 2.0.9 File: /tmp/crontabpba4YP
#haftalik backup almak icin eklenmistir.
00 02 * * 1 /u01/oracle_backup/oracle_backup.sh > /tmp/oraclebackup.log 2>&1