天天看點

(09)常被人遺忘的隻讀表空間

    在資料庫管理中,會把一些曆史資料或基本不變化的資料放入隻讀表空間。因為這種表空間上隻能進行讀操作而不能做DML操作。

能有效防止被意外的修改或删除,是以很适合存放上述類型的資料,另外,它在備份方面還有一個好處,因為它是隻讀的,就是沒有變化,

隻需在設為隻讀後備份一次 就夠了,以後備份時就可以忽略,這樣能減少一部份備份壓力。這造成慢慢的,人們會忽視掉它。

    情況一:确實在設為隻讀表空間時備份了一次,但後面忽視了它。恢複時那份備份找不到了。

         這種情況是和管理者有關的,制定合理的規範很重要。

    情況二: 出在恢複時,基本上大部份的資料上都不會講恢複隻讀表空間。但你要恢複的資料庫确實有隻讀表空間。

          而你可能不記得或不清楚還有這事。是以恢複時忽略了它。而Oracle指令忽略掉隻讀表空間也是能恢複成功的。

          這種情況後果有大有小,看運氣了。

把隻讀表空間的建立和恢複處理列一下。

    設定和查詢隻讀表空間:

    1. 将一個表空間設為隻讀表空間    

create tablespace XCL_DATA datafile '/u01/app/oracle/xcldb/xcl_data01dbf' size 1m;
    alter tablespace XCL_DATA read only;   
           

2.查詢下視圖确認資料庫中現有的隻讀表空間及對應的資料檔案      

SELECT t.tablespace_name tbs_name,
	          d.file_id    tbsf_id,
			  d.file_name  tbsf_name
	   FROM  dba_tablespaces t,dba_data_files d 
	   WHERE t.tablespace_name=d.tablespace_name  AND t.status='READ ONLY';
           

   備份恢複部份:

情況一: 全庫備份時,包含隻讀表空間

   這種情況做RMAN恢複時,最重要的是加上check readonly指定要強制恢複隻讀表空間。

  備份:

       backup database ;

  恢複:

      restore database check readonly;

      recover database check readonly;

情況二: 單獨備份隻讀表空間,全庫備份時跳過它 

  備份:

   backup tablespace XCL_DATA;

   backup database skip readonly;

 恢複:

   restore database ;

   restore tablespace XCL_DATA;

   recover database ;

情況三: 采用冷備份方式單獨備份了隻讀表空間的資料檔案,全庫備份時有跳過隻讀表空間 

  備份:        

    a. 采用host copy或copy複制隻讀表空間的所有資料檔案到另一個目錄備份

   b.備份全庫

      backup database skip readonly;

 恢複:

    a.restore database ;

    b.将另一個目錄備份的隻讀表空間資料檔案恢複回去。

    c.recover database ;

        這種情況不同于,以前備份資料庫時要"alter tablespace ... begin backup"将表空間置于聯機備份模式,再去備份資料檔案。

隻讀表空間直接複制資料檔案即可。

MAIL: [email protected]

BLOG: http://blog.csdn.net/xcl168