中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

liuziyi

liuziyi

Oracle 手(shou)工(gong)備份(fen)恢復(fu):DBA 必學的兜底技(ji)能,從原理到(dao)實操(cao)一步到(dao)位(wei)

本(ben)文從(cong)基礎概(gai)念到實戰案例,幫你(ni)吃透 Oracle UMAN 核(he)心邏輯(ji),關鍵時(shi)刻不慌(huang)神。

?? 一、先搞懂基礎:3 個核心概念不踩坑

在動手操作前,這些 “底層邏輯” 必須理(li)清 —— 它們直接決定(ding)你選(xuan)對恢復策(ce)略。

  1. ?? 數據庫故障分 4 類,應對方式天差地別
    故障類型
    典型場景
    恢復主體
    用戶進程故障
    會話突然中斷、SQL 執行卡死
    自動(PMON 進程清理資源)
    實例故障
    服務器斷電、內存溢出
    自動(SMON 進程重啟修復)
    用戶錯誤
    誤刪表、誤更新數據
    人工(備份 / 閃回)
    介質故障
    磁盤損壞、數據文件丟失
    人工(必須用備份 + 日志)

劃重點:介質故障是唯一需要手工介入的 “致命故障”,也是本文核心解決場景。
2. ?? 備份恢復 3 大分類,別用錯場景
邏輯備份(expdp/impdp)
? 適用:備份單表 / 索引等對象、跨版本遷移
? 不適用:介質故障(僅記錄 “快照狀態”,無日志前滾能力)
物理備份(手工 / RMAN)
? 適用:介質故障(恢復數據文件 / 控制文件)
?? 手工備份:通過cp等 OS 命令操作,分 2 種:
冷備:數據庫關閉狀態(非歸檔模式唯一選擇)
熱備:數據庫打開狀態(需歸檔模式,不影響業務)
閃回技術(11g 支持 7 種)
? 適用:用戶錯誤(如誤刪表)
? 不適用:介質故障(無需備份,但依賴 undo / 閃回日志)
3. ?? 歸檔模式:熱備與完全恢復的 “開關”
歸檔模式(推薦生產環境)
重做日志寫滿后自動歸檔(不覆蓋),支持:
? 熱備 + 完全恢復(無數據丟失)
? 恢復到任意時間點
非歸檔模式(僅測試環境用)
重做日志循環覆蓋,限制:
? 僅支持冷備
? 介(jie)質(zhi)故障后丟失 “備份到(dao)故障” 的所有數據

??? 二、手工備份實操:冷備 vs 熱備 step by step

  1. ?? 冷備:非歸檔模式的 “唯一選擇”
    核心前提:數據庫必須 “干凈關閉”
    -- 1. 關閉數據庫(避免abort導致不一致)
    shutdown immediate;

-- 2. 查詢需備份的文件路徑(關鍵!別漏文件)
select name from v$datafile; -- 數據文件
select name from v$controlfile; -- 控(kong)制文件

?? 冷備 3 步走(Linux 環境)
備份數據文件:cp /u01/oradata/prod/.dbf /u01/backup/cold/
備份控制文件:cp /u01/oradata/prod/
.ctl /u01/backup/cold/
驗證備份:用dbv檢查壞塊(避免備份無效)
dbv file=/u01/backup/cold/system01.dbf feedback=50
輸出“無壞(huai)塊”才算合格

非歸檔模式恢復(冷備專用)
-- 1. 還原備份文件(覆蓋損壞文件)
-- cp /u01/backup/cold/.dbf /u01/oradata/prod/
-- cp /u01/backup/cold/
.ctl /u01/oradata/prod/

-- 2. 啟動并重建日志(避免SCN不匹配)
startup mount;
alter database clear logfile group 1; -- 重建所有日志組
alter database clear logfile group 2;
alter database open; -- 恢復完成

  1. ?? 熱備:歸檔模式的 “在線方案”
    核心前提(缺一不可)
    ? 必須開啟歸檔模式:alter database archivelog;? 只讀表空間不支持熱備,臨時表空間無需備份

?? 熱備 4 步走(單表空間為例,更安全)
開啟熱備模式(凍結 SCN,避免分裂塊)
alter tablespace users begin backup; -- 單表空間熱備(推薦)
-- 全庫熱(re)備(bei):alter database begin backup;(鎖資(zi)源多(duo),謹慎用)

監控熱備狀態(確保文件可備份)
select file#, status from v$backup;
-- 輸出STATUS=ACTIVE,說明該數據(ju)文(wen)件(jian)可(ke)備份

復制數據文件(OS 命令,別中斷)
cp /u01/oradata/prod/users01.dbf /u01/backup/hot/

關閉熱備模式(關鍵!避免日志暴漲)
alter tablespace users end backup;

? 關鍵問題:什么是 “分裂塊”?怎么避免?
當手工熱(re)備時(shi),OS 用cp復制(zhi)文件(按 OS 塊(kuai)(kuai)),而 Oracle DBWR 進(jin)程可能同時(shi)寫臟塊(kuai)(kuai)(按 Oracle 塊(kuai)(kuai)),導(dao)致備份文件出(chu)現 “頭(tou)部舊、尾部新” 的不一致塊(kuai)(kuai)(分(fen)裂塊(kuai)(kuai))。?? Oracle 解(jie)決方案(an):熱(re)備模式(shi)下,首(shou)次寫臟塊(kuai)(kuai)前(qian)會把(ba) “塊(kuai)(kuai)鏡(jing)像” 寫入(ru)重做(zuo)日志,恢復時(shi)自動修復;RMAN 備份無(wu)此問題(按 Oracle 塊(kuai)(kuai)讀取)。

