表空間故障是 DBA 面臨的最高壓場景之一。本文按表空間類型劃分,提供從輕量重建到介質恢復的分級方案,覆蓋用戶、臨時、系統、回滾表空間及控制文件五大核心對象。
ORA-01157, ORA-01110, ORA-07360ORA-01116, ORA-01110, ORA-07368STARTUP MOUNT;
ALTER DATABASE DATAFILE 'filename' OFFLINE DROP;
ALTER DATABASE OPEN;
DROP TABLESPACE tablespace_name INCLUDING CONTENTS;
-- 重建表空間與所有對象
STARTUP MOUNTSELECT v1.group#, member, sequence#, first_change# FROM v$log v1, v$logfile v2 WHERE v1.group# = v2.group#;SELECT file#, change# FROM v$recover_file;change# > MIN(first_change#) → 可恢復;否則退回方案 A 或全庫恢復RECOVER DATAFILE 'filename';ALTER DATABASE OPEN RESETLOGS;通常無需介質恢復,直接還原備份文件即可。例外:最後備份後曾切換為 READ WRITE 或 READ ONLY 模式,需介質恢復。
不存儲持久數據,直接刪除重建:
DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
CREATE TEMPORARY TABLESPACE temp TEMPFILE 'path' SIZE 1G AUTOEXTEND ON;
核心數據字典所在,無備份只能重建資料庫。有備份時:
STARTUP MOUNTRECOVER TABLESPACE SYSTEM;ALTER DATABASE OPEN;init.ora 註釋 ROLLBACK_SEGMENTSSTARTUP RESTRICT MOUNTALTER DATABASE DATAFILE 'filename' OFFLINE DROP;ALTER DATABASE OPEN;ORA-00604, ORA-00376, ORA-01110 → 關閉,init.ora 添加 _CORRUPTED_ROLLBACK_SEGMENTS = (...)STARTUP RESTRICT → DROP TABLESPACE ... INCLUDING CONTENTS;ALTER SYSTEM DISABLE RESTRICTED SESSION;init.oraSTARTUP MOUNTALTER DATABASE DATAFILE 'filename' ONLINE;RECOVER DATAFILE 'filename';ALTER DATABASE OPEN;直接 DROP ROLLBACK SEGMENT → 重建表空間與回滾段(最快)。
拷貝備份控制文件到原目錄。Raw Device 用 dd 命令:
dd if='con.bak' of='/dev/rdrd/drd1' seek=128
用完好控制文件啟動:
ALTER DATABASE BACKUP CONTROLFILE TO 'path'; 復制到損壞位置 → 啟動。