oracle常見故障類別及規(guī)劃解析
前言:
上一篇文章中我們了解了oracle分區(qū)索引的失效和重建代碼示例的相關(guān)內(nèi)容,接下來我們要看的內(nèi)容是:
對任何數(shù)據(jù)庫系統(tǒng)而言,對顯而易見的故障,應(yīng)當(dāng)避免發(fā)生本文列出了Oracle常見的故障并給出了解決方案,同時(shí)列出了一些日常規(guī)劃。
一、數(shù)據(jù)庫高可用性的幾個(gè)目標(biāo)
MTBF(Mean-Time-Between-Failures)
平均失敗時(shí)間,即數(shù)據(jù)庫出現(xiàn)失敗的頻繁度,應(yīng)盡可能增大該值
應(yīng)對措施
RAC集群技術(shù):位于多臺計(jì)算機(jī)上的多個(gè)實(shí)例打開一個(gè)物理數(shù)據(jù)庫,降低因一個(gè)或多實(shí)例失敗導(dǎo)致的風(fēng)險(xiǎn)
Streams:利用高級隊(duì)列技術(shù),通過解析歸檔日志,將歸檔日志解析成DDL及DML語句,從而實(shí)現(xiàn)數(shù)據(jù)庫之間的同步。相當(dāng)于
SQL server中的復(fù)制技術(shù),可以在對主系統(tǒng)沒有任何壓力的情況下,實(shí)現(xiàn)對數(shù)據(jù)庫對象級甚至整個(gè)數(shù)據(jù)庫的同步。
Data Guard:一個(gè)主數(shù)據(jù)庫,多個(gè)備用數(shù)據(jù)庫,備用數(shù)據(jù)庫是主數(shù)據(jù)庫在事務(wù)上一致的副本,可是在主數(shù)據(jù)宕機(jī)的情況下由
備用服務(wù)器來繼續(xù)提供服務(wù)。相當(dāng)于SQL server中的數(shù)據(jù)庫鏡像功能。
MTTR(Mean-Time-To-Recover)
平均恢復(fù)時(shí)間,數(shù)據(jù)失敗后出現(xiàn)的停機(jī)時(shí)間,應(yīng)盡可能減小該值
數(shù)據(jù)損失最小化
在減少M(fèi)TTR的同時(shí),應(yīng)盡可能的減少數(shù)據(jù)的損失
二、常見的故障類別
1.語句級故障,通常為DML,DQL,DCL,DDL等等
無效數(shù)據(jù) -->使用數(shù)據(jù)符合相關(guān)約束,滿足值域的數(shù)據(jù)
缺少權(quán)限 -->給予用戶所需的權(quán)限
空間分配問題 -->使用alter session enable resumable,增加用戶配額,增加表空間大小
應(yīng)用程序邏輯錯(cuò)誤 -->修正邏輯錯(cuò)誤
2.用戶進(jìn)程故障
用戶非登出的異常退出
用戶會話異常終止
程序錯(cuò)誤導(dǎo)致會話結(jié)束
對于上述錯(cuò)誤,實(shí)例后臺進(jìn)程PMON會自動(dòng)回滾未提交的事務(wù),并釋放相關(guān)鎖資源
3.網(wǎng)絡(luò)故障
偵聽器故障 -->配置一個(gè)備份的偵聽器,connect-time故障轉(zhuǎn)移
網(wǎng)絡(luò)接口卡故障 -->使用多個(gè)網(wǎng)絡(luò)接口卡
網(wǎng)絡(luò)連接故障(路由) -->配置一個(gè)備份的網(wǎng)絡(luò)連接
4.用戶錯(cuò)誤
用戶意外刪除或修改數(shù)據(jù) -->回滾或使用閃回查詢來恢復(fù)
用戶刪除表 -->從回收站閃回刪除
5.介質(zhì)故障
磁盤故障
磁盤控制器故障
刪除或損壞數(shù)據(jù)文件
可能的解決方案,使用聯(lián)機(jī)事務(wù)日志從備份恢復(fù)受影響的文件或恢復(fù)數(shù)據(jù)文件到新的物理位置
6.實(shí)例故障
電源負(fù)載故障
硬件故障
后臺進(jìn)程失敗
異常關(guān)閉數(shù)據(jù)庫
解決方案,使用startup重新啟動(dòng)實(shí)例。實(shí)例實(shí)現(xiàn)自動(dòng)恢復(fù),根據(jù)聯(lián)機(jī)日志文件前滾提交的事務(wù),回滾未提交的事務(wù)
查看告警日志、跟蹤日志等找出出現(xiàn)故障的原因
三、實(shí)例恢復(fù)相關(guān)的后臺進(jìn)程
1.檢查點(diǎn)進(jìn)程(CKPT)
檢查點(diǎn)將當(dāng)前日志文件的信息更新到數(shù)據(jù)文件頭部,控制文件等
檢查點(diǎn)的目的是同步日志文件與數(shù)據(jù)文件的不同步,從而可以確定實(shí)例恢復(fù)從最近的檢查點(diǎn)開始
檢查點(diǎn)的觸發(fā)條件
在日志切換的時(shí)候
數(shù)據(jù)庫用immediate,transaction ,normal選項(xiàng)shutdown數(shù)據(jù)庫的時(shí)候
根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET的設(shè)置的數(shù)值來確定
用戶受手動(dòng)觸發(fā)
檢查點(diǎn)存在的理由
確保在內(nèi)存中已修改的數(shù)據(jù)定期寫入到數(shù)據(jù)文件,防止系統(tǒng)或數(shù)據(jù)庫故障引起數(shù)據(jù)的丟失
減少實(shí)例恢復(fù)所需的時(shí)間,從最近的檢查點(diǎn)到故障時(shí)即為所需要進(jìn)行的恢復(fù)
在數(shù)據(jù)庫關(guān)閉時(shí),確保所有提交的數(shù)據(jù)寫入到數(shù)據(jù)文件
檢查點(diǎn)信息包括
檢查點(diǎn)位置(位于聯(lián)機(jī)日志文件)
系統(tǒng)改變號(SCN)
聯(lián)機(jī)日志文件中的位置
日志信息等
注:檢查點(diǎn)進(jìn)程不會寫入數(shù)據(jù)塊磁盤,也不會寫任何日志到聯(lián)機(jī)日志文件
2.聯(lián)機(jī)日志文件及日志寫入進(jìn)程(LGWR)
聯(lián)機(jī)日志文件記錄數(shù)據(jù)庫的變化情況
應(yīng)當(dāng)被多功復(fù)用以避免丟失
日志寫入進(jìn)程
在commit時(shí)觸發(fā)
當(dāng)日志緩沖/3滿時(shí)
每秒觸發(fā)
在DBWn之前完成
3.歸檔進(jìn)程(ARCn)
歸檔進(jìn)程是一個(gè)可選的后臺進(jìn)程
當(dāng)數(shù)據(jù)庫處于歸檔模式下,將自動(dòng)歸檔聯(lián)機(jī)日志文件
數(shù)據(jù)庫所有做出的變化將被完整記錄
歸檔進(jìn)程在每次發(fā)生日志切換時(shí)被初始化,在聯(lián)機(jī)日志文件被重新使用前自動(dòng)對聯(lián)機(jī)日志文件實(shí)現(xiàn)歸檔
建議開啟歸檔模式
四、三大文件的規(guī)劃
1.多路復(fù)用控制文件
至少使用個(gè)以上的控制文件
分散放開到不同的磁盤
控制文件副本應(yīng)當(dāng)位于不同的磁盤控制器
建議使用RMAN定期自動(dòng)備份
2.多路復(fù)用重做日志文件
每一個(gè)日志組至少兩個(gè)成員
每一個(gè)日志成員應(yīng)當(dāng)位于不同的磁盤
每一個(gè)日志成員應(yīng)當(dāng)位于不同的磁盤控制器
組內(nèi)成員被同時(shí)寫,帶來較大的I/O,應(yīng)置于高速磁盤
3.歸檔日志
應(yīng)將生產(chǎn)數(shù)據(jù)庫切換到歸檔模式
按合理的歸檔日志命名
多于一個(gè)歸檔路徑
總結(jié)
以上就是本文關(guān)于oracle常見故障及規(guī)劃解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:ORACLE SQL語句優(yōu)化技術(shù)要點(diǎn)解析、淺談oracle rac和分布式數(shù)據(jù)庫的區(qū)別、oracle 數(shù)據(jù)庫啟動(dòng)階段分析等,有什么問題可以隨時(shí)留言,小編會及時(shí)回復(fù)大家的。這里推薦幾本oracle方面的書籍供大家學(xué)習(xí)參考。
Oracle精髓(第四版) 中文 PDF版
http://www.dbjr.com.cn/books/62033.html
Oracle 11g 從入門到精通 錢慎一 PDF完整版
http://www.dbjr.com.cn/books/74876.html
希望大家喜歡!
相關(guān)文章
Oracle 要慌了!華為終于開源了自家的 Huawei JDK——畢昇 JDK!
畢昇 JDK 是華為內(nèi)部 OpenJDK 定制版 Huawei JDK 的開源版本,是一個(gè)高性能、可用于生產(chǎn)環(huán)境的 OpenJDK 發(fā)行版,感興趣的朋友跟隨小編一起看看吧2020-12-12兩種oracle創(chuàng)建字段自增長的實(shí)現(xiàn)方式
這篇文章介紹了兩種oracle創(chuàng)建字段自增長的實(shí)現(xiàn)方式,一是序列+觸發(fā)器,二是序列+顯示調(diào)用序列,需要的朋友可以參考下2015-07-07oracle關(guān)聯(lián)查詢報(bào)invalid number錯(cuò)誤的解決方法
這篇文章主要介紹了oracle關(guān)聯(lián)查詢報(bào)invalid number錯(cuò)誤的解決方法,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09對學(xué)Oracle數(shù)據(jù)庫初學(xué)者的開場篇
這篇文章主要介紹了對學(xué)Oracle數(shù)據(jù)庫初學(xué)者的開場篇,方便想學(xué)習(xí)oracle數(shù)據(jù)庫的朋友2015-05-05基于OGG實(shí)現(xiàn)Oracle實(shí)時(shí)同步MySQL的全過程
這篇文章詳細(xì)闡述了基于OGG實(shí)現(xiàn)Oracle實(shí)時(shí)同步MySQL全過程,文中通過圖文結(jié)合和代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-11-11Oracle?ORA-00257:?歸檔程序錯(cuò)誤解決辦法
今天發(fā)現(xiàn)oracle數(shù)據(jù)庫連不上,報(bào)錯(cuò):ORA-00257:歸檔程序錯(cuò)誤,在釋放之前僅限于內(nèi)部連接?馬上聯(lián)想到可能是空間滿了,一看磁盤目錄果然,這篇文章主要給大家介紹了關(guān)于Oracle?ORA-00257:歸檔程序錯(cuò)誤的解決辦法,需要的朋友可以參考下2024-04-04使用PL/SQL Developer連接Oracle數(shù)據(jù)庫的方法圖解
之前因?yàn)轫?xiàng)目的原因需要使用Oracle數(shù)據(jù)庫,由于時(shí)間有限沒辦法從基礎(chǔ)開始學(xué)習(xí),而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer這個(gè)很好用的軟件來間接使用數(shù)據(jù)庫,下面簡單介紹一下如何用這個(gè)軟件連接Oracle數(shù)據(jù)庫2016-12-12分享Oracle 11G Client 客戶端安裝步驟(圖文詳解)
這篇文章主要介紹了分享Oracle 11G Client 客戶端安裝步驟(圖文詳解),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12