ORACLE-資料恢復
oracle:9.2.0.1.0
sid:xianhe
一:準備工作
把資料庫改為歸檔模式
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> alter database archivelog;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL>
設定成自動歸檔
SQL> alter system set log_archive_start = true scope=spfile;
系統已更改。
確定資料庫在歸檔模式下並是自動存檔的
SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 D:oracleora92RDBMS
最早的概要日誌序列 2
下一個存檔日誌序列 4
當前日誌序列 4
SQL>
乾淨的關閉資料庫,做一個完全的冷備份。
二:開始實驗
實驗1:描述如下。
資料庫系統資料檔案和回退段遭破壞的情況下的恢復。此時資料庫的狀態是關閉的。
先啟動資料庫,用scott使用者建立test表,並插入兩條資料。
SQL> create table scott.test
2 (id int);
表已建立。
SQL> insert into scott.test values(1);
已建立 1 行。
SQL> insert into scott.test values(2);
已建立 1 行。
SQL> commit;
提交完成。
假設資料庫遭意外被迫關閉,並且系統資料檔案丟失。
SQL> shutdown abort
ORACLE 例程已經關閉。
把oracle服務停掉,刪除SYSTEM01.dbf和UNDOTBS01.DBF檔案
啟動服務
啟動資料庫, 提示如下錯誤
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 1 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 1: 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
把備份的SYSTEM01.dbf檔案還原回去
然後recover database 或 recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
SQL> recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF';
完成介質恢復。
開啟資料庫有提示
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 2: 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
把備份的UNDOTBS01.DBF檔案還原回去,執行recover database 或 recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
SQL> recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF';
完成介質恢復。
然後就可以開啟資料庫,檢視scott使用者的test表。
SQL> alter database open;
資料庫已更改。
SQL> select * from scott.test;
ID
----------
1
2
SQL>
完成。
實驗2:描述如下
資料庫是開啟的,這是損壞的檔案是使用者的資料檔案而不是system和undo檔案。
用scott使用者在users表空間建立test1表
SQL> create table scott.test1(id int)
2 tablespace users;
表已建立。
插入兩條資料
SQL> insert into scott.test1 values(1);
已建立 1 行。
SQL> insert into scott.test1 values(2);
已建立 1 行。
SQL> commit;
提交完成。
當前日誌歸檔
SQL> alter system archive log current;
系統已更改。
現在破壞users表空間,使其離線,然後刪除users01.dbf
SQL> alter tablespace users offline;
表空間已更改。
SQL> alter tablespace users online;
alter tablespace users online
*
ERROR 位於第 1 行:
ORA-01157: 無法標識/鎖定資料檔案 9 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 9: 'D:ORACLEORADATAXINAHEUSERS01.DBF'
此時出現錯誤,users表空間不能線上了。這時把備份的users01.DBF還原回去。
然後
SQL> recover tablespace users;
ORA-00279: 更改 292331 (在 03/18/2005 16:36:05 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORACLEORA92RDBMSARC00004.001
ORA-00280: 更改 292331 對於執行緒 1 是按序列 # 4 進行的
指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 292907 (在 03/18/2005 16:45:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORACLEORA92RDBMSARC00005.001
ORA-00280: 更改 292907 對於執行緒 1 是按序列 # 5 進行的
ORA-00278: 此恢復不再需要日誌檔案 'D:ORACLEORA92RDBMSARC00004.001'
已應用的日誌。
完成介質恢復。
SQL> alter tablespace users online;
表空間已更改。
SQL> select * from scott.test1;
ID
----------
1
2
完成。
實驗3:描述如下
資料檔案沒有備份(不能使system和undo檔案)的恢復。
建立表空間testspace
SQL> create tablespace testspace
2 datafile 'd:oracleoradataxinahetestspace.dbf' size 10m;
表空間已建立。
SQL> create table scott.test3(id int)
2 tablespace testspace;
表已建立。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into scott.test3 values(1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> alter tablespace testspace offline;
表空間已更改。
SQL> select * from scott.test3;
select * from scott.test3
*
ERROR 位於第 1 行:
ORA-00376: 此時無法讀取檔案 11
ORA-01110: 資料檔案 11: 'D:ORACLEORADATAXINAHETESTSPACE.DBF'
由於沒有備份資料檔案,我重新建立一個
SQL> alter database create datafile
2 'D:ORACLEORADATAXINAHETESTSPACE.DBF';
資料庫已更改。
SQL> recover tablespace testspace;
完成介質恢復。
SQL> alter tablespace testspace online;
表空間已更改。
SQL> select * from scott.test3;
ID
----------
1
sid:xianhe
一:準備工作
把資料庫改為歸檔模式
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> alter database archivelog;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL>
設定成自動歸檔
SQL> alter system set log_archive_start = true scope=spfile;
系統已更改。
確定資料庫在歸檔模式下並是自動存檔的
SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 D:oracleora92RDBMS
最早的概要日誌序列 2
下一個存檔日誌序列 4
當前日誌序列 4
SQL>
乾淨的關閉資料庫,做一個完全的冷備份。
二:開始實驗
實驗1:描述如下。
資料庫系統資料檔案和回退段遭破壞的情況下的恢復。此時資料庫的狀態是關閉的。
先啟動資料庫,用scott使用者建立test表,並插入兩條資料。
SQL> create table scott.test
2 (id int);
表已建立。
SQL> insert into scott.test values(1);
已建立 1 行。
SQL> insert into scott.test values(2);
已建立 1 行。
SQL> commit;
提交完成。
假設資料庫遭意外被迫關閉,並且系統資料檔案丟失。
SQL> shutdown abort
ORACLE 例程已經關閉。
把oracle服務停掉,刪除SYSTEM01.dbf和UNDOTBS01.DBF檔案
啟動服務
啟動資料庫, 提示如下錯誤
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 1 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 1: 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
把備份的SYSTEM01.dbf檔案還原回去
然後recover database 或 recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
SQL> recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF';
完成介質恢復。
開啟資料庫有提示
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 2: 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
把備份的UNDOTBS01.DBF檔案還原回去,執行recover database 或 recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
SQL> recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF';
完成介質恢復。
然後就可以開啟資料庫,檢視scott使用者的test表。
SQL> alter database open;
資料庫已更改。
SQL> select * from scott.test;
ID
----------
1
2
SQL>
完成。
實驗2:描述如下
資料庫是開啟的,這是損壞的檔案是使用者的資料檔案而不是system和undo檔案。
用scott使用者在users表空間建立test1表
SQL> create table scott.test1(id int)
2 tablespace users;
表已建立。
插入兩條資料
SQL> insert into scott.test1 values(1);
已建立 1 行。
SQL> insert into scott.test1 values(2);
已建立 1 行。
SQL> commit;
提交完成。
當前日誌歸檔
SQL> alter system archive log current;
系統已更改。
現在破壞users表空間,使其離線,然後刪除users01.dbf
SQL> alter tablespace users offline;
表空間已更改。
SQL> alter tablespace users online;
alter tablespace users online
*
ERROR 位於第 1 行:
ORA-01157: 無法標識/鎖定資料檔案 9 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 9: 'D:ORACLEORADATAXINAHEUSERS01.DBF'
此時出現錯誤,users表空間不能線上了。這時把備份的users01.DBF還原回去。
然後
SQL> recover tablespace users;
ORA-00279: 更改 292331 (在 03/18/2005 16:36:05 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORACLEORA92RDBMSARC00004.001
ORA-00280: 更改 292331 對於執行緒 1 是按序列 # 4 進行的
指定日誌: {
auto
ORA-00279: 更改 292907 (在 03/18/2005 16:45:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORACLEORA92RDBMSARC00005.001
ORA-00280: 更改 292907 對於執行緒 1 是按序列 # 5 進行的
ORA-00278: 此恢復不再需要日誌檔案 'D:ORACLEORA92RDBMSARC00004.001'
已應用的日誌。
完成介質恢復。
SQL> alter tablespace users online;
表空間已更改。
SQL> select * from scott.test1;
ID
----------
1
2
完成。
實驗3:描述如下
資料檔案沒有備份(不能使system和undo檔案)的恢復。
建立表空間testspace
SQL> create tablespace testspace
2 datafile 'd:oracleoradataxinahetestspace.dbf' size 10m;
表空間已建立。
SQL> create table scott.test3(id int)
2 tablespace testspace;
表已建立。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into scott.test3 values(1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> alter tablespace testspace offline;
表空間已更改。
SQL> select * from scott.test3;
select * from scott.test3
*
ERROR 位於第 1 行:
ORA-00376: 此時無法讀取檔案 11
ORA-01110: 資料檔案 11: 'D:ORACLEORADATAXINAHETESTSPACE.DBF'
由於沒有備份資料檔案,我重新建立一個
SQL> alter database create datafile
2 'D:ORACLEORADATAXINAHETESTSPACE.DBF';
資料庫已更改。
SQL> recover tablespace testspace;
完成介質恢復。
SQL> alter tablespace testspace online;
表空間已更改。
SQL> select * from scott.test3;
ID
----------
1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10069277/viewspace-255318/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle-誤刪資料恢復(短期內)Oracle資料恢復
- 恢復資料,資料塊恢復
- 資料恢復:AMDU資料抽取恢復資料恢復
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 資料庫修復資料恢復資料庫資料恢復
- 【Vsan資料恢復】Vsan資料恢復案例資料恢復
- Vsan資料恢復—Vsan資料恢復案例資料恢復
- NAS陣列恢復資料資料恢復開盤陣列資料恢復
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 伺服器資料恢復-ESX SERVER資料恢復案例伺服器資料恢復Server
- 【伺服器資料恢復】Vsan資料恢復案例伺服器資料恢復
- 【伺服器資料恢復】SUN SOLARIS資料恢復案例伺服器資料恢復
- 使用恢復建議恢復資料庫資料庫
- 【備份恢復】資料恢復指導資料恢復
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- TRUNCATE資料恢復資料恢復
- ORACLE資料恢復Oracle資料恢復
- 恢復資料庫資料庫
- mysql資料恢復MySql資料恢復
- 硬碟資料恢復硬碟資料恢復
- MAC資料恢復Mac資料恢復
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- 北亞企安資料恢復-XSAN資料恢復案例資料恢復
- 【北亞資料恢復】硬碟壞道故障如何恢復資料?資料恢復硬碟
- 【VSAN資料恢復】VSAN儲存資料恢復案例資料恢復
- 儲存崩潰資料恢復過程;資料恢復案例資料恢復
- EMC 儲存資料恢復案例詳解【資料恢復方案】資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer