Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          數據庫的恢復
          ?
          ?
          ?
          一、恢復類型:
          ?
          ??? 使用RMAN做的備份只能通過RMAN進行恢復,恢復分為兩種:數據庫修復(Restore)數據庫恢復(Recover)
          ??? Restore:指用備份文件來替換已損壞的數據庫文件。操作時會利用恢復目錄來獲取備份信息(如果沒有恢復目錄則使用數據庫的控制文件)
          ??? Recover:利用重做日志或增量備份來重建丟失的數據。
          ?
          ?
          二、恢復數據庫:
          ?
          ??? 恢復數據庫必須使數據庫處于加載狀態:
          ??? RMAN> Shutdown immediate;
          ??? RMAN> Startup mount;
          ?
          ??? RMAN> Restore database;
          ??? RMAN> Recover database delete archivelogs skip tablespace temp;
          ?
          ??? RMAN> Alter database open;
          ?
          ??? 注意:
          ??? 1、skip指跳過某文件類型
          ????2、若數據庫是非歸檔模式,則必須使用RMAN> Alter database open resetlogs
          ?
          ?
          三、恢復表空間:
          ?
          ??? RMAN> Shutdown immediate;
          ??? RMAN> Startup mount;
          ??? RMAN> SQL 'Alter?tablespace?users?offline immediate';
          ?
          ??? RMAN> Restore tablespace?users;
          ??? RMAN> Recover tablespace?users;
          ?
          ??? RMAN> SQL 'Alter?tablespace?users?online' ;
          ??? RMAN> Alter database open;
          ?
          ?
          四、恢復數據文件:
          ?
          ??? RMAN> Shutdown immediate;
          ??? RMAN> Startup mount;
          ??? RMAN> SQL 'Alter?tablespace?datafile?7 offline';
          ?
          ??? RMAN> Restore datafile?7;
          ??? RMAN> Recover datafile?7;
          ?
          ??? RMAN> SQL 'Alter?tablespace?datafile?7 online' ;
          ??? RMAN> Alter database open;
          ?
          ??? 附:文件號查詢SQL
          ??? select ts.tablespace_name, df.file_name, df.file_id, tf.file_name
          ??? from dba_tablespaces ts, dba_data_files df, dba_temp_files tf
          ??? where ts.tablespace_name = df.tablespace_name(+)
          ??? and ts.tablespace_name = tf.tablespace_name(+)
          ?
          五、恢復控制文件:
          ?
          ??? RMAN> Shutdown immediate;
          ??? RMAN> Startup nomount;
          ?
          ??? RMAN> Restore controlfile to 'xxxxxxxxxx'; --恢復控制文件
          ?
          ??? RMAN> Alter database mount;
          ?
          ??? RMAN> Restore database;
          ??? RMAN> Recover database;
          ?
          ??? RMAN> Alter database open;
          ?
          ?
          六、不完全恢復:
          ?
          ??? 1、基于時間:
          ?
          ??? RMAN> Run {
          ????????? Allocate channel ch1 type disk;
          ????????? Set until time ' 06-OCT-08 10:00:00 ';
          ????????? Restore database;
          ????????? Recover database;
          ????????? SQL 'alter database open resetlogs';}
          ?
          ??? 2、基于日志序列號:
          ?
          ??? RMAN> Run {
          ????????? Allocate channel ch1 type disk;
          ????????? Set until logseq=2 thread=4;? --日志序號;文件線程號
          ????????? Restore database;
          ????????? Recover database;
          ????????? SQL 'alter database open resetlogs';}
          ?
          ??? 3、基于更改:
          ?
          ??? RMAN> Run {
          ????????? Allocate channel ch1 type disk;
          ????????? Set until scn n;? --事務號
          ????????? Restore database;
          ????????? Recover database;
          ????????? SQL 'alter database open resetlogs';}
          ?
          ?
          七、示例,直接copy來的
          ?

          C:\Documents and Settings\Administrator>sqlplus /nolog

          ?

          SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7 18 10:17:44 2007

          ?

          Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.

          ?

          SQL> conn jss/jss

          已連接。

          SQL> create table tmp3(col varchar2(50));

          ###### 創建一個臨時表并插入一些數據

          表已創建。

          ?

          SQL> insert into tmp3 values ('test1');

          ?

          已創建 1 行。

          ?

          SQL> insert into tmp3 values ('test2');

          ?

          已創建 1 行。

          ?

          SQL> insert into tmp3 values ('test3');

          ?

          已創建 1 行。

          ?

          SQL> select *from tmp3;

          ?

          COL

          --------------------------------------------------

          test1

          test2

          test3

          ?

          SQL> commit;

          ?

          提交完成。

          ?

          SQL> conn / as sysdba??? #### dba 用戶連接并關閉數據庫

          已連接。

          SQL> shutdown immediate;

          數據庫已經關閉。

          已經卸載數據庫。

          ORACLE 例程已經關閉。

          ?

          SQL> host del F:\OraHome1\oradata\jssweb\jweb.ora

          ###### 手動刪除數據文件

          SQL> startup

          ORACLE 例程已經啟動。

          ?

          Total System Global Area? 143727516 bytes

          Fixed Size?????????????????? 453532 bytes

          Variable Size???????????? 109051904 bytes

          Database Buffers?????????? 33554432 bytes

          Redo Buffers???????????????? 667648 bytes

          數據庫裝載完畢。

          ORA-01157: 無法標識 / 鎖定數據文件 10 - 請參閱 DBWR 跟蹤文件

          ORA-01110: 數據文件 10: 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA'

          ?

          ####### 看看,啟動報錯了吧

          SQL> select instance_name,status from v$instance;

          ####### 看看當前數據庫狀態,應該是處于 mount

          INSTANCE_NAME??? STATUS

          ---------------- ------------

          jssweb?????????? MOUNTED

          ?

          OK, 下面該 RMAN 出馬了。

          SQL>exit

          C:\Documents and Settings\Administrator>set oracle_sid=jssweb

          ?

          C:\Documents and Settings\Administrator>rman target /

          ?

          恢復管理器 : 版本 9.2.0 .1.0 - Production

          ?

          Copyright (c) 1995, 2002, Oracle Corporation.? All rights reserved.

          ?

          連接到目標數據庫 : JSSWEB (DBID=3391142503)

          ?

          RMAN> restore datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';

          #### 首先修復數據文件。 是不是有疑問,為什么不像上面第三節講的那樣先將該數據文件置為脫機,笨啊你,數據庫都沒打開,脫什么機啊,整個數據庫現在都是脫機的。

          啟動 restore 18-7 -07

          ?

          正在使用目標數據庫控制文件替代恢復目錄

          分配的通道 : ORA_DISK_1

          通道 ORA_DISK_1: sid=11 devtype=DISK

          通道 ORA_DISK_1: 正在開始恢復數據文件備份集

          通道 ORA_DISK_1: 正在指定從備份集恢復的數據文件

          正將數據文件 00010 恢復到 F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA

          通道 ORA_DISK_1: 已恢復備份段 1

          handle=D:\BACKUP\1AIN4JU5_1_1 tag=TAG20070718T092837 params=NULL

          通道 ORA_DISK_1: 恢復完成

          完成 restore 18-7 -07

          ?

          RMAN> recover datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';

          ######## 恢復數據文件

          啟動 recover 18-7 -07

          使用通道 ORA_DISK_1

          ?

          正在開始介質的恢復

          完成介質的恢復

          ?

          完成 recover 18-7 -07

          ?

          RMAN> alter database open;?? ######## 看起來很順利,打開數據庫看看

          ?

          數據庫已打開

          ?

          RMAN> host;

          ?

          Microsoft Windows [ 版本 5.2.3790]

          (C) 版權所有 1985-2003 Microsoft Corp.

          ?

          C:\Documents and Settings\Administrator>sqlplus jss/jss? #### 連到該用戶

          ?

          SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7 18 10:33:50 2007

          ?

          Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.

          ?

          連接到 :

          Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

          With the Partitioning, OLAP and Oracle Data Mining options

          JServer Release 9.2.0.1.0 - Production

          ?

          SQL> select *from tmp3;???? ######查詢我們備份后創建的表

          ?

          COL

          --------------------------------------------------

          test1

          test2

          test3

          #######yeah, 成功恢復,沒有數據丟失。

          SQL>





          -The End-

          posted on 2008-09-15 16:33 decode360-3 閱讀(203) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 玉环县| 阿图什市| 阿巴嘎旗| 柳州市| 咸阳市| 通许县| 湾仔区| 新巴尔虎左旗| 治县。| 庆城县| 科尔| 扶风县| 甘孜| 正宁县| 长寿区| 特克斯县| 兰州市| 得荣县| 永泰县| 北辰区| 华池县| 紫金县| 拜泉县| 共和县| 合江县| 法库县| 渝中区| 东至县| 榕江县| 太仓市| 得荣县| 突泉县| 徐闻县| 合水县| 塘沽区| 阿克苏市| 鄂温| 镇江市| 沭阳县| 长治市| 赞皇县|