主要介紹了Oracle數據庫備份策略的相關概念及使用中的注意事項
一
可以說
其實
但是
所謂備份
能夠進行什麼樣的恢復依賴於有什麼樣的備份
·使數據庫的失效次數減到最少
·當數據庫不可避免地失效後
·當數據庫失效後
災難恢復的最重要的工作是設計充足頻率的硬盤備份過程
二
ORACLE數據庫有兩種運行方式
如何改變數據庫的運行方式
a
b
修改(添加)初始化文件init[SID]
log_archive_start=true #啟動自動歸檔
log_archive_format=ARC%T%S
log_archive_dest=/arch
在
c
$>SVRMGRL
SVRMGRL >connect internal
SVRMGRL >startup mount
d
SVRMGRL >alter database archivelog;
SVRMGRL>alter database open;
與以上步驟相同
SVRMGRL >alter database noarchivelog;
注意
三
簡單的按照備份進行的方式
按照備份的工具
以下我們將從多個角度來說明以上的各種備份方式
導入/導出是ORACLE幸存的最古老的兩個命令行工具了
對於越來越大的數據庫
i
Exp parameter_name=value
Or Exp parameter_name=(value
只要輸入參數help=y就可以看到所有幫助
如
C:\>set nls_lang=simplified chinese_china
C:\>exp
Export: Release
(c) Copyright
通過輸入 EXP 命令和用戶名/口令
在用戶 / 口令之後的命令:
實例: EXP SCOTT/TIGER
或者
的運行方式
格式: EXP KEYWORD=value 或 KEYWORD=(value
實例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP
或 TABLES=(T
USERID 必須是命令行中的第一個參數
關鍵字 說明(默認) 關鍵字 說明(默認)
USERID 用戶名/口令 FULL 導出整個文件 (N)
BUFFER 數據緩沖區的大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT
COMPRESS 導入一個范圍 (Y) RECORDLENGTH IO 記錄的長度
GRANTS 導出權限 (Y) INCTYPE 增量導出類型
INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行 (Y) PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y) CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件 STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
在沒有警告的情況下成功終止導出
C:\>
幫助已經很詳細的說明了參數的意義和使用方法
注意上面的set nls_lang=simplified chinese_china
增量和累計導出必須在全庫方式下才有效
ii
表空間傳輸是
關於傳輸表空間有一些規則
·源數據庫和目標數據庫必須運行在相同的平台上
·源數據庫與目標數據庫必須使用相同的字符集
·源數據庫與目標數據庫一定要有相同大小的數據塊(
·目標數據庫不能有與遷移表空間同名的表空間
·SYS的對象不能遷移
·必須傳輸自包含的對象集
·有一些對象
可以用以下的方法來檢測一個表空間或一套表空間是否符合傳輸標准
exec sys
select * from sys
如果沒有行選擇
以下為簡要使用步驟
a
alter tablespace app_data read only;
alter tablespace app_index read only;
b
SQL>host exp userid=
transport_tablespace=y tablespace=(app_data
以上需要注意的是
·為了在SQL中執行EXP
·在
·這個命令在SQL中必須放置在一行(這裡是因為顯示問題放在了兩行)
c
可以是cp(unix)或copy(windows)或通過ftp傳輸文件(一定要在bin方式)
d
e
imp file=expdat
transport_tablespace=y
f
alter tablespace app_data read write;
alter tablespace app_index read write;
iii
明白ORACLE的多國語言設置
ORACLE字符集設定
在客戶端的字符集環境比較簡單
使用一點點技巧
SQL> select nls_charset_name(
NLS_CHARSET_NAME(
US
可以知道該dmp文件的字符集為US
SQL> select nls_charset_id(
NLS_CHARSET_ID(
把
Iv
Exp/Imp很多時候
·總是使用IMP的版本匹配數據庫的版本
·總是使用EXP的版本匹配兩個數據庫中低的那個版本
操作系統備份有兩類
i
在文件級備份開始前數據庫必須徹底關閉
數據庫使用的每個文件都被備份下來
☆所有數據文件
☆所有控制文件
☆所有聯機REDO LOG 文件
☆INIT
作冷備份一般步驟是
a
b
c
如
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >! cp 或
SVRMGRL >!tar cvf /dev/rmt/ SVRMGRL >startup 注意 ii 熱備份是當數據庫打開並對用戶有效是的OS級的數據備份 熱備份沒有必要備份聯機日志 對於臨時表空間 熱備份的優點是顯而易見的
操作系統作熱備份的一般步驟為 ①連接數據庫
SVRMGRL>connect internal;
②將需要備份的表空間(如User)設置為備份方式
SVRMGRL>Alter tablespace User begin backup;
③拷貝數據文件
SVRMGRL>!cp /u Or
$cp cp /u ④在數據文件拷貝完成後 SVRMGRL>Alter tablespace User end backup;
⑤對所有需要備份的表空間重復 ⑥使用如下的命令備份控制文件ALTER DATABSE …… BACKUP CONTROLFILE
如備份成二進制文件
alter database backup controlfile to 備份成文本文件
alter database backup controlfile to trace; 因為熱備份的時候 注意 i Recovery manager(RMAN)是ORACLE提供的DBA工具 RMAN備份有如下優點
☆支持在線熱備份
☆支持多級增量備份
☆支持並行備份 ☆減少所需要備份量
☆備份 重要的是 從 RMAN支持以下不同類型的備份
FULL 數據庫全備份 INCREMENTAL 增量備份 OPEN 在數據庫打開的時候使用
CLOSED 在數據庫安裝(MOUNT)但不打開的時候備份 CONSISTENT 在數據庫安裝 INCONSISTENT 在數據庫打開或安裝(但不打開)時使用 理解BACKUP 理解恢復目錄 創建RMAN目錄 a SQL>Create tablespace tools datafile b SQL>Create user RMAN identified by RMAN default tablespace tools temporary tablespace temp;
c SQL>Grant connect d $>RMAN
e RMAN>connect catalog rman/rman
f RMAN>Create catalog tablespace rman
注冊目標數據庫 $>RMAN target internal/password catalog rman/rman@rcdb;
RMAN>Register database;
數據庫注冊完成 RMAN使用腳本來備份數據庫 a backup full tag b backup tag c backup tag ii RMAN的維護主要分為幾個方面
檢查現有備份
RMAN>list backup
列出過期備份
RMAN>report obsolete
刪除過期的備份
RMAN>allocate channel for maintenance type disk;
RMAN>change backupset id delete;
RMAN>release channel;
如果目標數據庫物理對象發生了變化 RMAN>resync catalog;
如果目標數據庫reset了數據庫 RMAN>reset database;
當手工刪除了數據庫的歸檔文件後 RMAN>allocate channel for maintenance type disk;
RMAN> change archivelog all crosscheck;
RMAN>release channel;
當手工刪除了數據庫的RMAN備份後 RMAN>allocate channel for maintenance type disk;
RMAN>crosscheck backup;
RMAN>delete expired backup;
RMAN>release channel;
四 i 正確的備份策略不僅能保證數據庫服務器的 每半年做一個數據庫的全備份(包括所有的數據和只讀表空間)
每一個月做一次零級備份(不包含只讀表空間)
每個星期做一次一級備份
每天做一次二級備份
任何數據庫的更改需要重新同步CATALOG目錄並重新備份(如添加數據文件)或重新備份(如修改表空間為只讀)
每次備份後都可以備份歸檔日志或定期備份歸檔日志 如果可能 數據庫全備份的腳本
run{
allocate channel c allocate channel c allocate channel c backup full tag include current controlfile;
sql backup fileaperset archivelog all delete input; #備份歸檔可選 release channel c release channel c release channel c }
零級備份的腳本
run{
allocate channel c allocate channel c allocate channel c backup incremental level database skip readonly;
sql backup fileaperset archivelog all delete input; #備份歸檔可選 release channel c release channel c release channel c }
同理 run{
allocate channel c allocate channel c allocate channel c backup incremental level database skip readonly;
sql backup fileaperset archivelog all delete input; #備份歸檔可選 release channel c release channel c release channel c } 如果按照以上備份策略 在每次備份後 ii 備份操作主要是完成以下三個步驟
以上的讀寫操作可以同步或異步的完成 在支持異步操作的操作系統上 可以在backup命令後通過設置DISKRATIO來保證從多個磁盤上讀取數據 設置LARGE_POOL_SIZE 開辟多個通道 iii RMAN自己的數據庫也需要備份 EXP pafile =exprman exprman USERID=RMAN/RMAN
BUFFER= OWNER=RMAN
FILE=RMAN ROWS=Y
GRANTS=Y
COMPRESS=Y
CONSISTENT=Y
iv 自動備份數據庫不外乎以下三種方式
WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具 假定文件內容如下 $>cat backup connect target sys/password rcvcat rman/rman@localname;
run{
allocate channel c allocate channel c allocate channel c backup fileaperset archivelog all delete input;
release channel c release channel c release channel c }
在windows上生成backup_archive rman cmdfile = backup 在unix下生成 backup_archive /oracle/ramn/rman cmdfile = backup 在windows中用任務計劃向導即可 在unix中 $>cat oracle
#表示星期天 #表示每天 Crontab文件的每一行由六個域(minutes 1、使用EXP/IMP備份
EXP/IMP不是一個良好的備份工具,在以後的發展之中,ORACLE對EXP/IMP用於備份的支持會越來越低。tw.wiNgwIT.cOmORACLE只是把EXP/IMP當作一個好的工具而不是備份工具,在對於大型數據庫,如TB級數據庫或數據倉庫,EXP/IMP肯定會力不從心。
2、在應用程序中備份數據庫
在論壇上,有很多這樣的要求,“我怎麼在程序中備份與恢復數據庫?”。首先說,這個並不是不可以實現,但是實現的過程會很復雜而且意外會很多。就我的感覺,提出這樣問題的人,首先一點就是對ORACLE或DBA的不了解,如果ORACLE可以這麼輕松的實現備份與恢復,那麼我可以說,就不需要DBA了。
3、冷備份比熱備份更容易,效果會更好
有人認為,冷備份是關閉數據庫進行的一致性備份,肯定比熱備份要好,使用也容易,其實不盡然,在熱備份中,一樣可以實現數據庫的全備份,而且不會影響到數據庫的運行。建議所有的生產機,都運行在歸檔方式下,采用熱備份方式。
六、常見問題
1、我導出的數據為什麼不能導入,提示不支持的字符集轉換
答:參考上面的字符集原則,導出數據時客戶端與數據庫字符集一致,導入時修改為與目標數據庫字符集一致。
2、我的歸檔日志越來越多,我什麼時候可以刪除歸檔日志?
答:在每一次全備份(如OS全冷備份或全熱備份)或基於全備份的增量備份(如RMAN基於0級備份上的增量備份)後都可以刪除該備份點之前的歸檔日志,建議在磁帶上保留一年。
3、全備份時一定需要備份所有數據文件嗎?
答:不需要,起碼有兩類數據文件可以不備份,一類就是臨時數據文件,如果丟失,可以刪除後重建;一類是只讀表空間數據文件,如果上次備份以來,沒有修改過表空間的只讀屬性,就可以不需要備份。
4、聯機日志需要備份嗎?
答:如果是歸檔方式熱備份,就沒有必要備份聯機日志。但是對於冷備份,可以備份聯機日志,特別是不歸檔狀態。備份過聯機日志後的冷備份,因為數據庫是一致的,可以恢復到該備份點。
小結
1、什麼是數據庫備份,數據庫備份就是把數據庫復制到轉儲設備的過程。
2、數據庫的運行方式,可以分為歸檔方式和非歸檔方式,建議運行在歸檔方式下運行熱備份。
3、了解了數據庫的備份方式,邏輯備份、冷備份、熱備份
4、了解數據庫的備份工具,EXP/IMP執行邏輯備份,OS腳本可以執行冷備份或熱備份,RMAN也可以執行冷備份或熱備份
5、了解Oracle的備份策略,並怎樣選擇最佳的備份策略
6、知道怎麼樣啟動自動備份,了解Windows的at命令與unix的cron進程。
From:http://tw.wingwit.com/Article/program/Oracle/201311/17073.html