冷備手工完全恢復(recover database,recover tablespace,recover datafile)
1. 手工完全恢復三種級別:
recover database:所有或大部分datafile丟失,一般是在mount狀態完成。
recover tablespace: 非關鍵表空間損壞,表空間下某些資料檔案不能訪問,一般是在open下完成。
recover datafile:單一或少數資料檔案損壞,可以在mount或open 狀態完成。
四個關鍵檔案:1)system01.dbf, 2) undo tablespace,3)control file 4)current log file
2. 手工完全恢復前提: 1)有一套datafile全備, 2)使用當前控制檔案, 3)自上次備份以來的歸檔日誌和當前聯機日誌是完整的
3. 實驗1:(recover database )
3.1 檢視資料庫當前狀態,準備好冷備。
SQL> select * from andy;
ID
----------
1
--生成冷備指令碼
SQL> select 'ho cp ' || name || ' /home/oracle/coldbak' from v$controlfile;
'HOCP'||NAME||'/HOME/ORACLE/COLDBAK'
--------------------------------------------------------------------------------
ho cp /home/oracle/app/oradata/orcl/control01.ctl /home/oracle/coldbak
ho cp /home/oracle/app/flash_recovery_area/orcl/control02.ctl /home/oracle/coldbak
SQL> select 'ho cp ' || name || ' /home/oracle/coldbak' from v$datafile;
'HOCP'||NAME||'/HOME/ORACLE/COLDBAK'
--------------------------------------------------------------------------------
ho cp /home/oracle/app/oradata/orcl/system01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/sysaux01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/undotbs01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/users01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/tbtb01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/ogg01.dbf /home/oracle/coldbak
6 rows selected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
--冷備
SQL> ho cp /home/oracle/app/oradata/orcl/control01.ctl /home/oracle/coldbak
SQL> ho cp /home/oracle/app/flash_recovery_area/orcl/control02.ctl /home/oracle/coldbak
SQL> ho cp /home/oracle/app/oradata/orcl/system01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/sysaux01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/undotbs01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/users01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/tbtb01.dbf /home/oracle/coldbak
ho cp /home/oracle/app/oradata/orcl/ogg01.dbf /home/oracle/coldbak
--檢查冷備
[
total 1997776
-rw-r-----. 1 oracle oinstall 9748480 Dec 10 06:22 control01.ctl
-rw-r-----. 1 oracle oinstall 9748480 Dec 10 06:25 control02.ctl
-rw-r-----. 1 oracle oinstall 408748032 Dec 10 06:32 ogg01.dbf
-rw-r-----. 1 oracle oinstall 639639552 Dec 10 06:31 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392 Dec 10 06:31 system01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Dec 10 06:32 tbtb01.dbf
-rw-r-----. 1 oracle oinstall 99622912 Dec 10 06:32 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 39329792 Dec 10 06:32 users01.dbf
SQL> startup;
ORACLE instance started.
SQL> insert into andy values(2);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from andy;
ID
----------
1
2
3.2 模擬介質失敗,所有資料檔案丟失
[
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 729812824 bytes
Database Buffers 331350016 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/home/oracle/app/oradata/orcl/system01.dbf'
3.3 完全恢復流程
--檢視需要恢復的檔案
SQL> select file#,error from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
1 FILE NOT FOUND
2 FILE NOT FOUND
3 FILE NOT FOUND
4 FILE NOT FOUND
5 FILE NOT FOUND
6 FILE NOT FOUND
6 rows selected.
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1969481
2 1969481
3 1969481
4 1969481
5 1969481
6 1969481
6 rows selected.
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 0
2 0
3 0
4 0
5 0
6 0
6 rows selected.
a 首先還原所有資料檔案
[
b 恢復database
SQL> recover database;
Media recovery complete.
c 開啟資料庫
SQL> alter database open;
Database altered.
d 驗證
SQL> select * from andy;
ID
----------
1
2
實驗2: recover tablespace (狀態:database open)
說明:針對的是非關鍵表空間的損壞,基於表空間的完全恢復實際上還是對其下的datafile的恢復
模擬這種情形非常實用,通常是某個非關鍵表空間下的資料檔案受損,但並沒有造成Oracle崩潰, 我們只需針對個別有問題的tablespace去做單獨的線上恢復操作,也就是說恢復時資料庫整體是online的,而區域性表空間是offline的,資料庫不需要shutdown。
1)瞭解一下當前狀態,有個 LZY 表空間
SQL> col file_name for a60
SQL> select file_id,file_name,tablespace_name from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- ------------------------------------------------------------ -------------------------
4 /home/oracle/app/oradata/orcl/users01.dbf USERS
3 /home/oracle/app/oradata/orcl/undotbs01.dbf UNDOTBS1
2 /home/oracle/app/oradata/orcl/sysaux01.dbf SYSAUX
1 /home/oracle/app/oradata/orcl/system01.dbf SYSTEM
5 /home/oracle/app/oradata/orcl/tbtb01.dbf LZY
6 /home/oracle/app/oradata/orcl/ogg01.dbf GOLDGATE
6 rows selected.
2)準備實驗資料
SQL> create table andy.andydemo(id int) tablespace lzy;
Table created.
SQL> inset into andy.andydemo values(1);
SP2-0734: unknown command beginning "inset into..." - rest of line ignored.
SQL> insert into andy.andydemo values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from andy.andydemo;
ID
----------
1
3)模擬表空間損壞,資料庫open下,直接刪除表空間下的資料檔案
SQL> ho rm -rf /home/oracle/app/oradata/orcl/tbtb01.dbf
4)查證該表空間上的表不可訪問了
SQL> alter system flush buffer_cache; --清除data buffer
System altered.
SQL> select * from andydemo;
select * from andydemo
*
ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/home/oracle/app/oradata/orcl/tbtb01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
5)看看scn的情況
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1969484
2 1969484
3 1969484
4 1969484
5 1969484
6 1969484
6 rows selected.
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1969484
2 1969484
3 1969484
4 1969484
5 0
6 1969484
6 rows selected.
說明:
v$datafile是檢視來自控制檔案裡記錄的資料檔案scn資訊。
v$datafile_header是檢視資料檔案頭中資料檔案scn資訊。
6)表空間offline --immediate使表空間能立即離線,不等Oracle對任何資料檔案做檢查
SQL> alter tablespace lzy offline immediate;
Tablespace altered.
7)資料庫open下,使用備份還原這個表空間下的所有資料檔案。
SQL> ho cp /home/oracle/coldbak/tbtb01.dbf /home/oracle/app/oradata/orcl/
8)恢復tablespace
SQL> recover tablespace lzy;
Media recovery complete.
9)使表空間online
SQL> alter tablespace lzy online;
Tablespace altered.//注意:此時資料庫狀態一直是open的。
10) 檢驗
SQL> select * from andydemo;
ID
----------
1
實驗3: (recover datafile,database mount或open狀態)
恢復datafile, 同實驗2不同的是模擬UNDO檔案損壞: 因UNDO資料檔案也是關鍵檔案,所以只能在mount狀態下恢復。
1) 模擬環境:
SQL> delete andy.andy; //注意:刪掉了andy並提交,老值在UNDO裡。
3 rows deleted.
SQL>commit;
2)在open 狀態下刪除datafile
SQL> ho rm -rf /home/oracle/app/oradata/orcl/undotbs01.dbf
SQL> insert into andy.andy values(4); /undo檔案已經不在了,dbwr未來得及重新整理,此條記錄在redo裡
SQL>commit;
3)關閉資料庫
SQL> shutdown abort;
ORACLE instance shut down.//abort埋下伏筆,等到完全恢復時會做UNDO回滾。
4) 啟動資料庫mount
SQL> startup;
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 729812824 bytes
Database Buffers 331350016 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/home/oracle/app/oradata/orcl/undotbs01.dbf'
5)還原並恢復UNDO資料檔案
SQL> ho cp /home/oracle/coldbak/undotbs01.dbf /home/oracle/app/oradata/orcl/undotbs01.dbf
SQL> recover datafile 3
Media recovery complete.
6)開啟資料庫(會完成UNDO表空間資料的回滾)
SQL> alter database open;
Database altered.
7) 驗證
SQL> select * from andy;
ID
----------
4
總結:有全冷備條件下三種級別恢復流程。 (相應檔名視自己的環境而定)
recover database:
SQL> select file#,error from v$recover_file;
SQL> select file#,checkpoint_change# from v$datafile;
SQL> select file#,checkpoint_change# from v$datafile_header;
SQL> ho cp /home/oracle/coldbak/*.dbf /home/oracle/app/oradata/orcl/
SQL> recover database;
SQL> alter database open;
recover tablespace:
SQL> select file#,error from v$recover_file;
SQL> select file_id,file_name,tablespace_name from dba_data_files;
SQL> select file#,checkpoint_change# from v$datafile;
SQL> select file#,checkpoint_change# from v$datafile_header;
SQL> alter tablespace lzy offline immediate;
SQL> ho cp /home/oracle/coldbak/tbtb01.dbf /home/oracle/app/oradata/orcl/
SQL> recover tablespace lzy;
SQL> alter tablespace lzy online;
recover datafile:
SQL> select file#,error from v$recover_file;
SQL> select file#,checkpoint_change# from v$datafile;
SQL> select file#,checkpoint_change# from v$datafile_header;
SQL> ho cp /home/oracle/coldbak/undotbs01.dbf /home/oracle/app/oradata/orcl/undotbs01.dbf
SQL> recover datafile 3
SQL> alter database open;
OK,轉載請標明出處。
相關推薦
冷備手工完全恢復(recover database,recover tablespace,recover datafile)
冷備手工完全恢復 1. 手工完全恢復三種級別: recover database:所有或大部分datafile丟失,一般是在mount狀態完成。 recover tablespace: 非關鍵表空間損壞,表空間下某些資料檔案不能訪問,一般是在open下完成。 r
實現多次不完全恢復(RAC環境需要將另一節點關閉)
chang hang startup 節點 lec star med immediate 關閉 #查看以resetlogs打開的歷史SQL> SELECT a.INCARNATION#,a.RESETLOGS_CHANGE#,to_char(a.RESETLOGS_T
oracle資料庫如何手工完全恢復操作?(總結)
oracle資料庫如何手工完全恢復操作? 1.當全部或大部分資料檔案損壞時,需在mount 下進行“資料庫還原恢復”操作: 具體為手工在作業系統中,通過cp 還原受損的 dbf,不一定需要還原全部資料檔案,可以通過查詢v$recover_file來確定哪些檔案需要被還原。
配置設備作為DHCP中繼(中繼與服務器處於同一網絡)
hit ack relay alt 二層交換機 動態 white asi from 作業提要一、拓撲圖二、組網需求如上圖所示,某企業將DHCP服務器部署在核心層設備上,DHCP服務器與企業內的終端不在同一個網段。企業希望使用該DHCP服務器為終端動態分配IP地址。三、配置思
Jira+Confluence備機環境部署(遷移環境、雙機數據同步)記錄
之前 操作 環境 enc .html 信息 環境部署 遷移 www 之前在公司機房的一臺服務器上部署了一套Jira+Confluence環境,由於很多資料和運維信息都在上面做的分享記錄,而該環境部署在單機,所以安全起見,考慮再部署一套備機環境,實現雙機實時同步環境。下面
git tag 標籤完全用法(如何更好的管理你的分支)
打標籤 同大多數 VCS 一樣,Git 也可以對某一時間點上的版本打上標籤。人們在釋出某個軟體版本(比如 v1.0 等等)的時候,經常這麼做。 本節我們一起來學習如何列出所有可用的標籤,如何新建標籤,以及各種不同型別標籤之間的差別。 列顯已有的標籤
oracle數據庫冷備中的手工備份和恢復
ber back red hat dia 11g lte recovery pro || 我的操作系統是red hat5.5 32位系統oracle11g 以我的系統為例: 冷備狀態下,數據庫必須是關閉的,但是我們現在要做一個實驗,在開庫的狀態下分別查詢出: 1.sho
oracle 11g 手工冷備
ora-01157 啟動 temp over res 備份日誌 blog lock start 查看數據庫是否處於非歸檔模式關閉數據庫shutdown immediate備份控制文件和數據文件(沒有備份日誌文件,建議一起備份) [oracle@enmoedu1 PROD]$
MySQL第四天(用戶授權與撤銷,完全備份和完全恢復)
運維day04一、用戶授權與撤銷數據庫管理員密碼設置?1.1修改數據庫管理員本機登錄密碼[root@db2 ~]# mysqladmin -hlocalhost -uroot -p password "123456"Enter password: mysqladmin: [Warning]
數據庫恢復(database restore)之兵不血刃——半小時恢復客戶數據庫
oracle11g ora 設置環境變量 ceo 出了 ice art work sqlplus 昨天,一個客戶打打來電話,說他們的數據庫壞了,不能用了,需要我幫助恢復下,這馬上要放假了,居然出了這事兒,自己也不太喜歡恢復數據庫這類,尤其是他們的數據庫是個win上的庫,但心
(2.7)備份與還原--在完全恢復模式下事務日誌的角色
ges 需要 很多 對數 for 事情 mage .com .html 簡介 生產環境下的數據是如果可以寫在資產負債表上的話,我想這個資產所占的數額一定不會小。而墨菲定律(事情如果有變壞的可能,無論這種可能性有多小,它總會發生)仿佛是給DBA量身定做的。在上篇文章介
解決 ‘Win7&Win10系統電腦檔案誤刪除且清空回收站條件下檔案完美恢復’(完全免費)
1.引言 估計很多朋友都和我一樣,硬碟太滿了或者腦子一抽筋,立刻把檔案刪除並且清空了回收站,過了一會,忽然腦門一拍,馬上又想恢復資料了,怎麼辦?於是,我和大部人的做法一樣,瘋狂百度,發現,彈出來的是某某資料恢復大叔啊,是出來好幾個,但是無一例外,都有短板,要麼不要臉
SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌(譯)
維護計劃 recover 最小 替代 關心 每日 工作方式 檢查 耗時 SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌 作者:Tony Davis,2012/01/27 系列 本文是進階系列的一部分:SQL Server中事務日誌管理的步驟 當事情進
Oracle database和client 安裝教程(轉自部落格園,用於備忘)
** database ** 1.先到Oracle官網上下載11g oracle Database 11g 第 2 版 (11.2.0.1.0) 標準版、標準版 1 以及企業版 適用於 Microsoft Windows (x64) 的 Oracle Datab
恢復到特定點(時間點、scn、日誌序列號),rman不完全恢復
將資料庫、表空間、資料檔案等恢復至恢復備份集儲存時間中的任何一個時間點/SCN/日誌序列(一般是日誌挖掘找到誤操作點),但須謹慎,操作前一定需要做好備份,具備條件的情況下最好先恢復到異機,避免業務停機時間。 前提:已經有資料庫備份 (作者已經提前準備了備份,這裡不進行備
第四章:手工不完全恢復
一般是資料庫啟動不起來的,所以是在mount下進行4.1 不完全恢復的特點: 1)讓整個database 回到過去某個時間點,不能避免資料丟失。 2)想跳過壞日誌而繼續恢復所有其他工作是不可能的,前滾沒有這個功能(考點)。 3)必須
MySQL自動備份和手工恢復(可實現定時備份、保留最近7天、異地備份)
以下是windows下的批處理: 1set hour_str=%time:~0,2%2if"%hour_str:~0,1%"==""set"hour_str=0%hour_str:~1%"3set fileName=%date:~0,4%-%date:~5,2%-%dat
ORACLE冷備檔案恢復
1、恢復資料庫服務 ORADIM -DELETE -SID HDQTLS --刪除資料庫服務 ORADIM -NEW -SID HDQTLS -STARTMODE A -SYSPWD FUTURE -PFILE D:\data\pfile\init.ORA --建立資
RMAN不完全恢復方法(恢復到資料庫某一時間點)
RMAN不完全恢復方法 試驗目的:利用RMAN完成對資料庫的不完全恢復(將資料庫恢復到某個時間點) 試驗步驟: 1.RMAN備份資料庫:backup database; 2. 記錄當前時間: SQL> select to_c
oracle11G Windows冷備恢復
oracle11g 後臺 修改 備恢 創建 新建庫 設置 參數 控制 現有Windows oracle 冷備全部數據文件,全部的控制文件,全部的redo日誌文件。丟失參數文件恢復思路:指定恢復原庫的sidC:\>set oracle_sid=orcl設置環境變量的目地