成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

[藍]數(shù)據(jù)庫系統(tǒng)緊急故障處理方法(1)

2010-08-28 10:49:09來源:西部e網(wǎng)作者:

    Oracle物理結(jié)構(gòu)故障是指構(gòu)成數(shù)據(jù)庫的各個物理文件損壞而導(dǎo)致的各種數(shù)據(jù)庫故障。這些故障可能是由于硬件故障造成的,也可能是人為誤操作而引起。所以我們首先要判斷問題的起因,如果是硬件故障則首先要解決硬件問題。在無硬件問題的前提下我們才能按照下面的處理方發(fā)來進一步處理。

  控制文件損壞:

  控制文件記錄了關(guān)于oracle的重要配置信息,如數(shù)據(jù)庫名、字符集名字、各個數(shù)據(jù)文件、日志文件的位置等等信息。控制文件的損壞,會導(dǎo)致數(shù)據(jù)庫異常關(guān)閉。一旦缺少控制文件,數(shù)據(jù)庫也無法啟動,這是一種比較嚴重的錯誤。

  損壞單個控制文件:

  1. 確保數(shù)據(jù)庫已經(jīng)關(guān)閉,如果沒有用下面的命令來關(guān)閉數(shù)據(jù)庫:

  svrmgrl>shutdown immediate;

  2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,確定所有控制文件的路徑。
 
  3. 用操作系統(tǒng)命令將其它正確的控制文件覆蓋錯誤的控制文件。

  4. 用下面的命令重新啟動數(shù)據(jù)庫:

  svrmgrl>startup;

  5. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  損壞所有的控制文件:

  1. 確保數(shù)據(jù)庫已經(jīng)關(guān)閉,如果沒有用下面的命令來關(guān)閉數(shù)據(jù)庫:

  svrmgrl>shutdown immediate;

  2. 從相應(yīng)的備份結(jié)果集中恢復(fù)最近的控制文件。對于沒有采用帶庫備份的點可以直接從磁帶上將最近的控制文件備份恢復(fù)到相應(yīng)目錄;對于采用帶庫備份的點用相應(yīng)的rman腳本來恢復(fù)最近的控制文件。

  3. 用下面的命令來創(chuàng)建產(chǎn)生數(shù)據(jù)庫控制文件的腳本:

svrmgrl>startup mount;

