嘗試清除壞日誌失效,需採「建臨時 UNDO → 切換 → 刪除舊 → 重建原名 → 切回 → 清理」雙階段策略。
-- 1. 建立臨時 UNDO 表空間
CREATE UNDO TABLESPACE "UNDOTEMP"
DATAFILE 'G:\Oracle\ORADATA\HOME\UNDOTEMP.ora' SIZE 5M;
-- Linux 路徑範例
CREATE UNDO TABLESPACE "UNDOTEMP"
DATAFILE '/home/oracle/oradata/Oracle9/UNDOTEMP.ora' SIZE 50M;
-- 2. 修改系統預設 UNDO 表空間
ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTEMP';
-- 或透過 OEM Console 修改
-- 3. 刪除原損壞 UNDO 表空間
DROP TABLESPACE "UNDOTBS1" INCLUDING CONTENTS AND DATAFILES;
-- 4. 重建原名 UNDO 表空間
CREATE UNDO TABLESPACE "UNDOTBS1"
DATAFILE 'G:\Oracle\ORADATA\HOME\UNDOTBS1.ora' SIZE 500M;
-- 5. 切回原名
ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS1';
-- 6. 清理臨時 UNDO
DROP TABLESPACE "UNDOTEMP" INCLUDING CONTENTS AND DATAFILES;
STARTUP;
-- 1. 建立中轉暫存表空間
CREATE TEMPORARY TABLESPACE TEMP_TEMP
TEMPFILE '/home/oracle/oradata/Oracle9/temp_temp.dbf' SIZE 128M
REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;
-- 2. 切換預設暫存表空間
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_TEMP;
-- 3. 刪除原 TEMP
DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;
-- 4. 重建 TEMP
CREATE TEMPORARY TABLESPACE TEMP
TEMPFILE '/home/oracle/oradata/Oracle9/temp01.dbf' SIZE 512M
REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;
-- 5. 切回 TEMP
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
INCLUDING CONTENTS AND DATAFILES 確保徹底清除