在資料庫管理中,會把一些曆史資料或基本不變化的資料放入唯讀資料表空間。因為這種資料表空間上只能進行讀操作而不能做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: xcl_168@aliyun.com
BLOG: http://blog.csdn.net/xcl168