ORCLE數據庫備份策略
1.通過使用exp和imp命令實現數據庫導出和導入。
有三種模式:
a. 用戶模式: 導出(導入)用戶所有對象以及對象中的數據;
b. 表模式: 導出(導入)用戶所有表或者指定的表;
c. 整個數據庫: 導出(導入)數據庫中所有對象。
如:
普通導出
a.導出一個完整數據庫
exp system/manager file=f.dmp full=y
b.導出數據庫定義而不導出數據
exp system/manager file=f.dmp full=y rows=n
普通導入:
a.完全導入
imp system/manager file=f.dmp full=y
b.數據庫結構存在時,只導入數據
imp system/manager file=f.dmp full=y ignore=y
2.每周進行數據庫備份,以防數據庫被意外破壞後恢復數據
安排如下:
周一: 完全備份(f1) exp xxx/xxx inctype=complete file=f1.dmp
周二: 增量備份(f2) exp xxx/xxx inctype=incremental file=f2.dmp
周三: 增量備份(f3) exp xxx/xxx inctype=incremental file=f3.dmp
周四: 增量備份(f4) exp xxx/xxx inctype=incremental file=f4.dmp
周五: 累積備份(f5) exp xxx/xxx inctype=cumulative file=f5.dmp
周六: 增量備份(f6) exp xxx/xxx inctype=incremental file=f6.dmp
周日: 增量備份(f7) exp xxx/xxx inctype=incremental file=f7.dmp
比如數據庫在周日被破壞,則可用以下方式恢復:
1.創建空的數據庫,同之前的結構。
2.imp xxx/xxx inctype=RESTORE FULL=y FILE=f1.dmp
3.imp xxx/xxx inctype=RESTORE FULL=y FILE=f5.dmp
4.imp xxx/xxx inctype=RESTORE FULL=y FILE=f6.dmp
說明:
完全導出:對整個數據庫的備份
增量導出:是備份上一次完全導出後改變的數據。
累積導出:是備份自上次完全導出後改變的數據。
EXAMPLE:LINUX下備份數據庫
BACKUP_DIR=/home/oracle/backups
if [ ! -d $BACKUP_DIR ]; then
mkdir -p $BACKUP_DIR
fi
DAYS=(Sun Mon Tue Wed Thu Fri Sat) #創建數組
TYPES=(incremental complete incremental incremental incremental cumulative incremental)
day=`date +%w` #取得本周天數,0代表周日,1代表周一
DAY_NAME=${DAYS[$day]} #取得數組的值
TYPE=${TYPES[$day]}
DATE_NAME=`date +%F`
FILE_NAME=${DATE_NAME}-${DAY_NAME}-${TYPE}.dmp #2008-12-8-Mon-complete.dmp
exp xxx/xxx inctype=$TYPE file=${BACKUP_DIR}/${FILE_NAME} > /dev/null
gzip ${BACKUP_DIR}/${FILE_NAME}
find $BACKUP_DIR -mtime +7 -delete #刪除七天前更改過的文件