Oracle自動備份指令碼(Linux)

2021-07-24 00:02:36 字數 2316 閱讀 6707

之前我在linux crontab有提到第乙個指令碼

#!/bin/bash

#oracle變數設定

export oracle_base=/data/oracle

export oracle_home=/oracle/product/102

export oracle_sid=sidname

export oracle_term=xterm

export path=$oracle_home/bin:/usr/sbin:$path

export ld_library_path=$oracle_home/lib:/lib:/usr/lib

export lang=c

export nls_lang=american_america.al32utf8

#以上**為oracle資料庫執行賬號oracle的系統環境變數設定,必須新增,否則crontab任務計畫不能執行。

date=date +%y_%m_%d #獲取系統當前日期時間

days=5

#設定刪除5天之前的備份檔案

orsid=ip:port/sidname #oracle資料庫伺服器ip、埠、sid

orowner=master_ccpx2 #備份此使用者下面的資料

bakuser=master_ccpx2 #用此使用者來執行備份,必須要有備份操作的許可權

bakpass=passwd #執行備註的使用者密碼

bakdir=/aaa/bbb/oracle_data #備份檔案路徑,需要提前建立好

bakdata=$orowner

"_"$date.dmp #備份資料庫名稱

baklog=$orowner

"_"$date.log #備份執行時候生成的日誌檔名稱

ordatabak=$orowner

"_"$date.tar.gz #最後儲存的oracle資料庫備份檔案

cd$bakdir

#進入備份目錄

mkdir -p $orowner

#按需要備份的oracle使用者建立目錄

cd$orowner

#進入目錄

#匯出資料庫 這裡使用了exp 可以根據需要使用expdp

exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog

#執行備份

tar -zcvf $ordatabak

$bakdata

$baklog

#壓縮備份檔案和日誌檔案

find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #刪除備份檔案

find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #刪除日誌檔案

find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #刪除5天前的備份

#路徑名,指定備份的路徑

filepath = /oracle/orabak

#根據指定日期格式,定義備份資料庫檔名

filename = `date + %y%m%d_%h%m

#切換至指定路徑,並建立資料夾

cd$filepath

mkdir $filename

chmod 775

$filename

#oracle變數設定

export user=oracle;

export oracle_sid=orcl;

export path=$oracle_home/bin:$path;

#匯出資料庫 這裡使用了exp 可以根據需要使用expdp

exp scott/tiger@orcl file="$filename ".dmp log="$filename".log owner=scott rows=y

#打包+加壓

cd ..

tar -cf $filename.tar $filename

rm -rf $filename

gzip $filename.tar

exit

eof

linux使用crontab -e命令增加定時任務:

10 12 * * * sh  /oracle/orabak/orabak.sh

oracle 自動備份指令碼

echo 設定備份檔案存放資料夾.set tbuf e echo 設定備份檔案名 以星期幾命名,即備份檔案只儲存最近一周 set name date set name name 3 set name orcl backup name echo 是否存在同名檔案,若存在則刪除同名檔案.ifexist ...

自動備份指令碼

功能 打包檔案列表中的檔案,存為帶日期標籤的檔案,每天定時備份一次,同時為避免備份量過大,只保留每月底和近一周的副本,最多共18個備份。windows下 backup.cmd rem echo off rem configure rar tool path set rartool c program...

指令碼自動備份Oracle資料庫

bin sh export oracle home oracle base product 11.2.0 dbhome 1 export oracle sid orcl export oracle term xterm export path oracle home bin usr sbin pat...