




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Oracle數(shù)據(jù)庫的事務(wù)管理與故障恢復(fù)技術(shù)分析Oracle事務(wù)管理技術(shù)與故障恢復(fù)技術(shù)的分析 Oracle是一個(gè)最早商品化的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),也是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被越來越多的用戶在信息系統(tǒng)管理、企業(yè)數(shù)據(jù)處理、 Internet、電子商務(wù)網(wǎng)站等領(lǐng)域作為應(yīng)用數(shù)據(jù)的后臺(tái)處理系統(tǒng)。Oracle作為一個(gè)通用的數(shù)據(jù)庫管理系統(tǒng),不僅具有完整的數(shù)據(jù)管理功能,還是一個(gè)分 布式數(shù)據(jù)庫系統(tǒng),支持各種分布式功能,特別是支持Internet應(yīng)用。作為一個(gè)應(yīng)用開發(fā)環(huán)境,Oracle提供了一套界面友好、功能齊全的數(shù)據(jù)庫開發(fā)工 具。Oracle使用PL/SQL語言執(zhí)行各種操作,具有可開放性、可移植性、可伸
2、縮性等功能。特別是在Oracle 8i中,支持面向?qū)ο蟮墓δ埽缰С诸?、方法、屬性等,使得Oracle 產(chǎn)品成為一種對(duì)象/關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。目前最新版本是Oracle 11g。本文將立足于對(duì)Oracle數(shù)據(jù)庫管理系統(tǒng)的細(xì)致解讀, 對(duì)Oracle的事務(wù)管理技術(shù)以及故障恢復(fù)技術(shù)進(jìn)行分析講述。1 Oracle的事務(wù)管理技術(shù)目 前的數(shù)據(jù)庫系統(tǒng)中大多數(shù)都是開放的、允許多個(gè)用戶共享的,并且存在多用戶同時(shí)并發(fā)地訪問、存取數(shù)據(jù)庫中的相同數(shù)據(jù)的情況,如果DBMS不能對(duì)這些并發(fā)執(zhí)行 的操作進(jìn)行準(zhǔn)確處理和控制,就有可能造成不正確的結(jié)果,進(jìn)而破壞數(shù)據(jù)的完整性和一致性。同時(shí),由于網(wǎng)絡(luò)、機(jī)器故障以及應(yīng)用程序的執(zhí)行的錯(cuò)
3、誤使可能正在執(zhí)行 的數(shù)據(jù)存取操作發(fā)生意料之外的中斷,也有可能使數(shù)據(jù)庫中的數(shù)據(jù)受到破壞。因此,設(shè)計(jì)一個(gè)應(yīng)用系統(tǒng)必須能夠?qū)Σl(fā)執(zhí)行的操作進(jìn)行很好地控制,以及當(dāng)出現(xiàn)執(zhí)行 中斷時(shí),系統(tǒng)能夠使數(shù)據(jù)庫恢復(fù)到一個(gè)正確的狀態(tài)。事務(wù)管理技術(shù)就是保證共享數(shù)據(jù)的并發(fā)訪問一致性和失效恢復(fù)正確性的關(guān)鍵技術(shù)。1.1 Oracle中的事務(wù)介紹事務(wù)是DBMS的執(zhí)行單位,它是由有限的數(shù)據(jù)庫操作序列組成,但不是任意數(shù)據(jù)庫操作序列都能成為事務(wù)。一般要求事務(wù)具有以下4個(gè)特性,也就是ACID特性,ACID特性描述了事務(wù)處理的規(guī)則。下面是這4個(gè)特性:(1)執(zhí)行的原子性。在Oracle系統(tǒng)中,事務(wù)處理具有原子性。換句話說,或者提交所有的工
4、作,或者什么工作都不提交;(2) 功能上的保持一致性。這是非常重要的事務(wù)處理特性,任何事務(wù)處理都會(huì)將數(shù)據(jù)庫從一種邏輯 上的一致狀態(tài)轉(zhuǎn)變?yōu)榱硪环N邏輯上的一致狀態(tài)。這就是說,在事務(wù)處理開始之前,數(shù)據(jù)庫中的所有數(shù)據(jù)都會(huì)滿足已經(jīng)施加給數(shù)據(jù)庫的業(yè)務(wù)規(guī)則(約束)。與此相似, 當(dāng)提交了事務(wù)處理之后,數(shù)據(jù)庫仍然會(huì)滿足施加的所有業(yè)務(wù)規(guī)則;(3) 彼此的隔離性。隔離性是數(shù)據(jù)庫允許對(duì)其中數(shù)據(jù)進(jìn)行并發(fā)修改和讀取的能力。隔離性不僅可用于防止其他事務(wù)處理受到當(dāng)前事務(wù)處理的干擾,而且也可以防止當(dāng)前事 務(wù)處理受到其他事務(wù)處理的干擾;(4)作用的持久性。持久性是數(shù)據(jù)庫提供的最重要的特性之一。它可以確保一旦事務(wù)處理提交之后,它的
5、改變就會(huì)永久生效。它 們不會(huì)由于系統(tǒng)故障或錯(cuò)誤而消失。數(shù)據(jù)庫通過在線重做日志(也稱為事務(wù)處理日志)可以確保當(dāng)系統(tǒng)發(fā)生故障或崩潰時(shí),能夠提供復(fù)原數(shù)據(jù)所需的全部信息。1.2 Oracle 的事務(wù)管理1.2.1 Oracle的事務(wù)處理概述Oracle 中的一個(gè)重要概念就是沒有“開始事務(wù)處理”的語句。用戶不能顯式地開一個(gè)事務(wù)處理。事務(wù)處理會(huì)隱式地開始與第一條修改數(shù)據(jù)的語句,或者一些要求事務(wù)處理的 場(chǎng)合。使用commit或rollback語句將會(huì)顯式地終止事務(wù)處理。事務(wù)處理具有原子性,即要么所有的語句都成功執(zhí)行,要么所有語句都不能成功執(zhí)行。Oracle提供了許多事務(wù)處理控制語句,用戶可以用這些語句來控制
6、這種行為。主要的事務(wù)處理控制語句包括:commit、rollback、savepoint、rollback to savepoint、set transaction以及set constraints語句等。下面通過這幾條語句的闡述來了解Oracle的事務(wù)管理技術(shù)。commit處理:在事務(wù)處理的最簡(jiǎn)單的形式中,用戶只需使用SQL的commit命令即可。提交會(huì)結(jié)束用戶的事務(wù)處理,并且使用戶已經(jīng)執(zhí)行的任何改變永久生效。rollback 處理:回滾可以允許用戶撤銷其工作。當(dāng)應(yīng)用中出現(xiàn)錯(cuò)誤,或運(yùn)行程序的終端用戶決定不保存其所做的改變時(shí),可能需要進(jìn)行回滾。如果不能夠回滾錯(cuò)誤或用戶命 令,就無法支持?jǐn)?shù)據(jù)庫中
7、的事務(wù)處理。在回滾處理最簡(jiǎn)單的形式中,只需使用rollback。與提交不同,回滾事務(wù)處理的時(shí)間是所改變數(shù)據(jù)量的函數(shù)。這是可 以預(yù)料的,因?yàn)榛貪L必須在物理上撤銷用戶已經(jīng)完成的工作。savepoint:savepoint可以允許用戶在事務(wù)處理中建立標(biāo)記點(diǎn)。用戶可以在單獨(dú)的事務(wù)處理中擁有多個(gè)保存點(diǎn)。保存點(diǎn)是很有用的事務(wù)處理特性,它們可以讓用戶將單獨(dú)的大規(guī)模事務(wù)處理分割成一系列較小的部分。set transaction:set transaction語句可以使用戶設(shè)置事務(wù)處理的各種屬性,必須是事務(wù)處理中第一個(gè)使用的語句。set transaction語句的作用域只是當(dāng)前的事務(wù)處理。只要用戶進(jìn)行了提交或
8、回滾,set transaction語句的結(jié)果才會(huì)完整。set constraint:在Oracle中,約束可以在DML語句執(zhí)行之后立即生效,也可以延遲到事務(wù)處理提交時(shí)才生效。set constraint語句可以允許用戶在事務(wù)處理中設(shè)置延遲約束的強(qiáng)制模式。1.2.2 Oracle事務(wù)的核心技術(shù)并發(fā)控制技術(shù)概述數(shù) 據(jù)庫是一個(gè)共享資源,可為多個(gè)應(yīng)用程序所共享。這些程序可串行運(yùn)行,但在許多情況下,由于應(yīng)用程序涉及的數(shù)據(jù)量可能很大,常常會(huì)涉及輸入輸出的交換。為 了有效地利用數(shù)據(jù)庫資源,可能多個(gè)程序或一個(gè)程序的多個(gè)進(jìn)程并行地運(yùn)行,這就是數(shù)據(jù)庫的并行操作。在多用戶數(shù)據(jù)庫環(huán)境中,多個(gè)用戶程序可并行地存取數(shù)據(jù)
9、 庫,如果不對(duì)并發(fā)操作進(jìn)行控制,會(huì)存取不正確的數(shù)據(jù),或破壞數(shù)據(jù)庫數(shù)據(jù)的一致性。為防止出現(xiàn)這些數(shù)據(jù)的不一致性,必須使并發(fā)的事務(wù)串行化, 使各個(gè)事務(wù)都按某種次序來執(zhí)行,避免相互干擾,這就是并發(fā)控制所要解決的問題。在Oracle數(shù)據(jù)庫中所提供的并發(fā)控制機(jī)制是利用封鎖機(jī)制來實(shí)現(xiàn)的。在多 用戶數(shù)據(jù)庫中一般采用某些數(shù)據(jù)封鎖來解決并發(fā)操作中的數(shù)據(jù)一致性和完整性問題。封鎖是防止存取同一資源的用戶之間破壞性的干擾的機(jī)制,干擾 是指不正確地修改數(shù)據(jù)或不正確地更改數(shù)據(jù)結(jié)構(gòu)。在多用戶數(shù)據(jù)庫中使用兩種封鎖:排它(專用)封鎖和共享封鎖。排它封鎖禁止相關(guān)資源的共享,如果事務(wù)以排它 方式封鎖一資源,僅僅該事務(wù)可更改該資源,直
10、至釋放排它封鎖。共享封鎖允許相關(guān)資源可以共享,幾個(gè)用戶可同時(shí)讀取同一數(shù)據(jù),幾個(gè)事務(wù)可在同一資源上獲取共 享封鎖。共享封鎖比排它封鎖具有更高的數(shù)據(jù)并行性。 2 Oracle的故障恢復(fù)技術(shù)使用數(shù)據(jù)庫的過程中難免出現(xiàn)人為故障(誤操作及惡意操作)及計(jì)算機(jī)系統(tǒng)的故障(硬件故障、軟件故障、網(wǎng)絡(luò)故障、進(jìn)程故障和系統(tǒng)故障等)等,這都會(huì)影響到數(shù)據(jù)庫系統(tǒng)的操作及數(shù)據(jù)庫中數(shù)據(jù)的正確性和完整性,甚至破壞數(shù) 據(jù)庫,使數(shù)據(jù)庫中部分或全部數(shù)據(jù)丟失。這就會(huì)需要對(duì)數(shù)據(jù)庫進(jìn)行重構(gòu),也就是數(shù)據(jù)庫恢復(fù)。數(shù)據(jù)恢復(fù)是指把意外改變或意外刪除的數(shù)據(jù)恢復(fù)為原貌,恢復(fù)過程大致 可以分為復(fù)原(Restore)與恢復(fù)(Recover)過程。ORAC
11、LE數(shù)據(jù)庫使用幾種結(jié)構(gòu)對(duì)可能故障來保護(hù)數(shù)據(jù):數(shù)據(jù)庫后備、日志、回滾段、控制文 件、系統(tǒng)修改號(hào)(SCN)、檢查點(diǎn)。下面著重介紹Oracle的日志技術(shù)以及利用日志文件實(shí)現(xiàn)數(shù)據(jù)庫故障恢復(fù),簡(jiǎn)要介紹Oracle的檢查點(diǎn)技術(shù)。2.1 Oracle的日志技術(shù)2.1.1 事務(wù)日志概述數(shù)據(jù)庫的事務(wù)日志是Oracle保護(hù)機(jī)制中至關(guān)重要的組成部分,其任務(wù)是隨時(shí)記錄數(shù)據(jù)庫中正在進(jìn)行的數(shù)據(jù)變化,一旦有突發(fā)故障,所有已被提交的工作均可完全恢復(fù)。數(shù)據(jù)庫的恢復(fù)操作中重要的1個(gè)環(huán)節(jié)就是依賴事務(wù)日志中信息,重建或重做丟失事務(wù)中已被提交的各種改變。事 務(wù)是數(shù)據(jù)庫執(zhí)行數(shù)據(jù)處理的基本單位。在執(zhí)行一個(gè)事務(wù)時(shí),如果我們把該事務(wù)處理從開始
12、到結(jié)束所涉及的操作信息(包括事務(wù)涉及的數(shù)據(jù)庫對(duì)象以及在這個(gè)對(duì)象上執(zhí) 行的操作類別、操作前后的數(shù)據(jù)映像、事務(wù)的狀態(tài)等信息)作為一個(gè)特殊的數(shù)據(jù)項(xiàng)以二進(jìn)制的方式記錄下來,這就是事務(wù)日志,事務(wù)日志是以事務(wù)為單位進(jìn)行記錄 的,每一個(gè)日志項(xiàng)(Logitem)詳細(xì)記錄了事務(wù)處理的足夠信息,以確保系統(tǒng)在必要的時(shí)候能夠重演(Redo)該事務(wù)。如果說數(shù)據(jù)庫中的Data是我們 的直接數(shù)據(jù)或“一次數(shù)據(jù)”,那么數(shù)據(jù)庫中的日志則是我們的間接數(shù)據(jù)或“二次數(shù)據(jù)”,它記錄著數(shù)據(jù)的變更信息。從另外一個(gè)角度看,數(shù)據(jù)反映的是事務(wù)處理操作 的結(jié)果,而日志記錄的則是事務(wù)處理操作的過程,有了這樣的歷史變更過程,在一定條件下我們就可以依次“
13、重演”這個(gè)過程(即重新執(zhí)行事務(wù)處理的操作),以達(dá) 到恢復(fù)數(shù)據(jù)的目的??梢哉f事務(wù)日志是記錄數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)操作的“流水賬”,目前絕大多數(shù)數(shù)據(jù)庫系統(tǒng)都支持對(duì)事務(wù)日志的記錄。Oracle的日志文件有兩類:一類是聯(lián)機(jī)日志文件,即Oracle用于管理數(shù)據(jù)庫的事務(wù)日志文件;另一類稱為歸檔日志,是不活動(dòng)聯(lián)機(jī)文件的備份,這種日志文件主要用于數(shù)據(jù)庫的恢復(fù)。日志中記錄的信息包括:數(shù)據(jù)庫的邏輯更改、用戶的誤操作、事后審計(jì)、數(shù)據(jù)庫的更改歷史、更改類型(INSERT、UPDATE、DELETE、DDL等)、更改對(duì)應(yīng)的SCN號(hào)、以及執(zhí)行這些操作的用戶信息等。2.1.2 基于日志的數(shù)據(jù)庫恢復(fù)無 論何種原因故障導(dǎo)致Oracle
14、數(shù)據(jù)庫不能正常啟動(dòng)(即不能進(jìn)入Open狀態(tài)),此時(shí)即需要執(zhí)行數(shù)據(jù)庫恢復(fù)(Recovery)。典型的數(shù)據(jù)庫恢復(fù)過程需 要如下3個(gè)階段:(1)Restore:選擇某個(gè)歷史備份作為恢復(fù)的起點(diǎn),即首先將數(shù)據(jù)恢復(fù)至備份時(shí)刻的狀態(tài);(2)Roll Forward:利用歸檔日志和聯(lián)機(jī)日志依次重做自備份時(shí)刻以來的事務(wù);(3)Roll Back:在故障時(shí)刻前附近的一些事務(wù),有些還未來得及提交(Commit),但由于系統(tǒng)內(nèi)部的Checkpoint事件的觸發(fā)導(dǎo)致已經(jīng)寫入聯(lián)機(jī)日志,這 部分事務(wù)需要利用數(shù)據(jù)映像(Before Image)進(jìn)行必要的回滾。如果這3個(gè)階段的操作都能夠順利進(jìn)行,則可以將數(shù)據(jù)庫毫無損失地恢復(fù)到
15、損壞前一時(shí)刻的狀態(tài),即所謂的完全數(shù)據(jù)庫恢復(fù) (Complete Recovery),如果這個(gè)恢復(fù)過程在第二、三階段由于某種原因中途結(jié)束,則數(shù)據(jù)庫只能恢復(fù)到過去的某個(gè)時(shí)問點(diǎn),即不完全恢復(fù)(Incomplete Recovery)。下圖給出了Oracle數(shù)據(jù)庫恢復(fù)的典型示例。假設(shè)系統(tǒng)在T7時(shí)刻出現(xiàn)故障導(dǎo)致Oracle數(shù)據(jù)庫停止運(yùn)行,數(shù)據(jù)庫分別在T1、T3、T6有3次歷史備份,由圖示可知,歸檔日志中包含了T2至T5時(shí)間段的事務(wù)日志,聯(lián)機(jī)重做日志中包含了T4至T7時(shí)間段的事務(wù)日志。下面說明恢復(fù)過程:(1)選擇T3時(shí)刻的備份作為恢復(fù)的起點(diǎn);(2)利用歸檔日志重做T3至T4(或T5)時(shí)間段的事務(wù);(3)利
16、用聯(lián)機(jī)重做日志重做T4(或T5)至T7時(shí)間段的事務(wù),將數(shù)據(jù)庫恢復(fù)到故障時(shí)刻,實(shí)現(xiàn)Complete Recovery。日志中記錄的事務(wù)處理信息是與當(dāng)時(shí)的數(shù)據(jù)庫狀態(tài)相關(guān)聯(lián)的,離開了特定的數(shù)據(jù)狀態(tài),數(shù)據(jù)操作也就失去了意義。因此事務(wù)日志的重演是有前提的:一是數(shù)據(jù)庫首先必須處于某一時(shí)刻點(diǎn)的完整狀態(tài)(通常由數(shù)據(jù)庫備份來實(shí)現(xiàn))。只有處于這個(gè)狀態(tài),在這一時(shí)間點(diǎn)之后的事務(wù)才有重新運(yùn)行的基礎(chǔ);二是重新運(yùn) 行的事務(wù)處理必須嚴(yán)格按照原來的時(shí)間順序進(jìn)行,只有這樣,才能實(shí)現(xiàn)逐步推演,因?yàn)閷?shí)際的數(shù)據(jù)庫操作其后一步操作總是依賴于前一步操作的結(jié)果。正因?yàn)榇?,?shù) 據(jù)庫的事務(wù)日志必須連續(xù)地保存,如果某個(gè)時(shí)間段的事務(wù)日志損壞或丟失,
17、則此時(shí)間段之后的日志也就失去了存在的意義。2.1.3 Oracle的檢查點(diǎn)技術(shù)概述檢查點(diǎn):是一個(gè)數(shù)據(jù)庫控制文件中的一個(gè)數(shù)據(jù)結(jié)構(gòu),當(dāng)出現(xiàn)一個(gè)檢查點(diǎn)時(shí),Oracle把修改數(shù)據(jù)從高速緩存寫入磁盤,并更新控制文件和數(shù)據(jù)文件利用檢查點(diǎn)機(jī)制,可以保證Oracle恢復(fù)操作能從一個(gè)正確的點(diǎn)開始讀取日志文件。檢查點(diǎn)分為三類:1)局部檢查點(diǎn):?jiǎn)蝹€(gè)實(shí)例執(zhí)行數(shù)據(jù)庫所有數(shù)據(jù)文件的一個(gè)檢查點(diǎn)操作,屬于此實(shí)例的全部臟緩存區(qū)寫入數(shù)據(jù)文件。觸發(fā)命令:svmrgrlalter system checkpoint local;這條命令顯示的觸發(fā)一個(gè)局部檢查點(diǎn)。2)全局檢查點(diǎn):所有實(shí)例(對(duì)應(yīng)并行數(shù)據(jù)服務(wù)器)執(zhí)行數(shù)據(jù)庫所有所有數(shù)據(jù)文件
18、的一個(gè)檢查點(diǎn)操作,屬于此實(shí)例的全部臟緩存區(qū)寫入數(shù)據(jù)文件。觸發(fā)命令:svrmgrlalter system checkpoint global;這條命令顯示的觸發(fā)一個(gè)全局檢查點(diǎn)。3) 文件檢查點(diǎn):所有實(shí)例需要執(zhí)行數(shù)據(jù)文件集的一個(gè)檢查點(diǎn)操作,如使用熱備份命令alter tablespace USERS begin backup,或表空間脫機(jī)命令alter tablespace USERS offline,將執(zhí)行屬于USERS表空間的所有數(shù)據(jù)文件的一個(gè)檢查點(diǎn)操作。檢查點(diǎn)處理步驟:(1)獲取實(shí)例狀態(tài)隊(duì)列:實(shí)例狀態(tài)隊(duì)列是在實(shí)例狀態(tài)轉(zhuǎn)變時(shí)獲得,ORACLE獲得此隊(duì)列以保證檢查點(diǎn)執(zhí)行期間,數(shù)據(jù)庫處于打開狀態(tài)
19、;(2)獲取當(dāng)前檢查點(diǎn)信息:獲取檢查點(diǎn)記錄信息的結(jié)構(gòu),此結(jié)構(gòu)包括當(dāng)前檢查點(diǎn)時(shí)間、活動(dòng)線程、進(jìn)行檢查點(diǎn)處理的當(dāng)前線程、日志文件中恢復(fù)截止點(diǎn)的地址信息;(3)緩存區(qū)標(biāo)識(shí):標(biāo)識(shí)所有臟緩存區(qū),當(dāng)檢查點(diǎn)找到一個(gè)臟緩存區(qū)就將其標(biāo)識(shí)為需進(jìn)行刷新,標(biāo)識(shí)的臟緩存區(qū)由系統(tǒng)進(jìn)程DBWR(數(shù)據(jù)庫寫進(jìn)程)進(jìn)行寫操作,將臟緩存區(qū)的內(nèi)容寫入數(shù)據(jù)文件;(4)臟緩存區(qū)刷新:DBWR進(jìn)程將所有臟緩存區(qū)寫入磁盤后,設(shè)置一標(biāo)志,標(biāo)識(shí)已完成臟緩存區(qū)至磁盤的寫入操作。系統(tǒng)進(jìn)程LGWR(日志寫進(jìn)程)與CKPT(校驗(yàn)點(diǎn))進(jìn)程將繼續(xù)進(jìn)行檢查,直至DBWR進(jìn)程結(jié)束為止;(5)更新控制文件與數(shù)據(jù)文件。2.3 Oracle中可恢復(fù)的故障類型及恢復(fù)方
20、法在使用每一個(gè)數(shù)據(jù)庫系統(tǒng)時(shí),系統(tǒng)故障的可能性總是存在,Oracle數(shù)據(jù)庫系統(tǒng)也不例外。如果發(fā)生系統(tǒng)故障,應(yīng)盡快恢復(fù)數(shù)據(jù)庫,使對(duì)用戶不利的影響最小。2.3.1 Oracle數(shù)據(jù)庫故障在oracle對(duì)象關(guān)系數(shù)據(jù)庫環(huán)境中可能發(fā)生各種不同類型的故障。這些故障包括語句故障、用戶進(jìn)程故障、用戶錯(cuò)誤故障、例程故障、介質(zhì)故障。對(duì)于不同類型的故障,恢復(fù)方法也不同。(1)語句故障當(dāng) Oracle程序中某一語句執(zhí)行時(shí)發(fā)生了邏輯故障,這時(shí)語句故障也相應(yīng)發(fā)生了。在下列情況下如果發(fā)生故障,即可認(rèn)為發(fā)生了語句故障。一是應(yīng)用程序執(zhí)行過程 中發(fā)生了邏輯錯(cuò)誤;二是用戶試圖將可能違反完整性約束條件的臟數(shù)據(jù)輸入到表中;三是用戶試圖進(jìn)
21、行一些末被授權(quán)的操作,例如只被授予SELECT權(quán)利的用戶 試圖進(jìn)行將數(shù)據(jù)插入表的操作;四是用戶試圖創(chuàng)建新表,但超過了用戶所應(yīng)分配給的限額;五是用戶試圖對(duì)表進(jìn)行插入或者修改操作,在表空間中已沒有足夠的空閑 空間,而要執(zhí)行這些操作又需要預(yù)先分配足夠的空閑空間(2)用戶進(jìn)程故障導(dǎo)致用戶進(jìn)程產(chǎn)生故障原因很多。最常見的原因是:一是用戶在會(huì)話過程中非正 常斷開連接。例如,用戶在客戶服務(wù)器環(huán)境中與數(shù)據(jù)庫連接時(shí),用戶使用SQL*Hus中的【Ctrl】+【Break】非正常斷開連接;二是用戶會(huì)話過程非 正常終止,當(dāng)用戶在客戶服務(wù)器環(huán)境中與數(shù)據(jù)庫連接時(shí)用戶又重新啟動(dòng)了該用戶進(jìn)程就可能造成這種情況;三是用戶程序在終
22、止會(huì)話過程時(shí)產(chǎn)生地址異常,當(dāng)應(yīng)用程 序不能正確處理出現(xiàn)的異常情況時(shí)經(jīng)常會(huì)產(chǎn)生地址異常。(3)用戶錯(cuò)誤故障在下列情況下,經(jīng)常會(huì)發(fā)生用戶錯(cuò)誤故障:一是當(dāng)用戶隨意刪除或者截?cái)嘁粋€(gè)表; 二是用戶刪除一個(gè)表中必需的所有行;三是用戶已提交了數(shù)據(jù),但是發(fā)現(xiàn)所提交的數(shù)據(jù)中有錯(cuò)誤。(4)例程故障很 多原因均可能導(dǎo)致例程故障的產(chǎn)生。一是因斷電造成服務(wù)器不可用從而導(dǎo)致例程故障。二是因硬件問題比如CPU故障或者內(nèi)存毀壞,或者因?yàn)椴僮飨到y(tǒng)崩潰而導(dǎo)致 的例程故障。三是因Oracle服務(wù)器的某一個(gè)后臺(tái)進(jìn)程,主要指DBWR、LGWR、PMON、SMON、CKPT這幾個(gè)進(jìn)程中的某一個(gè)發(fā)生了故障,這時(shí) 也會(huì)發(fā)生例程故障。(5)介
23、質(zhì)故障介質(zhì)故障與物理介質(zhì)有關(guān)的問題。這些問題經(jīng)常發(fā)生對(duì)數(shù)據(jù)文件進(jìn)行讀寫的時(shí)候。而這些讀寫對(duì) 數(shù)據(jù)庫操作而言又是必需的。介質(zhì)故障是所有oracle所發(fā)生的故障中性質(zhì)最嚴(yán)重的。在如下幾種情況下會(huì)發(fā)生介質(zhì)故障。一,存儲(chǔ)某一數(shù)據(jù)庫文件的磁盤驅(qū)動(dòng) 器的磁頭劃傷;二,在對(duì)正常數(shù)據(jù)庫操作所需的文件進(jìn)行讀寫時(shí)遇到的物理介質(zhì)問題;三,文件被刪除。2.3.2 Oracle數(shù)據(jù)庫恢復(fù)條件分析(1)恢復(fù)的目標(biāo):概括而言,恢復(fù)的目標(biāo)就是把數(shù)據(jù)庫的平均恢復(fù)時(shí)間、數(shù)據(jù)損失減到最??;增加數(shù)據(jù)庫的平均無故障工作時(shí)間。(2)定制恢復(fù)策略需要考量的因素:由于恢復(fù)過程并不是獨(dú)立存在的,所以定制恢復(fù)策略之前要考量一些相關(guān)因素。(3)
24、恢復(fù)的前提條件:Oracle數(shù)據(jù)庫恢復(fù)的前提條件就是:事先已成功做了數(shù)據(jù)庫備份。數(shù)據(jù)庫運(yùn)行模式,分為兩類:非歸檔模式指的是數(shù)據(jù)庫實(shí)例在運(yùn)行中對(duì)日 志文件采取隨時(shí)進(jìn)行覆蓋寫而不用備份的方法;歸檔模式指的是數(shù)據(jù)庫實(shí)例在運(yùn)行中對(duì)日志文件進(jìn)行覆蓋寫前先由ARCH進(jìn)程讀出并寫到歸檔日志文件中,當(dāng)此過 程完成后才能對(duì)日志文件進(jìn)行覆蓋寫。2.3.3 Oracle數(shù)據(jù)庫恢復(fù)對(duì)應(yīng)上述不同的數(shù)據(jù)庫故障,下面分析各自的恢復(fù)方法:(1)語句故障的恢復(fù)方案當(dāng) 應(yīng)用程序發(fā)生邏輯錯(cuò)誤時(shí),應(yīng)該修改應(yīng)用程序以使邏輯流程得以正確執(zhí)行。因?yàn)檫@類故障主要與具體的應(yīng)用程序環(huán)境有關(guān),因此這部分工作應(yīng)該由應(yīng)用程序設(shè)計(jì)人員 來執(zhí)行而不是由D
25、BA來完成。同樣,如果用戶將臟數(shù)據(jù)插入表中,那么應(yīng)修改SQL語句并重新發(fā)布,這部分工作應(yīng)由應(yīng)用程序設(shè)計(jì)人員來執(zhí)行而不由DBA完 成。而在其它情況下,DBA必須參與到故障恢復(fù)工作中來。為了使用戶完成末被授權(quán)的操作,DBA不得不提供給這些用戶所需的授權(quán)。為了讓用戶完 成創(chuàng)建新表的工作,DBA不得不發(fā)布alter user命令以改變限額限制。為了讓用戶完成插入或者修改操作,DBA不得不給表空間增加文件空間。當(dāng)然,從技術(shù)上講DBA應(yīng)該保證這種情況不會(huì)發(fā)生。但 是用戶在進(jìn)行插入或者修改操作時(shí)遇到空閑空間不足的情況應(yīng)該會(huì)發(fā)生,因此DBA不得不增加文件空間,DBA也可以通過對(duì)數(shù)據(jù)文件使用RE-SIZE和 A
26、UTOEXTEND 的形式完成該功能。(2)用戶進(jìn)程故障的恢復(fù)方案DBA基本上不需要采取任何措施去處理進(jìn)程錯(cuò)誤。雖 然oracle服務(wù)器或者其它用戶進(jìn)程將對(duì)系統(tǒng)或者其它用戶基本上不產(chǎn)生任何影響,但是用戶進(jìn)程不能連續(xù)工作。這種非正常的用戶進(jìn)程必須予以終 止,PMON后臺(tái)進(jìn)程(PMON后臺(tái)進(jìn)程是指過程監(jiān)視器,具有回退用戶當(dāng)前事務(wù)處理,釋放當(dāng)前保留的所有表鎖或行鎖,釋放用戶當(dāng)前保留的其它資源的功能) 完全能夠處理非正常用戶進(jìn)程終止后的清理工作。PMON進(jìn)程可以檢測(cè)到非正常終止的服務(wù)器進(jìn)程,然后PMON進(jìn)程回滾非正常終止進(jìn)程的事務(wù)并且釋放已獲得 的任何資源和封鎖。(3)用戶錯(cuò)誤故障的恢復(fù)方案用戶錯(cuò)誤故障恢復(fù)通常需要DBA的參與。對(duì)于任何數(shù)據(jù)庫和應(yīng)用程序環(huán)境而 言,為了盡量避免用戶錯(cuò)誤故
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TCZSYSJLXH 002-2024 全國藝術(shù)行業(yè)職業(yè)能力水平評(píng)價(jià)團(tuán)體標(biāo)準(zhǔn)
- 太原單柱式標(biāo)志桿施工方案
- 吉安市防水補(bǔ)漏施工方案
- 浦東新區(qū)2024學(xué)年度第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)高三語文試卷
- 生態(tài)茶園修復(fù)工程施工方案
- 建筑工程竣工驗(yàn)收檢測(cè)報(bào)告
- 右安門鋼結(jié)構(gòu)施工方案
- 簡(jiǎn)支鋼箱梁橋施工方案
- 酉陽四星級(jí)酒店施工方案
- 陶鋁吸音板施工方案
- 10以內(nèi)加減法口算趣味學(xué)習(xí)500題(可打?。?/a>
- 合唱之美知到智慧樹章節(jié)測(cè)試課后答案2024年秋山東航空學(xué)院
- 人工智能應(yīng)用概論(第2版) 教案全套 莫少林
- 食品安全演練預(yù)案及流程
- 2025年湖南科技職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025屆威海市高三語文上學(xué)期期末考試卷附答案解析
- 《病例隨訪匯報(bào)》課件
- 2024年09月2024華夏金融租賃有限公司校園招聘筆試歷年參考題庫附帶答案詳解
- 細(xì)胞抗衰知識(shí)培訓(xùn)課件
- 新能源汽車充電設(shè)施建設(shè)規(guī)劃與管理計(jì)劃
- 《污水中微塑料的測(cè)定 傅里葉變換顯微紅外光譜法》
評(píng)論
0/150
提交評(píng)論