首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 10g 非關鍵文件故障恢復:臨時表空間、日志、索引、只讀表空間與密碼文件

     編輯:Oracle 資料庫相關知識

一、非關鍵文件定義

損壞不導致數據庫崩潰、可在線恢復或重建、對業務影響可控的文件:

  • 臨時表空間
  • 重做日志文件(組成員)
  • 索引表空間 / 索引
  • 只讀表空間
  • 密碼文件

二、臨時表空間恢復

1. 新建臨時表空間

CREATE TEMPORARY TABLESPACE temp2
TEMPFILE 'D:\oracle\oradata\temp2_01.dbf' SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

2. 啟動缺失臨時文件的數據庫

STARTUP MOUNT;
DROP TEMPORARY TABLESPACE temp INCLUDING DATAFILES;
CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'D:\oracle\oradata\temp01.dbf' SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
ALTER DATABASE OPEN;

關鍵點:臨時表空間必須為本地管理,不可為字典管理。

三、重做日志組成員恢復

  • 若組內至少有一成員完好:ALTER DATABASE DROP LOGFILE MEMBER 'bad_path'; ALTER DATABASE ADD LOGFILE MEMBER 'new_path' TO GROUP n;
  • 若整組損壞且為非當前組:ALTER DATABASE CLEAR LOGFILE GROUP n;(需歸檔模式)
  • 若為當前組:需執行不完全恢復 + OPEN RESETLOGS。

四、索引表空間 / 索引恢復

  • 索引表空間損壞:DROP TABLESPACE idx_ts INCLUDING CONTENTS AND DATAFILES; 重建表空間 → ALTER INDEX ... REBUILD ONLINE;
  • 單個索引損壞:直接 ALTER INDEX idx_name REBUILD [ONLINE];

五、只讀表空間恢復

  1. 從備份拷貝數據文件至原路徑;
  2. ALTER DATABASE DATAFILE 'path' ONLINE;(只讀表空間無需恢復日志)

六、密碼文件重建

orapwd file=$ORACLE_HOME/dbs/orapworcl password=new_pwd entries=10 force=y

然後重啟實例或動態註冊:ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

七、核心原則

「非關鍵故障恢復的核心是:最小化業務中斷,利用冗餘或重建機制快速恢復服務能力。」

  • 臨時/索引/只讀表空間 → 重建最快;
  • 重做日志 → 利用組冗餘;
  • 密碼文件 → 一條命令重建。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved