1、配置環境linux
在服務器上安裝oracle精簡客戶端,實如今備份服務器的數據冷備。sql
服務器:備份服務器數據庫
操做系統:Linux Redhat6.3 x64bash
主要功能:在Linux備份服務器上完成數據庫冷備服務器
2、配置目標oracle
無需安裝oracle服務器或客戶端軟件,達到能使用如下功能的目標,並在服務器上進行數據庫備份: 測試
3、軟件準備spa
instantclient-basic-linux-x86-64-10.2.0.3-20070103.zip操作系統
instantclient-jdbc-linux-x86-64-10.2.0.3-20070103.zipcrontab
instantclient-sqlplus-linux-x86-64-10.2.0.3-20070103.zip
instantclient-sdk-linux-x86-64-10.2.0.3-20070103.zip
exp.zip
4、配置步驟
1、安裝包上傳及安裝
root用戶登陸,建立目錄:
# mkdir -p /opt/oracle
將instantclient客戶端壓縮包上傳至/opt/oracle/下,依次解壓程序包
# cd /opt/oracle
# unzip instantclient-basic-linux-x86-64-10.2.0.3-20070103.zip
# unzip instantclient-jdbc-linux-x86-64-10.2.0.3-20070103.zip
# unzip instantclient-sdk-linux-x86-64-10.2.0.3-20070103.zip
# unzip instantclient-sqlplus-linux-x86-64-10.2.0.3-20070103.zip
解壓後,會在/opt/oracle下生成instantclient_11_2文件夾
上傳exp.zip到/opt/oracle/instantclient_10_2下,將exp、imp程序解壓到當前路徑下
# cd instantclient_10_2/
# unzip exp.zip
# chmod 755 imp
# chmod 755 exp
此時應新增出兩個可執行文件和一個文件夾
2、配置環境變量
建立文件/opt/oracle/instantclient_10_2/tnsnames.ora
# vi /opt/oracle/instantclient_10_2/tnsnames.ora
在文件中填入如下內容,粗體部分根據實際狀況修改
格式以下:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.22 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl )
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
打開/etc/profile文件,並在文件末尾添加如下環境變量
# vi /etc/profile
添加以下配置,粗體部分根據實際狀況修改:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_IC_HOME=/opt/oracle/instantclient_10_2
export ORACLE_HOME=$ORACLE_IC_HOME
export TNS_ADMIN=$ORACLE_IC_HOME
export PATH=$PATH:$HOME/bin:$ORACLE_IC_HOME
export LD_LIBRARY_PATH=$ORACLE_IC_HOME:/usr/lib
export ORACLE_SID=orcl
輸入命令使環境變量當即生效
# source /etc/profile
查看環境變量是否成功,出現下圖所示路徑即爲成功,不然檢查環境變量設置
# echo $ORACLE_HOME
測試sqlplus和exp命令:
# sqlplus
# exp
出現如圖所示時即代表配置成功,可正常使用;注意此時若出現報錯,回頭檢查環境變量是否設置正確!
3、配置備份腳本
建立備份用的文件夾
# mkdir -p /opt/bak
建立備份腳本並添加如下內容:
# vi /opt/bak/bak.sh
添加內容,注意修改紅色部分數據庫鏈接地址和帳號:
#!/bin/bash
#bak.sh
source /etc/profile
PATH=$PATH:/bin
export PATH
BAKPATH=/opt/bak
LogFile=/opt/bak/baklog.log
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
rq=`date '+%Y%m%d'`
exp user/pass@ORCL file=$BAKPATH/bak_$rq.dmp log=$BAKPATH/bak_$rq.log owner=user>/dev/null 2>&1
if [ -f $BAKPATH/bak_$rq.dmp ]
then
tar zcvf $BAKPATH/bak_$rq.tar.gz $BAKPATH/bak_$rq.dmp $BAKPATH/bak_$rq.log>> $LogFile 2>&1
rm -f $BAKPATH/bak_$rq.dmp>> $LogFile 2>&1
rm -f $BAKPATH/bak_$rq.log>> $LogFile 2>&1
echo "backup success">> $LogFile
echo "backup success"
else echo "backup fail">> $LogFile
echo "backup fail"
fi
OLDFILE=`date +%Y%m%d --date='7 day ago'`
if [ -f $BAKPATH/bak_$OLDFILE.tar.gz ]
then
echo "DELETE OLDFILE bak_$OLDFILE.tar.gz" >> $LogFile
rm -f $BAKPATH/bak_$OLDFILE.tar.gz>> $LogFile 2>&1
else echo "no OLDFILE bak_$OLDFILE.tar.gz ">> $LogFile
fi
echo "-------end $(date +"%y-%m-%d %H:%M:%S")-------" >> $LogFile
保存退出。
修改權限
# chmod 755 /opt/bak/bak.sh
手動執行腳本,確認腳本執行無誤
# cd /opt/bak/
# ./bak.sh
4、設置定時調度任務
輸入命令
# crontab -e
編輯文本,加入如下代碼,天天凌晨四點進行數據備份:
0 4 * * * /opt/bak/bak.sh
保存退出。