?? 三、手工完全恢復:無數據丟失的 3 種場景

完全恢復 =“還原備份 + 日志前滾”,適用于歸檔模式,能恢復到故障前最后一次提交。
場景 1:全庫恢復(關鍵文件損壞,如 system/undotbs)
關鍵文件損壞會導致數據庫崩潰,需在mount狀態恢復。
-- 1. 還原備份文件(所有數據文件+控制文件)
-- cp /u01/backup/hot/*.dbf /u01/oradata/prod/

-- 2. 啟動到mount狀態
startup mount;

-- 3. 前滾日志(自動應用歸檔+當前日志)
recover database;

-- 4. 打開數據庫(恢復完成)
alter database open;

場景 2:表空間恢復(非關鍵表空間,如 users)
非關鍵文件損壞不影響數據庫運行,可 “在線恢復”(業務不中斷)。
-- 1. 表空間離線(避免業務報錯)
alter tablespace users offline immediate;

-- 2. 還原備份文件(僅該表空間的文件)
-- cp /u01/backup/hot/users01.dbf /u01/oradata/prod/

-- 3. 前滾日志(僅恢復該表空間)
recover tablespace users;

-- 4. 表空間在線(業務恢復)
alter tablespace users online;

場景 3:數據文件恢復(單文件損壞,靈活選擇)
-- 非關鍵文件(如users01.dbf,在線恢復)
alter database datafile '/u01/oradata/prod/users01.dbf' offline;
-- cp /u01/backup/hot/users01.dbf /u01/oradata/prod/
recover datafile '/u01/oradata/prod/users01.dbf';
alter database datafile '/u01/oradata/prod/users01.dbf' online;

-- 關鍵文件(如undotbs01.dbf,mount恢復)
startup mount;
-- cp /u01/backup/hot/undotbs01.dbf /u01/oradata/prod/
recover datafile 3; -- 3是數據文件號(查v$datafile)
alter database open;

?? 輔助視圖:恢復時查這 3 個視圖排障v$recover_file:查看需恢復的數據文件
v$recovery_log:查看需要的重做日志
v$archived_log:確認(ren)歸檔日(ri)志完整性

?? 四、手工不完全恢復:接受數據丟失的兜底方案

當歸檔日志丟失、誤刪表空間時,只能恢復到過去某一時刻,代價是丟失后續數據。
?? 核心要求:恢復后必須用resetlogs打開數據庫(重置日志序列)。
類型 1:基于時間點(已知誤操作時間)
-- 1. 用LogMiner找誤操作時間(如誤刪表時間:2012-08-01 17:28:29)
-- (LogMiner操作略(lve),核心是(shi)定位“drop table”的時間戳(chuo))

-- 2. 還原備份文件(恢復到誤操作前的備份)
-- cp /u01/backup/hot/*.dbf /u01/oradata/prod/

-- 3. 不完全恢復(到誤操作前)
startup mount;
recover database until time '2025-08-01 17:28:29';

-- 4. 重置日志打開(必須!)
alter database open resetlogs;

類型 2:使用備份控制文件(當前控制文件全損壞)
-- 1. 還原備份控制文件(覆蓋所有控制文件副本)
-- cp /u01/backup/con.bak /u01/oradata/prod/control01.ctl
-- cp /u01/backup/con.bak /u01/oradata/prod/control02.ctl

-- 2. 處理新增表空間(若備份后新增了表空間,需建空文件)
startup mount;
alter database create datafile '/u01/oradata/prod/abcd01.dbf';

-- 3. 恢復(指定備份控制文件)
recover database using backup controlfile;
-- 按(an)提(ti)示輸入當前(qian)日志路徑(如:/u01/oradata/prod/redo01.log)

-- 4. 重置日志打開
alter database open resetlogs;

?? 五、DBA 實戰建議:5 個避坑要點

備份必驗證:每次備份后用dbv檢查壞塊,每月在測試環境演練恢復(避免 “備份無效”);
歸檔日志異地存:歸檔日志是完全恢復的關鍵,必須存到不同磁盤(避免和數據文件同盤損壞);
控制文件多副本:配置 3 個控制文件(不同磁盤),定期用alter database backup controlfile to '/path/con.bak';備份;
操作記日志:手工操作時記錄 “命令 + 時間 + SCN”,比如 “2025-11-03 15:00 執行冷備,SCN=123456”,排障更高效;
優先 RMAN,不忘(wang)手(shou)工:RMAN 能(neng)自動規避分裂(lie)塊、簡化(hua)操作(zuo),但(dan)手(shou)工備份(fen)是 “兜底方案(an)”(比(bi)如(ru) RMAN 自身故(gu)障時)。

posted on 2025-11-03 10:38  劉子毅  閱讀(138)  評論(0)    收藏  舉報

導航