优秀是一种习惯 , 生活是一种过程, 放弃是一种智慧 , 缺点是一种恩惠。 爱好:看书/K歌/上网/游泳/汉服 哼着單身情歌,彈着藍色吉它,展示突然的自我 QQ:19636427 另觅:160左右的女孩

Oracle DBA1 ---- 數據庫恢復

上一篇 / 下一篇  2008-03-21 11:33:41

                

 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只可以在服務器端使用

 

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-11-23  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 4786
  • 日志数: 92
  • 建立时间: 2007-12-18
  • 更新时间: 2008-11-23

RSS订阅

Open Toolbar