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

[藍]數據庫系統緊急故障處理方法(2)

2010-08-28 10:49:09來源:西部e網作者:

    新增archives 時的狀況:

  條件和假設:自上次鏡像備份以來已經生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的鏡像(冷)拷貝;archive log(s) 可用。

  恢復步驟:

  1. 如果數據庫尚未關閉,則首先把它關閉:

  $ svrmgrl
 
  svrmgrl> connect internal

  svrmgrl> shutdown abort

  2. 將備份文件抄送回原始地點:

  所有Database Files

  所有Control Files(沒有archive(s) 或redo(s) 的情況下,control files 的更新無任何意義)

  所有On-Line Redo Logs (Not archives)

  init.ora file(選項)

  3. 啟動數據庫:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup

  數據文件, 重作日志和控制文件同時丟失或損壞:

  條件和假設:Archivelog Mode; 有同步的所有所失文件的鏡像(冷)拷貝;archive log(s) 可用

  恢復步驟(必須采用不完全恢復的手法):
  
  1. 如果數據庫尚未關閉,則首先把它關閉:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> shutdown abort

  2. 將備份文件抄送回原始地點:

  所有Database Files

  所有Control Files

  所有On-Line Redo Logs(Not archives)

  init.ora file(選項)

  3. 啟動數據庫然而并不打開:

  svrmgrl>startup mount

  4. 做不完全數據庫恢復,應用所有從上次鏡像(冷)備份始積累起來的archives:

  svrmgrl> recover database until cancel using backup controlfile;

  ......
  ......

  cancel

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

  svrmgrl> alter database open resetlogs;
 
  6. 關閉數據庫并做一次全庫冷備份。

  數據文件和控制文件同時丟失或損壞:

  條件和假設:Archivelog Mode; 有同步的datafile(s) 和control file(s) 的冷拷貝;archive log(s) 可用

恢復步驟:

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

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

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

  2. 以mount 選項啟動數據庫:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup mount
  
  3. 以舊的control file 來恢復數據庫:

  svrmgrl> recover database until cancel using backup controlfile;

  *** 介質恢復完成

  (須在應用完最后一個archive log 后cancel )

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

  svrmgrl> alter database open resetlogs;

  重作日志和控制文件同時丟失或損壞時:

  條件和假設:Control Files 全部丟失或損壞;Archivelog Mode; 有Control Files 的鏡像(冷)拷貝。
  
  恢復步驟:

  1. 如果數據庫尚未關閉,則首先把它關閉:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> shutdown abort

  svrmgrl>exit

  2. 以Control File 的鏡像(冷)拷貝覆蓋損壞了的Control File:

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

  3. 啟動數據庫然而并不打開:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup mount

  4. Drop 壞掉的redo log (排除硬件故障):

  svrmgrl> alter database drop logfile group 2;

  5. 重新創建redo log:

  svrmgrl> alter database add logfile group 2 '/orig_loc/log2.dbf' size 10M;
  
  6. 以舊的control file 來恢復數據庫:
  
  svrmgrl> recover database until cancel using backup controlfile;

  (必須馬上cancel )

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

  svrmgrl> alter database open resetlogs;

  8. 關閉數據庫并做一次全庫冷備份

  只發生歸檔重作日志丟失或損壞時:

  根據不同環境和情況,選擇下述手段之一:

  a. 馬上backup 全部datafiles (如果系統采用一般熱備份或RMAN 熱備份)

  b. 馬上正常關閉數據庫并進行冷備份(如果系統采用冷備份)

  c. 冒險前進!不做備份而讓數據庫接著跑,直等到下一個備份周期再做備份。這是在賭數據庫在下一個備份周期到來之前不會有需要恢復的錯誤發生。

  注意:冒險前進的選擇:如果發生錯誤而需要數據庫恢復,則最多只能恢復到出問題archive log 之前的操作現場。從另一個角度講,archive log(s) 出現問題時,數據庫若不需要恢復則其本身并沒有任何問題。

  Oracle邏輯結構故障的處理方法:

  邏輯結構的故障一般指由于人為的誤操作而導致重要數據丟失的情況。在這種情況下數據庫物理結構是完整的也是一致的。對于這種情況采取對原來數據庫的全恢復是不合適的,我們一般采用三種方法來恢復用戶數據。
   
  采用exp/imp工具來恢復用戶數據:

  如果丟失的數據存在一個以前用exp命令的備份,則可以才用這種方式。

  1. 在數據庫內創建一個臨時用戶:

  svrmgrl>create user test_user identified by test;

  svrmgrl>grant connect,resource to test_user;

  2. 從以前exp命令備份的文件中把丟失數據的表按照用戶方式倒入測試用戶:

