本章節采用比較常見的邏輯備份exp/imp。
本系列文章是把作者剛接觸和學習Linux時候的實操記錄分享出來,内容主要包括Linux入門的一些理論概念知識、Web程式、mysql資料庫的簡單安裝部署,希望能夠幫到一些初學者,少走一些彎路。
注意:
Linux下區分大小寫;
Linux多使用者多線程;
Linux下每個檔案和目錄都有通路權限;
linux下Oracle定時備份
本章節采用比較常見的邏輯備份exp/imp。
一、Oracle資料導入導出文法
1.資料導出
#導出全庫(隻有dba權限的使用者才能導出全庫)
$ exp dba使用者/dba密碼@執行個體名 file=導出檔案.dmp log=導出日志檔案.log full=y
#導出指定使用者的表
$ exp dba使用者/dba密碼@執行個體名 file=導出檔案.dmp log=導出日志檔案名.log owner=使用者
#也可以使用普通使用者導出自己的表
$ exp 使用者/密碼@執行個體名 file=導出檔案.dmp log=導出日志檔案.log
#導出多個使用者的表
$ exp dba使用者/dba密碼@執行個體 file=導出檔案名.dmp log=導出日志檔案.log owner=使用者1,使用者2
#導出指定表
$ exp dba使用者/dba密碼@執行個體 file=導出檔案.dmp log=導出日志檔案.log tables=表1,表2
#隻導出表結構
# 在導出語句後追加rows=n參數即可,rows=n表示不導出資料行。
2.資料導入
#導入全庫
$ exp dba使用者/dba密碼@執行個體 file=導出檔案.dmp log=導出日志檔案.log full=y
#單個使用者的表
$ exp dba使用者/dba密碼@執行個體 file=導出檔案.dmp log=導出日志檔案.log formuser=導出時的使用者 touser=要導入的使用者
#導入指定的表
$ exp dba使用者/dba密碼@執行個體 file=導出檔案.dmp log=導出日志檔案.log tables=表1,表2
二、定時備份
1.備份政策
邏輯備份exp;
備份路徑為/home/db_bak;
定時備份為每晚23.00執行;
保留7天的備份;
2.編輯備份腳本ora_bak.sh
# vim /home/db_bak/ora_bak.sh
内容如下:
#這裡需要重新設定環境變量,因為crontab定時器是系統程式,沒有oracle的環境變量
#設定oracle環境變量
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
#或者直接執行source使oracle的環境變量生效,因為之前.bash_profile裡已經配置過了
# source /home/oracle/.bash_profile
#備份目錄
bak_dir=/home/db_bak
#備份使用者名
d_name=test
#備份時間
time=$(date +%Y%m%d%H)
#開始備份
exp test/[email protected] file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log
#或者異地備份
#exp test/[email protected]/orcl file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log
#删除7天以前的備份,注意find語句結尾的分号
find $bak_dir -name "*.dmp" -mtime +7 -exec rm -f {} \;
find $bak_dir -name "*.log" -mtime +7 -exec rm -f {} \;
3.添加定時任務
方法一:crontab -e,為使用者設定定時器
# crontab -e -u oracle #使用預設編輯器設定給oracle使用者定時器
或者切換到orale使用者後執行
$ crontab -e
#增加以下内容:
0 23 * * * sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1
#生效後檔案存入/var/spool/cron/oracle,另外crontab -e對格式有校驗
方法二:編輯定時器檔案,為系統設定定時器,可以指定執行使用者
# vim /etc/crontab
#增加以下内容:
0 23 * * * oracle sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1
三、備份恢複/導入
切換到oracle使用者
# su - oracle
$ imp test2/[email protected] file=/home/db_bak/test_20210830.dmp log=imp.log formuser=test touser=test2
#參數說明:formuser導出時的使用者名,touser要導入的使用者名

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