Oracle DBA1 ---- 數據庫恢復

Oracle DBA 数据库恢复
本文介绍了Oracle数据库的恢复流程,包括完全介质恢复、数据文件丢失恢复、控制文件丢失恢复等场景,并详细解释了不同类型的文件丢失时的具体操作步骤。

                 

  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)的恢復

基于SCNchange)的恢復

基于備份控制文件(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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值