Oracle DBA ---- 數據庫恢復
數據庫備份很重要,使用rman基本上說,備份的使用有歸屬,有家了。
既然備份有靠,那恢復,就顯得重要了。
1:完全介質恢復
ORA-01110: data file 1: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF'
數據文件丟失時:
丟失的是系統文件,所以必須在mount的狀態下,把備份文件複製過來,然後
Recover datafile 1
非system 表空間數據文件情況下:
SYS AS SYSDBA on 20-MAR-08 at ORCL>@find_error;
FILE# NAME ERROR
---------- ---------------------------------------- --------------------
4 D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\US FILE NOT FOUND
ERS01.DBF
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 4 offline;
Database altered.
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database open;
Database altered.
1: 首先,將數據文件offline,再打開數據庫。
Alter database datafile ‘全文件名稱’ offline;
2: 然後,恢復數據文件
Recover datafile ‘全文件名稱’;
3: 將數據文件恢復后,再修改online即可。
Alter database datafile ‘全文件名稱’ online;
如下:
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 'D:\oracle\product\10.1.0\oradata\o
rcl\users01.dbf' online;
alter database datafile 'D:\oracle\product\10.1.0\oradata\orcl\users01.dbf' online
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF'
SYS AS SYSDBA on 20-MAR-08 at ORCL>recover datafile users01.dbf;
ORA-02236: invalid file name
SYS AS SYSDBA on 20-MAR-08 at ORCL>recover datafile 'D:\oracle\product\10.1.0\oradata\orcl\use
rs01.dbf';
Media recovery complete.
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 'D:\oracle\product\10.1.0\oradata\o
rcl\users01.dbf' online;
Database altered.
控制文件介質失敗的恢復:
控制文件的丟失,會導致數據庫啓動失敗,控制文件記錄了數據庫的結構信息, 如數據文件和重做日誌文件的位置。
如果單個控制文件介質失敗,而其他控制文件完好,這种情況下,如果介質失敗的磁盤沒有損壞,可以將其它完好的控制文件鏡像複製過來,並更名為介質失敗的控制文件名稱。
如:control02.ctl 去掉了,可以把control01.ctl,或者control03.ctl 複製,把名稱修改成control02.ctl 就可以了。
如果是磁盤損壞,則應該修改spfile 初始化參數文件,使用alter system 命令
首先,查看所處於的狀態:
SYS AS SYSDBA on 20-MAR-08 at ORCL>select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl STARTED
started: 表示處於未裝載的nomount狀態,mounted表示處於已裝載的狀態,open 表示已打開的狀態。
最好的方法是,在pfile 中配置好,然後:
Create spfile from pfile
重做日誌文件的恢復
首先查看失敗的日誌詳細信息如:
SYS AS SYSDBA on 2008-03-20 15:38:11 at ORCL>select group#,sequence#,archived,status from v$lo
g;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 4 YES INACTIVE
2 5 NO CURRENT
3 3 YES INACTIVE
日誌組2是當前日誌,,沒有歸檔,而日誌1已經歸檔,可以直接清除。
使用如下命令,重建該日誌文件組:
SYS AS SYSDBA on 2008-03-20 15:38:30 at ORCL>alter database clear logfile group 1;
Database altered.
SYS AS SYSDBA on 2008-03-20 15:41:25 at ORCL>select group#,sequence#,archived,status from v$lo
g;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 YES UNUSED
2 5 NO CURRENT
3 3 YES INACTIVE
如果還沒有歸檔,可以使用如下命令:
SYS AS SYSDBA on 2008-03-20 15:42:42 at ORCL>alter database clear unarchived logfile group 1;
Database altered.
如果是當前正在使用的日誌文件組2,則在數据庫不能啓動的情況下,
採用基於scn,或者基於取消的方法恢復數據庫。
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) ???????????
SYS AS SYSDBA on 20-MAR-08 at ORCL>select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 YES UNUSED
2 5 NO CURRENT
3 0 YES UNUSED
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1:
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG'
可以發現,重建日誌組,使用clear 命令也不行。
Recover database until cancel;
2次使用基於取消的方法恢復數據庫。
第一次使用auto
第二次使用cancel;
盡量恢復可以利用的歸檔日誌。
我在恢復時,發生如下情況:
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF'
使用該命令后,又發生如下情況:
SYS AS SYSDBA on 20-MAR-08 at ORCL>recover datafile 'D:\oracle\product\10.1.0\oradata\orcl\sys
tem01.dbf';
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
於是:
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 1 offline;
Database altered.
SYS AS SYSDBA on 20-MAR-08 at ORCL>recover datafile 2;
Media recovery complete.
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 1 online;
SYS AS SYSDBA on 20-MAR-08 at ORCL>alter database datafile 1 online;
Database altered.
就可以打開數據庫了。
恢復臨時文件:
儅臨時文件出錯,不能打開數據庫,恢復比較簡單
Offline
Open
Online
即可,同時臨時文具文件是非重要文件,不保存數據,可以隨時刪除重建,不影響數據庫的數據安全。
數據庫的不完全恢復:
基于時間(time)的恢復
基于取消(cancel)的恢復
基于SCN(change)的恢復
基于備份控制文件(Using backup controlfile)的恢復
Until time(‘yyyy-mm-dd hh24:mi:ss’)
Until until cancel
Until change 13079858
Impdp and imp區別:
Imp 可以在服務器端和客戶端使用
Impdp 只可以在服務器端使用
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/701141/viewspace-214894/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/701141/viewspace-214894/
Oracle DBA 数据库恢复
本文介绍了Oracle数据库的恢复流程,包括完全介质恢复、数据文件丢失恢复、控制文件丢失恢复等场景,并详细解释了不同类型的文件丢失时的具体操作步骤。
501

被折叠的 条评论
为什么被折叠?



