RMAN備份與恢復之可脫機數據文件丟失

一 表空間講解

 

        在上一篇文章(RMAN備份與恢復之控制文件丟失),我們講解了控制文件丟失並且RMAN中有備份怎麼處理,這篇文章講解可脫機數據文件丟失的處理。

 

        表空間是一種邏輯結構,表空間下可以存放數據文件。表空間有系統表空間(SYSTEM)、輔助表空間(SYSAUX)、用戶表空間(USERS)、回退表空間(UNDOTBS1)、臨時表空間(TEMP)、測試表空間(EXAMPLE)、數據表空間。其中系統表空間用於存儲數據字典的信息,不能脫機,不能只讀,也不能改名。輔助表空間用於存儲一些工具以及一些常用的組件,10G開始引入,不能脫機,可以只讀,可以改名。用戶表空間用於存儲用戶數據的表空間,可以脫機,可以只讀,可以改名。回退表空間用於存儲DML操作的事務信息,不能脫機,不能只讀,可以改名。臨時表空間用於存放臨時數據,不能脫機,不能只讀,可以改名。數據表空間用於存放自定義數據,項目中我們一般創建數據表空間,數據存放在數據表空間,這是一種很好的做法,切忌把數據放在默認的USERS表空間。

 

        至於有些表空間可以脫機,有些不可以。那是因爲數據庫在運行期間需要向這些表空間寫入數據,比如系統表空間、輔助表空間、回退表空間、臨時表空間,而用戶表空間、測試表空間、數據表空間不同,只要沒有對這些表空間進行操作,是可以脫機的。

 

二 備份與恢復可脫機數據文件講解

 

        備份與恢復可脫機數據文件,首先我們要使用RMAN做一個備份全庫的操作,然後模擬USERS表空間丟失,此時我們查看數據會提示數據文件找不到。因爲USERS表空間可以脫機,所以我們可以在SQL Plus中使USERS表空間離線,切記要先離線再進行下面的操作。因爲在RMAN中我們有備份,所以我們可以在RMAN中對USERS表空間對應的數據文件編號進行還原,實際上後臺就行進行了一個拷貝操作。還原成功後,我們需要對USERS表空間對應的數據文件編號進行恢復,等待恢復完成後,再在SQL Plus中使USERS表空間在線,所有的操作完成後,USERS表空間備份與恢復完成,我們可以對數據進行訪問,測試是否恢復成功。需要注意的是,使表空間在線、離線、還原和恢復數據文件一些列的操作切記不要把編號弄錯了,做這些操作應該確認USERS表空間的編號,默認是4號,但是由於後期的修改,USERS表空間數據文件的編號很不能不是4號。作爲DBA,需要時刻保持謹慎!

 

三 模擬

 

Step1,RMAN中備份全庫,並在SQL Plus確定數據的正確性

RMAN> BACKUP DATABASE;

Starting backup at 12-DEC-13
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/oracle/oradata/justdb/system01.dbf
input datafile file number=00002 name=/u01/oracle/oradata/justdb/sysaux01.dbf
input datafile file number=00003 name=/u01/oracle/oradata/justdb/undotbs01.dbf
input datafile file number=00004 name=/u01/oracle/oradata/justdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 12-DEC-13
channel ORA_DISK_1: finished piece 1 at 12-DEC-13
piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp tag=TAG20131212T095816 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 12-DEC-13
channel ORA_DISK_1: finished piece 1 at 12-DEC-13
piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp tag=TAG20131212T095816 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 12-DEC-13

[oracle@orcl backupset]$ ll 2013_12_12/
total 1025556
-rw------- 1 oracle oinstall    9830400 Dec 12 09:58 o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp
-rw------- 1 oracle oinstall 1040334848 Dec 12 09:58 o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp

RMAN> LIST BACKUP;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
14      Full    992.13M    DISK        00:00:19     12-DEC-13      
        BP Key: 14   Status: AVAILABLE  Compressed: NO  Tag: TAG20131212T095816
        Piece Name: /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp
  List of Datafiles in backup set 14
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/system01.dbf
  2       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/sysaux01.dbf
  3       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/undotbs01.dbf
  4       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/users01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
15      Full    9.36M      DISK        00:00:01     12-DEC-13      
        BP Key: 15   Status: AVAILABLE  Compressed: NO  Tag: TAG20131212T095816
        Piece Name: /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp
  SPFILE Included: Modification time: 12-DEC-13
  SPFILE db_unique_name: JUSTDB
  Control File Included: Ckp SCN: 1088267      Ckp time: 12-DEC-13

SQL> CONN SCOTT/tiger;
Connected.
SQL> SELECT * FROM tab;

TNAME            TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS            TABLE
DEPT             TABLE
EMP            TABLE
SALGRADE           TABLE


Step2,SQL Plus中刪除USERS表空間,模擬USERS表空間丟失

SQL> HO mv /u01/oracle/oradata/justdb/users01.dbf /opt/learn/


Step 3,scott用戶查看數據失敗

SQL> CONN SCOTT/tiger;
Connected.
SQL> DESC dept;
ERROR:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/u01/oracle/oradata/justdb/users01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3


Step4,SQL Plus中使第4號數據文件離線

SQL> CONN / AS SYSDBA;
Connected.
SQL> ALTER DATABASE DATAFILE 4 OFFLINE;

Database altered.


Step5,RMAN中還原4號數據文件

RMAN> RESTORE DATAFILE 4;

Starting restore at 12-DEC-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00004 to /u01/oracle/oradata/justdb/users01.dbf
channel ORA_DISK_1: reading from backup piece /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp
channel ORA_DISK_1: piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp tag=TAG20131212T095816
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 12-DEC-13


Step6,RMAN中恢復4號文件

RMAN> RECOVER DATAFILE 4;

Starting recover at 12-DEC-13
using channel ORA_DISK_1

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

Finished recover at 12-DEC-13


Step7,SQL Plus中使4號數據文件在線

SQL> ALTER DATABASE DATAFILE 4 ONLINE;

Database altered.


Step8,SQL Plus中查看數據

SQL> CONN SCOTT/tiger;
Connected.
SQL> DESC dept;
Name             Null?    Type
 ----------------------------------------- -------- ----------------------------
 DEPTNO            NOT NULL NUMBER(2)
 DNAME                VARCHAR2(14)
 LOC                VARCHAR2(13)

SQL> SELECT * FROM dept;

    DEPTNO DNAME    LOC
---------- -------------- -------------
  10 ACCOUNTING   NEW YORK
  20 RESEARCH   DALLAS
  30 SALES    CHICAGO
  40 OPERATIONS   BOSTON


四 相關文章



  我的郵箱[email protected]
  新浪微博@jutdb         
  微信公衆平臺:JustOracle(微信號:justoracle)
  數據庫技術交流羣:336882565(加羣時驗證 From CSDN XXX)
  All is well
  2014年1月15日
  By Larry Wen


katoon Sina CSDN
@Wentasy 博文僅供參考,歡迎大家來訪。如有錯誤之處,希望批評指正。原創博文如需轉載請註明出處,謝謝 :) [CSDN博客]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章