2006年08月7日

noarchive的情況下硬碟壞了,使用rman還原

os:win2000
oracle:10.0.2


在noarchive,檔案損壞,並且存放檔案的hd損壞,採用rman方法進行修複
1、先進行rman備份(因為database為noarchive的情況,所以要把database狀態變為mount才能進行備份,不然會出現錯誤訊 習)
已連線 目標資料庫: BINHU (DBID=616178683, 未開啟)

RMAN> run {
2> allocate channel t1  type disk;
3> backup full format 'd:/vm/%U' database include current controlfile;
4> release channel t1;
5> }

使用目標資料庫控制檔替代復原目錄
配置的通道: t1
通道 t1: sid=156 devtype=DISK

開始 backup, 於 2006-08-07 11:07:23
通道 t1: 啟動完整資料檔備份集
通道 t1: 正在指定備份集中的資料檔
輸入資料檔 fno=00001 名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSTEM01.DBF
輸入資料檔 fno=00003 名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSAUX01.DBF
輸入資料檔 fno=00002 名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\UNDOTBS01.DBF
輸入資料檔 fno=00004 名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\USERS01.DBF
輸入資料檔 fno=00005 名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF
通道 t1: 啟動部份 1, 在 2006-08-07 11:07:25
通道 t1: 已完成部份 1, 在 2006-08-07 11:08:40
片段處理=D:\VM\0BHQ4LNC_1_1 標記=TAG20060807T110723 註解=NONE
通道 t1: 備份集完成, 經歷時間: 00:01:16
通道 t1: 啟動完整資料檔備份集
通道 t1: 正在指定備份集中的資料檔
包括備份集中目前的控制檔
在備份集中包括目前的 SPFILE
通道 t1: 啟動部份 1, 在 2006-08-07 11:08:42
通道 t1: 已完成部份 1, 在 2006-08-07 11:08:43
片段處理=D:\VM\0CHQ4LPO_1_1 標記=TAG20060807T110723 註解=NONE
通道 t1: 備份集完成, 經歷時間: 00:00:03
完成 backup, 於 2006-08-07 11:08:43

釋出的通道: t1

RMAN> exit

2、我測試的檔案是D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF,所以我把他刪除後,開到open看看
SQL> alter database open;
alter database open
*
 ERROR 在行 1:
ORA-01157: 無法識別/鎖定資料檔 5 - 請參閱 DBWR 追蹤檔
ORA-01110: 資料檔 5: 'D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF'

3、進rman進行還原
RMAN>  run {
2> allocate channel tt1 type disk;
3>  set newname for datafile 5 to 'D:\ORACLE\PRODUCT\10.2.0\BINHU\new_test1.dbf';
4> restore datafile 5;
5> switch datafile all;
6> recover database;
7> }

釋出的通道: ORA_DISK_1
配置的通道: tt1
通道 tt1: sid=156 devtype=DISK

執行命令: SET NEWNAME

開始 restore, 於 2006-08-07 11:41:10

通道 tt1: 正在回復資料檔 00005
輸入資料檔複本 recid=2 戳記=597842827 檔案名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\NEW_TEST.DB

資料檔 00005 回復的目的地: D:\ORACLE\PRODUCT\10.2.0\BINHU\NEW_TEST1.DBF
通道 tt1: 已複製資料檔 00005 的資料檔複本
輸出檔案名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\NEW_TEST1.DBF recid=3 戳記=597843671
完成 restore, 於 2006-08-07 11:41:12

資料檔 5 已切換成資料檔複本
輸入資料檔複本 recid=4 戳記=597843672 檔案名稱=D:\ORACLE\PRODUCT\10.2.0\BINHU\NEW_TEST1.DF

開始 recover, 於 2006-08-07 11:41:13

啟動媒體恢復
媒體復原完成, 經歷時間: 00:00:02

完成 recover, 於 2006-08-07 11:41:16
釋出的通道: tt1


4、進oracle查看是否真ok了
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\TEST.DBF (還原前的檔名)


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\BINHU\NEW_TEST1.DBF (還原後的檔名)

SQL> alter database open;

已更改資料庫.

SQL> select count(*) from test2;

  COUNT(*)
----------
   1376256

SQL> select status from v$instance;

STATUS
------------------------
OPEN

Posted by my_work at 樂多Roodo! │12:03 │回應(0)引用(0)DB
樂多分類:網路/3C 共同主題:Oracle 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/1983659