Linux新手入門系列:linux下Oracle定時(shí)備份

本章節(jié)采用比較常見的邏輯備份exp/imp。

本系列文章是把作者剛接觸和學(xué)習(xí)Linux時(shí)候的實(shí)操記錄分享出來,內(nèi)容主要包括Linux入門的一些理論概念知識、Web程序、mysql數(shù)據(jù)庫的簡單安裝部署,希望能夠幫到一些初學(xué)者,少走一些彎路。

注意:

Linux下區(qū)分大小寫;
Linux多用戶多線程;
Linux下每個(gè)文件和目錄都有訪問權(quán)限;

linux下Oracle定時(shí)備份

本章節(jié)采用比較常見的邏輯備份exp/imp。

一、Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出語法

1.數(shù)據(jù)導(dǎo)出

#導(dǎo)出全庫(只有dba權(quán)限的用戶才能導(dǎo)出全庫)
$ exp dba用戶/dba密碼@實(shí)例名 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log full=y

#導(dǎo)出指定用戶的表
$ exp dba用戶/dba密碼@實(shí)例名 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件名.log owner=用戶
#也可以使用普通用戶導(dǎo)出自己的表
$ exp 用戶/密碼@實(shí)例名 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log

#導(dǎo)出多個(gè)用戶的表
$ exp dba用戶/dba密碼@實(shí)例 file=導(dǎo)出文件名.dmp log=導(dǎo)出日志文件.log owner=用戶1,用戶2

#導(dǎo)出指定表
$ exp dba用戶/dba密碼@實(shí)例 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log tables=表1,表2

#只導(dǎo)出表結(jié)構(gòu)
# 在導(dǎo)出語句后追加rows=n參數(shù)即可,rows=n表示不導(dǎo)出數(shù)據(jù)行。

2.數(shù)據(jù)導(dǎo)入

#導(dǎo)入全庫
$ exp dba用戶/dba密碼@實(shí)例 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log full=y

#單個(gè)用戶的表
$ exp dba用戶/dba密碼@實(shí)例 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log formuser=導(dǎo)出時(shí)的用戶 touser=要導(dǎo)入的用戶

#導(dǎo)入指定的表
$ exp dba用戶/dba密碼@實(shí)例 file=導(dǎo)出文件.dmp log=導(dǎo)出日志文件.log tables=表1,表2

二、定時(shí)備份

1.備份策略

邏輯備份exp;
備份路徑為/home/db_bak;
定時(shí)備份為每晚23.00執(zhí)行;
保留7天的備份;

2.編輯備份腳本ora_bak.sh

# vim /home/db_bak/ora_bak.sh

內(nèi)容如下:

#這里需要重新設(shè)置環(huán)境變量,因?yàn)閏rontab定時(shí)器是系統(tǒng)程序,沒有oracle的環(huán)境變量

#設(shè)置oracle環(huán)境變量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:/usr/sbin:$ORACLE_HOME/bin

#或者直接執(zhí)行source使oracle的環(huán)境變量生效,因?yàn)橹?bash_profile里已經(jīng)配置過了
# source /home/oracle/.bash_profile

#備份目錄
bak_dir=/home/db_bak
#備份用戶名
d_name=test
#備份時(shí)間
time=$(date +%Y%m%d%H)

#開始備份
exp test/test@orcl file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log
#或者異地備份
#exp test/test@172.16.2.100/orcl file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log

#刪除7天以前的備份,注意find語句結(jié)尾的分號
find $bak_dir -name "*.dmp" -mtime +7 -exec rm -f {} \;
find $bak_dir -name "*.log" -mtime +7 -exec rm -f {} \;

3.添加定時(shí)任務(wù)

方法一:crontab -e,為用戶設(shè)置定時(shí)器

# crontab -e -u oracle #使用默認(rèn)編輯器設(shè)置給oracle用戶定時(shí)器
或者切換到orale用戶后執(zhí)行
$ crontab -e
#增加以下內(nèi)容:
0 23 * * * sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1

#生效后文件存入/var/spool/cron/oracle,另外crontab -e對格式有校驗(yàn)

方法二:編輯定時(shí)器文件,為系統(tǒng)設(shè)置定時(shí)器,可以指定執(zhí)行用戶

# vim /etc/crontab
#增加以下內(nèi)容:
0 23 * * * oracle sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1

三、備份恢復(fù)/導(dǎo)入

切換到oracle用戶
# su - oracle

$ imp test2/test2@orcl file=/home/db_bak/test_20210830.dmp log=imp.log formuser=test touser=test2

#參數(shù)說明:formuser導(dǎo)出時(shí)的用戶名,touser要導(dǎo)入的用戶名
在這里插入圖片描述
在這里插入圖片描述

IT小胖豆:初學(xué)者踩坑之路及過程分享,希望能夠幫到一些初學(xué)者,歡迎各位IT打工人,入坑討論-_-

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容