svrmgrl>alter database backup controlfile to trace noresetlogs;

  4. 修改第三步產(chǎn)生的trace文件,將其中關(guān)于創(chuàng)建控制文件的一部分語句拷貝出來并做些修改,使得它能夠體現(xiàn)最新的數(shù)據(jù)庫結(jié)構(gòu)。假設(shè)產(chǎn)生的sql文件名字為createcontrol.sql.

  注意:

  Trace文件的具體路徑可以在執(zhí)行完第3步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件來確定。

  5. 用下面命令重新創(chuàng)建控制文件:

  svrmgrl>shutdown abort;

  svrmgrl>startup nomount;

  svrmgrl>@createcontrol.sql;

  6. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  重做日志文件損壞:

  數(shù)據(jù)庫的所有增、刪、改都會記錄入重做日志。如果當(dāng)前激活的重做日志文件損壞,會導(dǎo)致數(shù)據(jù)庫異常關(guān)閉。非激活的重做日志最終也會因為日志切換變?yōu)榧せ畹闹刈鋈罩荆該p壞的非激活的重做日志最終也會導(dǎo)致數(shù)據(jù)庫的異常終止。在ipas/mSwitch中每組重做日志只有一個成員,所以在下面的分析中只考慮重做日志組損壞的情況,而不考慮單個重做日志成員損壞的情況。

  確定損壞的重做日志的位置及其狀態(tài):

  1. 如果數(shù)據(jù)庫處于可用狀態(tài):

  select * from v$logfile;

  svrmgrl>select * from v$log;

  2. 如果數(shù)據(jù)庫處于已經(jīng)異常終止:

  svrmlgr>startup mount;
  svrmgrl>select * from v$logfile;
  svrmgrl>select * from v$log;

  其中,logfile的狀態(tài)為INVALID表示這組日志文件出現(xiàn)已經(jīng)損壞;log狀態(tài)為Inactive:表示重做日志文件處于非激活狀態(tài);Active: 表示重做日志文件處于激活狀態(tài);Current:表示是重做日志為當(dāng)前正在使用的日志文件。

  損壞的日志文件處于非激活狀態(tài):

  1. 刪除相應(yīng)的日志組:

  svrmgrl>alter database drop logfile group group_number;

  2. 重新創(chuàng)建相應(yīng)的日志組:

  svrmgrl>alter database add log file group group_number (’log_file_descritpion’,…) size log_file_size;

  損壞的日志文件處于激活狀態(tài)且為非當(dāng)前日志:

  1. 清除相應(yīng)的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  損壞的日志文件為當(dāng)前活動日志文件:

  用命令清除相應(yīng)的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  如果清除失敗,則只能做基于時間點的不完全恢復(fù)。

  打開數(shù)據(jù)庫并且用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份:

  svrmgrl>alter database open;

  部分數(shù)據(jù)文件損壞:

  若損壞的數(shù)據(jù)文件屬于非system表空間,則數(shù)據(jù)庫仍然可以處于打開狀態(tài)可以進行操作,只是損壞的數(shù)據(jù)文件不能訪問。這時在數(shù)據(jù)庫打開狀態(tài)下可以單獨對損壞的數(shù)據(jù)文件進行恢復(fù)。若是system表空間的數(shù)據(jù)文件損壞則數(shù)據(jù)庫系統(tǒng)會異常終止。這時數(shù)據(jù)庫只能以Mount方式打開,然后再對數(shù)據(jù)文件進行恢復(fù)。可以通過查看數(shù)據(jù)庫日志文件來判斷當(dāng)前損壞的數(shù)據(jù)文件到底是否屬于system表空間。

  非system表空間的數(shù)據(jù)文件損壞

  1. 確定損壞的文件名字:

  svrmgrl>select name from v$datafile where status=’INVALID’;

  2. 將損壞的數(shù)據(jù)文件處于offline狀態(tài):

  svrmgrl>alter database datafile ‘datafile_name’ offline;

  3. 從相應(yīng)的備份結(jié)果集中恢復(fù)關(guān)于這個數(shù)據(jù)文件的最近的備份。對于沒有采用帶庫備份的點可以直接從磁帶上恢復(fù);對于用帶庫備份的點用相應(yīng)的rman腳本來恢復(fù)。

  4. 恢復(fù)數(shù)據(jù)文件:

  svrmgrl>alter database recover datafile ‘file_name’;

  5. 使數(shù)據(jù)庫文件online:

  svrmgrl>alter database datafile ‘datafile_name’ online;

  6. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  system表空間的數(shù)據(jù)文件損壞:

  1. 以mount方式啟動數(shù)據(jù)庫

  svrmgrl>startup mount;

  2. 從相應(yīng)的備份結(jié)果集中恢復(fù)關(guān)于這個數(shù)據(jù)文件的最近的備份。對于沒有采用帶庫備份的點可以直接從磁帶上恢復(fù);對于用帶庫備份的點用相應(yīng)的rman腳本來恢復(fù)。

  3. 恢復(fù)system表空間:

  svrmgrl>alter database recover datafile ‘datafile_name’;
 
  4. 打開數(shù)據(jù)庫:

  svrmgrl>alter database open;

  5. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  表空間損壞:

  若非system表空間已經(jīng)損壞,則數(shù)據(jù)庫仍然可以處于打開狀態(tài)可以進行操作,只是損壞的表空間不能訪問。這樣在數(shù)據(jù)庫打開狀態(tài)下可以單獨對損壞的表空間進行恢復(fù)。若是system表空間損壞則數(shù)據(jù)庫系統(tǒng)會異常終止。這時數(shù)據(jù)庫只能以Mount方式打開,然后再對表空間進行恢復(fù)。可以通過查看數(shù)據(jù)庫日志文件來判斷當(dāng)前損壞的表空間是否是system表空間.

  非system表空間損壞:

  1. 將損壞的表空間處于offline狀態(tài):
 
  svrmgrl>alter tablespace ‘tablespace_name’ offline;

  2. 從相應(yīng)的備份結(jié)果集中恢復(fù)關(guān)于這個表空間最近的備份。對于沒有采用帶庫備份的點可以直接從磁帶上恢復(fù);對于用帶庫備份的點用相應(yīng)的rman腳本來恢復(fù)。

  3. 恢復(fù)表空間:

  svrmgrl>alter database recover tablespace ‘tablespace_name’;

  4. 使表空間online:

  svrmgrl>alter tablespace ‘tablespace_name’ online;

  5. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份.

  system表空間損壞:

  1. 以mount方式啟動數(shù)據(jù)庫

  svrmgrl>startup mount;

  2. 從相應(yīng)的備份結(jié)果集中恢復(fù)system表空間最近的備份。對于沒有采用帶庫備份的點可以直接從磁帶上恢復(fù);對于用帶庫備份的點用相應(yīng)的rman腳本來恢復(fù)。

  3. 恢復(fù)system表空間:

  svrmgrl>alter database recover tablespace system;

  4. 打開數(shù)據(jù)庫:

  svrmgrl>alter database open;

  5. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  整個數(shù)據(jù)庫的所有文件損壞:

  整個數(shù)據(jù)庫所有文件的損壞一般是在共享磁盤陣列發(fā)生無法恢復(fù)的災(zāi)難時才發(fā)生,這種情況下只能對數(shù)據(jù)庫進行恢復(fù)。若數(shù)據(jù)庫的歸檔目錄也已經(jīng)丟失,則數(shù)據(jù)庫不可能做完全恢復(fù),會有用戶數(shù)據(jù)的丟失。

  沒采用帶庫備份的現(xiàn)場:

  1. 將最近的備份從磁帶上把各個文件解包到相應(yīng)的目錄下。

  2. 以mount方式打開數(shù)據(jù)庫:
 
  svrmgrl>startup mount;

  3. 恢復(fù)數(shù)據(jù)庫:

  svrmgrl>recover database until cancel;

  4. 打開數(shù)據(jù)庫:

  svrmgrl>alter database open resetlogs;

  5. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  采用帶庫備份的現(xiàn)場:

  1. 以nomount方式打開數(shù)據(jù)庫:

  svrmgrl>startup nomount;

  2. 通過相應(yīng)的rman腳本進行數(shù)據(jù)庫軟恢復(fù)。

  $rman cmdfile=hot_database_restore.rcv

  3. 打開數(shù)據(jù)庫:

  svrmgrl>alter database open resetlogs;

  4. 用適當(dāng)?shù)姆椒ㄟM行數(shù)據(jù)庫全備份。

  存在最近的數(shù)據(jù)庫完整冷備份前提下的一些經(jīng)典緊急情況的處理:

  數(shù)據(jù)文件,歸檔重作日志和控制文件同時丟失或損壞:

  無新增archives 時的狀況:
 
  條件和假設(shè):自上次鏡像備份以來尚未生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的鏡像(冷)拷貝

  恢復(fù)步驟:

  1. 將鏡像拷貝的datafile(s) 和control file(s) 抄送回原始地點:

  $ cp /backup/good_one.dbf /orig_loc/bad_one.dbf

  $ cp /backup/control1.ctl /disk1/control1.ctl

  2. 以mount 選項啟動數(shù)據(jù)庫:

  $ svrmgrl
 
  svrmgrl> connect internal

  svrmgrl> startup mount

  3. 以舊的control file 來恢復(fù)數(shù)據(jù)庫:

  svrmgrl> recover database using backup controlfile until cancel;

  *** 介質(zhì)恢復(fù)完成
  
  (必須馬上cancel )

  4. Reset the logfiles (對啟動而言不可省略):

  svrmgrl> alter database open resetlogs;

  5. 關(guān)閉數(shù)據(jù)庫并做一次全庫冷備份。

關(guān)鍵詞:數(shù)據(jù)庫

贊助商鏈接:

主站蜘蛛池模板: 大名县| 当雄县| 娱乐| 潢川县| 江孜县| 眉山市| 渭源县| 福州市| 壤塘县| 大关县| 襄樊市| 冀州市| 宣威市| 镇巴县| 临安市| 新津县| 夏邑县| 公安县| 龙南县| 墨江| 堆龙德庆县| 基隆市| 河津市| 利川市| 贡嘎县| 连江县| 合阳县| 扶余县| 裕民县| 贵德县| 泉州市| 大邑县| 井冈山市| 河曲县| 小金县| 乐安县| 南乐县| 儋州市| 噶尔县| 大英县| 措美县|