備份腳本應該對Log重定向並保存以便在出錯的查找有用信息
與RMAN備份有關的優化
備份操作主要是完成以下三個步驟
從磁盤上讀取數據
在內存中處理數據塊
寫入數據到磁盤或磁帶
以上的讀寫操作可以同步或異步的完成在同步I/O操作中一個時間只允許有一個IO操作但是在異步I/O操作中一個時間允許有多個IO操作因此備份與恢復的調優主要集中在以下幾個方面
提高同步或異步I/O操作能力
在支持異步操作的操作系統上可以通過設置TAPE_AYSNCH_IODISK_ASYNCH_IO和BACKUP_TYPE_IO_SLAVES來支持異步操作提高寫的能力
提高磁盤讀能力
可以在backup命令後通過設置DISKRATIO來保證從多個磁盤上讀取數據保證連續的數據流
正確設置緩沖區與參數值
設置LARGE_POOL_SIZE使備份可以使用連續的緩沖池通過設置DB_FIL_DIRECT_IO_COUNT可以提高緩沖區的利用如果使用磁帶備份還可以設置BACKUP_TYPE_IO_SLAVES來提高磁帶的寫能力
采用並行備份
開辟多個通道可以實現並行備份與恢復
備份RMAN數據庫
RMAN自己的數據庫也需要備份但是本身很小而且不是經常發生變化所以在每次RMAN備份完成後都可以用如下腳本對RMAN數據庫備份
EXP pafile =exprmansql
exprmansql為
USERID=RMAN/RMAN
BUFFER=
OWNER=RMAN
FILE=RMANDMP
ROWS=Y
GRANTS=Y
COMPRESS=Y
CONSISTENT=Y
使自動備份數據庫
自動備份數據庫不外乎以下三種方式
WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具很多人可能都沒有接觸主要說一下windows的任務計劃與unix的cron
生成腳本文件如backuprcv
假定文件內容如下
$NewsContent$gt;cat backuprcv
connect target sys/password rcvcat rman/rman@localname;
run{
allocate channel c type disk;
allocate channel c type disk;
allocate channel c type disk;
backup fileaperset format /u/oradata/backup/arch%u_%s_%p??
archivelog all delete input;? ?
release channel c;
release channel c;
release channel c;
}
生成執行文件
在windows上生成backup_archivebat內容包括
rman cmdfile = backuprcv
在unix下生成 backup_archivesh內容包括
/oracle/ramn/rman cmdfile = backuprcv
加入調度
在windows中用任務計劃向導即可或使用at命令
在unix中在目標機器上編寫一個文件用以啟動自動備份進程假定文件名為ORACLE文件將放在/var/spool/cron/crontabs目錄下
$NewsContent$gt;cat oracle
* * backup_archivesh
#表示星期天點對數據庫備份
* * * backup_archivesh
#表示每天點點備份
Crontab文件的每一行由六個域(minuteshoursday of monthmonthday of weekcommand)組成域之間用空格或Tab分隔開來
五常見誤區
使用EXP/IMP備份
EXP/IMP不是一個良好的備份工具在以後的發展之中ORACLE對EXP/IMP用於備份的支持會越來越低ORACLE只是把EXP/IMP當作一個好的工具而不是備份工具在對於大型數據庫如TB級數據庫或數據倉庫EXP/IMP肯定會力不從心
在應用程序中備份數據庫
在論壇上有很多這樣的要求我怎麼在程序中備份與恢復數據庫?首先說這個並不是不可以實現但是實現的過程會很復雜而且意外會很多就我的感覺提出這樣問題的人首先一點就是對ORACLE或DBA的不了解如果ORACLE可以這麼輕松的實現備份與恢復那麼我可以說就不需要DBA了
冷備份比熱備份更容易效果會更好
有人認為冷備份是關閉數據庫進行的一致性備份肯定比熱備份要好使用也容易其實不盡然在熱備份中一樣可以實現數據庫的全備份而且不會影響到數據庫的運行建議所有的生產機都運行在歸檔方式下采用熱備份方式
六常見問題
我導出的數據為什麼不能導入提示不支持的字符集轉換
答參考上面的字符集原則導出數據時客戶端與數據庫字符集一致導入時修改為與目標數據庫字符集一致
我的歸檔日志越來越多我什麼時候可以刪除歸檔日志?
答在每一次全備份(如OS全冷備份或全熱備份)或基於全備份的增量備份(如RMAN基於級備份上的增量備份)後都可以刪除該備份點之前的歸檔日志建議在磁帶上保留一年
全備份時一定需要備份所有數據文件嗎?
答不需要起碼有兩類數據文件可以不備份一類就是臨時數據文件如果丟失可以刪除後重建;一類是只讀表空間數據文件如果上次備份以來沒有修改過表空間的只讀屬性就可以不需要備份
聯機日志需要備份嗎?
答如果是歸檔方式熱備份就沒有必要備份聯機日志但是對於冷備份可以備份聯機日志特別是不歸檔狀態備份過聯機日志後的冷備份因為數據庫是一致的可以恢復到該備份點
七小結
什麼是數據庫備份數據庫備份就是把數據庫復制到轉儲設備的過程
數據庫的運行方式可以分為歸檔方式和非歸檔方式建議運行在歸檔方式下運行熱備份
了解了數據庫的備份方式邏輯備份冷備份熱備份
了解數據庫的備份工具EXP/IMP執行邏輯備份OS腳本可以執行冷備份或熱備份RMAN也可以執行冷備份或熱備份
了解ORACLE的備份策略並怎樣選擇最佳的備份策略
知道怎麼樣啟動自動備份了解Windows的at命令與unix的cron進程
From:http://tw.wingwit.com/Article/program/Oracle/201311/18107.html