rman恢復--歸檔模式有備份,丟失資料檔案的恢復

sun642514265發表於2013-12-29
1:建立資料庫備份

通過指令碼實現

2:構造資料

SQL> create tablespace orcl_data logging datafile '/u01/app/oracle/oradata/orcl/orcl_data.dbf' size 50m autoextend on next 50m maxsize 2048m extent management local;


Tablespace created.

SQL> SQL> create user orcl identified by orcl default tablespace orcl_data;

User created.

SQL> grant connect,resource,dba to orcl;

Grant succeeded.

SQL> conn orcl/orcl
Connected.
SQL> create table t1(id number,name varchar(20));

Table created.

SQL> insert into t1 values(1,'sun');

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> select * from t1;

     ID NAME
---------- --------------------
     1 sun
     1 sun
     1 sun
     1 sun

SQL> commit;

Commit complete.

3:模擬檔案丟失

以SYSDBA身份連線並關閉資料庫

SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 

手動模擬資料檔案丟失,直接刪除剛剛建立的orcl_data資料檔案。

嘗試重啟資料庫

SQL> startup
ORACLE instance started.

Total System Global Area  835104768 bytes
Fixed Size              2217952 bytes
Variable Size            520095776 bytes
Database Buffers       310378496 bytes
Redo Buffers              2412544 bytes
Database mounted.
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: '/u01/app/oracle/oradata/orcl/orcl_data.dbf'


SQL> select instance_name,status from v$instance;

INSTANCE_NAME     STATUS
---------------- ------------
orcl          MOUNTED

4:執行恢復


[oracle@oracle ~]$ export ORACLE_SID=orcl
[oracle@oracle ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on чǚ?? 12? 24 19:11:06 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1362763236, not open)

RMAN> restore datafile 5;     ----可以指定檔案序號,也可以指定檔案的詳細路徑

Starting restore at 2013-12-24 19:11:50
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK

creating datafile file number=5 name=/u01/app/oracle/oradata/orcl/orcl_data.dbf
restore not done; all files read only, offline, or already restored
Finished restore at 2013-12-24 19:11:52

RMAN> recover datafile 5;

Starting recover at 2013-12-24 19:12:59
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 2013-12-24 19:13:00

RMAN> alter database open;

database opened


切換回SQL*PLUS命令環境下,檢視當前資料庫狀態和資料


[oracle@oracle ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 12月 24 19:18:45 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name,status from v$instance;

INSTANCE_NAME     STATUS
---------------- ------------
orcl          OPEN

SQL> conn orcl/orcl
Connected.
SQL> select * from t1;

     ID NAME
---------- --------------------
     1 sun
     1 sun
     1 sun
     1 sun

SQL> 

5:關於rman的restore和recover區別

restore 是還原,檔案級的恢復。就是物理檔案還原。
recover 是恢復,資料級的恢復。邏輯上恢復,比如應用歸檔日誌、重做日誌,全部同步,保持一致。

用我自己的土話講就是,用restore先把備份檔案拷貝到資料庫目錄下進行替換,再用recover經過一些處理,資料庫就恢復正常了。

1、restore 命令:用於還原已經備份的資料檔案。
  (1)、restore database 還原所有的資料檔案。
  (2)、restore tablespace 還原特定表空間的資料檔案。
  (3)、restore datafile 還原特定的資料檔案。
  (4)、restore controlfile  還原控制檔案。
  (5)、restore archivelog  還原歸檔日誌檔案。

2、recover 命令:當資料庫需要應用歸檔日誌檔案恢復資料檔案時,使用recover命令。使用該命令資料庫系統會自動應用歸檔的日誌檔案。
  (1)、recover database 恢復所有的資料檔案。
  (2)、recover tablespace 恢復特定表空間的資料檔案。
  (3)、recover datafile 恢復特定的資料檔案。













來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28698327/viewspace-1065457/,如需轉載,請註明出處,否則將追究法律責任。

相關文章