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