$imp system/manager file=export_file_name tables=(lost_data_table_name…) fromuser=lost_data_table_owner touser=test_user constraint=n;

  3. 用相應的DML語句將丟失的數據從測試用戶恢復到原用戶。

  4. 將測試用戶刪除:

  svrmgrl>drop user test_user cascede;
  
  采用logminer來恢復用戶數據:

  Logminer是oracle提供的一個日志分析工具。它可以根據數據字典對在線聯機日志、歸檔日志進行分析,從而可以獲得數據庫的各種DML操作的歷史記錄以及各種DML操作的回退信息。根據這些用戶就可以將由于誤操作而丟失的數據重新加入數據庫內。

  1. 確認數據庫的utl_file_dir參數已經設置,如果沒有則需要把這個參數加入oracle的初始化參數文件,然后重新啟動數據庫。下面例子中假設utl_file_dir=’/opt/oracle/db01’;

  2. 創建logminer所需要的數據字典信息,假設生成的數據字典文本文件為dict.ora:

svrmgrl>execute dbms_logmnr_d.build(dictionary_filename=>'dict.ora', dictionary_location=>'/opt/oracle/db01’);

  3. 確定所需要分析的日志或者歸檔日志的范圍。這可以根據用戶誤操作的時間來確定大概的日志范圍。假設用戶誤操作時可能的日志文件為/opt/oracle/db02/oradata/ORCL/redo3.log和歸檔日志’/opt/oracle/arch/orcl/orclarc_1_113.ora’。

  4. 創建要分析的日志文件列表,按日志文件的先后順序依次加入:

  svrmgrl>execute dbms_logmnr.add_logfile(logfilename=>’/opt/oracle/arch/orcl/orclarc_1_113.ora’,options=>dbms_logmnr.NEW);

svrmgrl> execute dbms_logmnr.add_logfile(logfilename=>’ /opt/oracle/db02/oradata/ORCL/redo3.log’,options=>dbms_logmnr.ADDFILE);

  5. 開始日志分析,假設需要分析的時間在’2003-06-28 12:00:00’和’2003-06-28 13:00:00’之間:

  svrmgrl>execute dbms_logmnr.start_logmnr(dictfilename=>’ /opt/oracle/db01/dict.ora’,starttime=>to_date(’ 2003-06-28 12:00:00’,’YYYY-MM-DD HH:MI:SS’),endtime=>to_date(to_date(‘2003-06-28 13:00:00’,’YYYY-MM-DD HH:MI:SS’));

  6. 獲取分析結果:

  svrmgrl>select operation,sql_redo,sql_undo from v$logmnr_contents;
 
  7. 根據分析結果修復數據。

  8.結束logmnr:

  svrmgrl>dbms_logmnr.end_logmnr;

  9. 用適當的方法對原數據庫進行數據庫全備份。利用備份恢復用戶數據:

  采用這種方法時并不是在原數據庫進行恢復,而是利用數據庫備份在新的機器上重新建立一個新的數據庫。通過備份恢復在新機器上將數據庫恢復到用戶誤操作前,這樣就可以獲得丟失的數據將其恢復到原數據庫。
                                 
  1. 在新的機器上安裝數據庫軟件。

  2.  對于采用帶庫備份的現場,需要在新的數據庫服務器上安裝調試相應的備份管軟件。

  3. 根據用戶誤操作的時間點進行基于時間點的數據庫恢復操作。對于沒有采用帶庫備份的現場,可以選取用戶誤操作前最近的備份磁帶進行恢復;對于才用帶庫備份的點可以通過基于時間恢復點恢復的rman腳本來進行恢復。

  4.重新打開數據庫:

  svrmgrl>alter database open resetlogs;

  5. 從新的數據庫中獲取丟失的用戶數據,通過DML操作將其恢復到原數據庫中。

  6. 用適當的方法對原數據庫進行數據庫全備份。

關鍵詞:數據庫

贊助商鏈接:

主站蜘蛛池模板: 滕州市| 玛多县| 荥阳市| 鹤庆县| 故城县| 阿鲁科尔沁旗| 江山市| 乌鲁木齐市| 东光县| 永泰县| 印江| 内乡县| 扶绥县| 额济纳旗| 雅安市| 都兰县| 南昌市| 临洮县| 信阳市| 会宁县| 文化| 林西县| 新绛县| 通江县| 浦城县| 淮安市| 界首市| 佛冈县| 泸西县| 墨竹工卡县| 永吉县| 吉木萨尔县| 东乡| 天水市| 泰宁县| 伽师县| 榆社县| 龙陵县| 中西区| 涟水县| 汾西县|