1. 數(shù)據(jù)庫備份的分類
1.1 邏輯備份與物理備份
數(shù)據(jù)庫備份按照備份狀態(tài)分為邏輯備份與物理備份。
(1)邏輯備份
利用SQL從數(shù)據(jù)庫中抽取數(shù)據(jù),并存為二進(jìn)制文件的形式進(jìn)行備份。業(yè)務(wù)數(shù)據(jù)庫采用此種方式,不需要在歸檔模式下。如Oracle中,對(duì)數(shù)據(jù)庫對(duì)象(用戶、表、存儲(chǔ)過程)利用EXPORT導(dǎo)出,利用IMPORT把邏輯備份文件導(dǎo)入數(shù)據(jù)庫(Oracle exp/imp)。
優(yōu)點(diǎn):可以只備份某些表或某些特定的數(shù)據(jù);可以在不同版本之間進(jìn)行跨平臺(tái)恢復(fù);可以壓縮后存儲(chǔ)節(jié)省空間。
缺點(diǎn):對(duì)于大規(guī)模的數(shù)據(jù)庫,執(zhí)行語句耗時(shí)較長;無法保證完全一致性(如同時(shí)有新數(shù)據(jù)插入)。
(2)物理備份
物理備份是指直接拷貝數(shù)據(jù)庫存儲(chǔ)介質(zhì)上的所有內(nèi)容,包括操作系統(tǒng)層面和數(shù)據(jù)庫引擎層面,這樣就能夠完整地還原整個(gè)數(shù)據(jù)庫。一般需要外部存儲(chǔ)設(shè)備。
優(yōu)點(diǎn):速度快且可靠;能夠提供一致性快照。
缺點(diǎn):只能提供到“某一時(shí)間點(diǎn)”上的恢復(fù),無法選擇性地(按表或用戶)進(jìn)行備份和恢復(fù),只能全庫備份和恢復(fù);不能用于跨平臺(tái)遷移。
- 冷備份:發(fā)生在數(shù)據(jù)庫已經(jīng)正常關(guān)閉的情況下(脫機(jī)狀態(tài)),所有的數(shù)據(jù)文件都處于離線狀態(tài)。在實(shí)施備份過程中,數(shù)據(jù)庫不能做其他工作,可以保證數(shù)據(jù)的完整性和一致性。
- 熱備份:在數(shù)據(jù)庫運(yùn)行情況下(聯(lián)機(jī)狀態(tài))進(jìn)行,不會(huì)影響正常的業(yè)務(wù)操作,可在表空間或數(shù)據(jù)庫文件級(jí)備份,并且對(duì)用戶透明,能夠保持業(yè)務(wù)連續(xù)性,備份時(shí)間短,可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn))。熱備份要將日志置為歸檔模式,需要考慮到正在寫入或修改的數(shù)據(jù)可能導(dǎo)致數(shù)據(jù)不一致性問題,采取特殊措施來確保數(shù)據(jù)完整性。
(3)歸檔模式與非歸檔模式
- 歸檔模式:歸檔模式下,數(shù)據(jù)庫將歷史記錄保存到一組稱為“歸檔日志”的特殊文件中。這些日志包含先前已提交的事務(wù)的詳細(xì)信息,使得可以恢復(fù)或還原丟失或損壞的數(shù)據(jù)。由于需要頻繁地寫入日志文件,性能會(huì)有所降低。
- 非歸檔模式:非歸檔模式下,當(dāng)一個(gè)事務(wù)被提交時(shí),其結(jié)果直接寫入主要數(shù)據(jù)文件中。而不像歸檔模式那樣額外生成日志文件。這種方式雖然可以提高性能,并降低空間開銷,但也存在數(shù)據(jù)丟失或損壞時(shí)無法完全恢復(fù)的風(fēng)險(xiǎn)。
1.2 完全備份/差異備份/增量備份
(1)完全備份(Full):備份全部選中文件,并不依賴文件的存檔屬性來確定備份哪些文件(每個(gè)文件都被標(biāo)記為已備份,消除存檔屬性)。
(2)差異備份(Differential):備份上次完全備份后發(fā)生變化的所有文件(備份后不標(biāo)記為已備份文件,不消除存檔屬性)。(備份時(shí)間長,占空間多,恢復(fù)快)。
(3)增量備份(Incremental):針對(duì)上次備份后(無論哪種備份)備份上次備份后所有發(fā)生變化的文件(備份后標(biāo)記文件,消除存檔屬性)。(備份時(shí)間短,占空間少,恢復(fù)慢)。
組合示例:
- 完備+差備:周一進(jìn)行完全備份,周二到周五進(jìn)行差異備份。若周五數(shù)據(jù)被破壞,需還原周一的完全備份及周五的差異備份。
- 完備+增備:周一進(jìn)行完全備份,周二到周五機(jī)型增量備份。若周五數(shù)據(jù)被破壞,需還原周一的完全備份及周二至周五的增量備份。
2. Oracle 邏輯備份
Oracle支持兩種類型的邏輯備份:導(dǎo)出/導(dǎo)入實(shí)用程序與數(shù)據(jù)泵。
2.1 EXP/IMP
(1)EXP導(dǎo)出
- 完全模式
exp SYSTEM/MANAGER BUFFER=64000 file= C:\full.dmp full=Y
- 用戶模式
exp detail12/detail12 owner=(detail12,detail11) file=/home/oracle/detail.dmp
exp detail12/detail12@RACDB_192.168.1.13 file=d:/detail.dmp
其中,RACDB_192.168.1.13
為Oracle Net Configuration Assistant的網(wǎng)絡(luò)服務(wù)名。
- 表模式
exp detail12/detail12 owner=detail12 tables=(T_JBXX) file=/home/oracle/t_jbxx.dmp
如果T_JBXX為分區(qū)表,使用tables=(T_JBXX1:P1,T_JBXX2:P2
)的形式。
query字段格式:
query="""where dept_date<to_date('2014-02-01 00:00:10','yyyy-mm-dd hh24:mi:ss')"""
注意:不導(dǎo)入權(quán)限和索引可加入 GRANTS=Y INDEXES=Y
關(guān)鍵字說明
關(guān)鍵字 | 說明 (默認(rèn)值) |
---|---|
USERID | 用戶名/口令 |
FULL | 導(dǎo)出整個(gè)文件 (N) |
BUFFER | 數(shù)據(jù)緩沖區(qū)大小 |
OWNER | 所有者用戶名列表 |
FILE | 輸出文件 (EXPDAT.DMP) |
TABLES | 表名列表 |
COMPRESS | 導(dǎo)入到一個(gè)區(qū) (Y) |
RECORDLENGTH | IO 記錄的長度 |
GRANTS | 導(dǎo)出權(quán)限 (Y) |
INCTYPE | 增量導(dǎo)出類型 |
INDEXES | 導(dǎo)出索引 (Y) |
RECORD | 跟蹤增量導(dǎo)出 (Y) |
DIRECT | 直接路徑 (N) |
TRIGGERS | 導(dǎo)出觸發(fā)器 (Y) |
LOG | 屏幕輸出的日志文件 |
STATISTICS | 分析對(duì)象 (ESTIMATE) |
ROWS | 導(dǎo)出數(shù)據(jù)行 (Y) |
PARFILE | 參數(shù)文件名 |
CONSISTENT | 交叉表的一致性 (N) |
CONSTRAINTS | 導(dǎo)出的約束條件 (Y) |
OBJECT_CONSISTENT | 只在對(duì)象導(dǎo)出期間設(shè)置為只讀的事務(wù)處理 (N) |
FEEDBACK | 每 x 行顯示進(jìn)度 (0) |
FILESIZE | 每個(gè)轉(zhuǎn)儲(chǔ)文件的最大大小 |
FLASHBACK_SCN | 用于將會(huì)話快照設(shè)置回以前狀態(tài)的 SCN |
FLASHBACK_TIME | 用于獲取最接近指定時(shí)間的 SCN 的時(shí)間 |
QUERY | 用于導(dǎo)出表的子集的 select 子句 |
RESUMABLE | 遇到與空格相關(guān)的錯(cuò)誤時(shí)掛起 (N) |
RESUMABLE_NAME | 用于標(biāo)識(shí)可恢復(fù)語句的文本字符串 |
RESUMABLE_TIMEOUT | RESUMABLE 的等待時(shí)間 |
TTS_FULL_CHECK | 對(duì) TTS 執(zhí)行完整或部分相關(guān)性檢查 |
TABLESPACES | 要導(dǎo)出的表空間列表 |
TRANSPORT_TABLESPACE | 導(dǎo)出可傳輸?shù)谋砜臻g元數(shù)據(jù) (N) |
TEMPLATE | 調(diào)用 iAS 模式導(dǎo)出的模板名 |
(2)IMP導(dǎo)入
- 完全模式
imp SYSTEM/MANAGER BUFFER=64000 file=C:\full.dmp full=Y
- 用戶模式
imp detail12/detail12 fromuser=(detail12,detail11) touser=(detail12,detail11) file=/home/oracle/detail.dmp
- 表模式
imp detail12/detail12 owner=detail12 tables=(T_JBXX) file=/home/oracle/t_jbxx.dmp
注意
- IMP導(dǎo)入必須指定
Full=Y
,或提供fromuser/touser
參數(shù),或提供tables
參數(shù)。 - 導(dǎo)入前需按要求設(shè)置字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
- 忽略創(chuàng)建表錯(cuò)誤可加入
IGNORE=Y
,不導(dǎo)入權(quán)限和索引可加入GRANTS=Y INDEXES=Y
- 導(dǎo)入時(shí)發(fā)生
IMP-00032
錯(cuò)誤,表示SQL語句超過緩沖區(qū)長度,可以加入選項(xiàng):buffer=100000000
關(guān)鍵字說明
關(guān)鍵字 | 說明 (默認(rèn)值) |
---|---|
USERID | 用戶名/口令 |
FULL | 導(dǎo)入整個(gè)文件 (N) |
BUFFER | 數(shù)據(jù)緩沖區(qū)大小 |
FROMUSER | 所有者用戶名列表 |
FILE | 輸入文件 (EXPDAT.DMP) |
TOUSER | 用戶名列表 |
SHOW | 只列出文件內(nèi)容 (N) |
TABLES | 表名列表 |
IGNORE | 忽略創(chuàng)建錯(cuò)誤 (N) |
RECORDLENGTH | IO 記錄的長度 |
GRANTS | 導(dǎo)入權(quán)限 (Y) |
INCTYPE | 增量導(dǎo)入類型 |
INDEXES | 導(dǎo)入索引 (Y) |
COMMIT | 提交數(shù)組插入 (N) |
ROWS | 導(dǎo)入數(shù)據(jù)行 (Y) |
PARFILE | 參數(shù)文件名 |
LOG | 屏幕輸出的日志文件 |
CONSTRAINTS | 導(dǎo)入限制 (Y) |
DESTROY | 覆蓋表空間數(shù)據(jù)文件 (N) |
INDEXFILE | 將表/索引信息寫入指定的文件 |
SKIP_UNUSABLE_INDEXES | 跳過不可用索引的維護(hù) (N) |
FEEDBACK | 每 x 行顯示進(jìn)度 (0) |
TOID_NOVALIDATE | 跳過指定類型 ID 的驗(yàn)證 |
FILESIZE | 每個(gè)轉(zhuǎn)儲(chǔ)文件的最大大小 |
STATISTICS | 始終導(dǎo)入預(yù)計(jì)算的統(tǒng)計(jì)信息 |
RESUMABLE | 在遇到有關(guān)空間的錯(cuò)誤時(shí)掛起 (N) |
RESUMABLE_NAME | 用來標(biāo)識(shí)可恢復(fù)語句的文本字符串 |
RESUMABLE_TIMEOUT | RESUMABLE 的等待時(shí)間 |
COMPILE | 編譯過程, 程序包和函數(shù) (Y) |
STREAMS_CONFIGURATION | 導(dǎo)入流的一般元數(shù)據(jù) (Y) |
STREAMS_INSTANTIATION | 導(dǎo)入流實(shí)例化元數(shù)據(jù) (N) |
2.2 EXPDP/IMPDP
(1)數(shù)據(jù)泵介紹
Oracle Database 10g引入了最新的數(shù)據(jù)泵(Data Dump)技術(shù),使DBA或開發(fā)人員可以將數(shù)據(jù)庫元數(shù)據(jù)(對(duì)象定義)和數(shù)據(jù)快速移動(dòng)到另一個(gè)oracle數(shù)據(jù)庫中,與Export / Import相比,它提供更好的性能、安全性和靈活性。
- 并行處理: Oracle 數(shù)據(jù)泵支持并行處理(通過指定
PARALLEL
參數(shù)啟用),這使得導(dǎo)入和導(dǎo)出任務(wù)更加快速和高效。 - 可定制: 數(shù)據(jù)泵允許用戶選擇要包含或排除的對(duì)象類型(如表、視圖、約束等),以及要包含或排除的特定對(duì)象。
- 壓縮: Oracle 數(shù)據(jù)泵支持壓縮功能,可減少導(dǎo)出文件的大小,并提高傳輸速度。
- 安全性: 數(shù)據(jù)泵支持 SSL 加密協(xié)議來保護(hù)敏感信息,在安全方面非常有優(yōu)勢。
- 多平臺(tái)兼容性: Oracle 數(shù)據(jù)泵支持多個(gè)平臺(tái)上運(yùn)行,例如 Windows 和 Linux 等操作系統(tǒng)。
(2)數(shù)據(jù)泵的使用
EXP和IMP是客戶段工具程序,它們既可以在可以客戶端使用,也可以在服務(wù)端使用。 EXPDP和IMPDP是服務(wù)端的工具程序,他們只能在ORACLE服務(wù)端使用,不能在客戶端使用。
使用EXPDP工具時(shí),其轉(zhuǎn)儲(chǔ)文件只能被存放在DIRECTORY對(duì)象對(duì)應(yīng)的OS目錄中,而不能直接指定轉(zhuǎn)儲(chǔ)文件所在的OS目錄。因此,使用EXPDP工具時(shí),必須首先建立DIRECTORY對(duì)象,并且需要為數(shù)據(jù)庫用戶授予使用DIRECTORY對(duì)象權(quán)限。
使用Data Pump,可將整個(gè)數(shù)據(jù)庫或特定模式及其對(duì)象(如表格、索引、約束和其數(shù)據(jù))導(dǎo)出/導(dǎo)入,還可指定選項(xiàng),例如表空間、壓縮級(jí)別、加密和遠(yuǎn)程導(dǎo)出/導(dǎo)入的網(wǎng)絡(luò)鏈接。
Data Pump包括兩個(gè)客戶端實(shí)用程序:expdp(Export Data Pump)和impdp(Import Data Pump)。文章來源:http://www.zghlxwxcb.cn/news/detail-478083.html
e.g.文章來源地址http://www.zghlxwxcb.cn/news/detail-478083.html
create directory imp_dir as 'D:\imp_dir';
GRANT READ, WIRTE ON DIRECTORY imp_dir TO detail;
expdp scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY= imp_dir
impdp scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY= imp_dir
到了這里,關(guān)于Oracle系列十六:數(shù)據(jù)庫備份的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!