Linux中設置定期備份oracle數據庫


昨天裝好了oracle,今天嘗試一下自動備份,我這兩天裝linux和oracle的目的就是這個。

如果是sql server,定期備份可以利用sql server的management studio來做,比較方便。但要做oracle的定期備份,那就需要我們寫導出命令,並設置linux的定時任務。

首先創建一個數據庫作為測試。

  1. --創建數據表空間
  2. create tablespace test_data
  3. logging
  4. datafile '/u01/app/oradata/test/TEST.dbf'
  5. size 32m
  6. autoextend on
  7. next 32m maxsize 2048m
  8. extent management local;
  9.  
  10. --創建用戶並指定表空間
  11. create user TEST identified by 123
  12. default tablespace test_data
  13. temporary tablespace temp;
  14.  
  15. --給用戶授予權限
  16. grant connect,resource to TEST;

用Test用戶登錄,創建一個表,並插入兩條數據:

  1.        Id varchar(50) primary key,
  2.        title varchar(50)
  3. );
  4.  
  5. insert into t1 values(sys_guid(),'t1');
  6. insert into t1 values(sys_guid(),'t2');
  7. commit ;

先寫一個導出的腳本文件:

  1. export ORACLE_BASE=/u01/app
  2. export ORACLE_HOME=/u01/app/oracle
  3. export ORACLE_SID=TEST
  4. export PATH=$ORACLE_HOME/bin:$PATH
  5. d=$(date '+%Y%m%d')
  6. exp TEST/123@TEST file=/home/oracle/backup/$d.dmp log=/home/oracle/backup/$d.log owner=TEST
  7. zip -m /home/oracle/backup/$d.zip /home/oracle/backup/$d.dmp /home/oracle/backup/$d.log

前4句是設置環境變量,因為crontab定時調用時,不會使用oracle用戶的環境變量,所以要先把它們導進來。第6行以當前日期作為導出的文件名,例如20120626.dmp和20120626.log。第7行把這兩個文件打成一個zip包,並刪掉這兩個文件。

要用chmod命令把這個sh標記為可執行:

  1. chmod +x backup.sh

 

用oracle用戶,輸入crontab -e命令,編輯oracle用戶的任務計划:

  1. [oracle@localhost backup]$ crontab -e
  2. 42 13 * * * /home/oracle/backup/backup.sh

這樣就添加了一個計划,在每天的13點42分運行/home/oracle/backup/backup.sh。

 

另外,每天運行完之后,會收到mail通知,可以在mail里看出到底有沒有正確運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM