北郵數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)_第1頁(yè)
北郵數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)_第2頁(yè)
北郵數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)_第3頁(yè)
北郵數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)_第4頁(yè)
北郵數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3 4.3 ORACLE數(shù)據(jù)庫(kù)存取管理數(shù)據(jù)庫(kù)存取管理 數(shù)據(jù)庫(kù)管理員的任務(wù)是使所有運(yùn)行Oracle數(shù)據(jù)庫(kù)的系統(tǒng)能夠有效的工作。數(shù)據(jù)庫(kù)管理員為每一個(gè)用戶提供技術(shù)支持,并且應(yīng)當(dāng)對(duì)Oracle軟件中出現(xiàn)的所有問(wèn)題都相當(dāng)熟悉。除上一節(jié)介紹的ORACLE實(shí)例設(shè)置外,ORACLE數(shù)據(jù)庫(kù)的存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)的性能也有很大影響,另外ORACLE的安全性、備份與恢復(fù)機(jī)制也在本節(jié)中介紹。 4.3.1 管理ORACLE存儲(chǔ) 4.3.2 ORACLE安全管理 4.3.3 ORACLE備份與恢復(fù) 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義

2、4.3.1 4.3.1 管理管理ORACLEORACLE存儲(chǔ)存儲(chǔ) 在2.1的數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)介紹中,我們已經(jīng)知道ORACLE的數(shù)據(jù)存取是面向數(shù)據(jù)塊(頁(yè))的;在4.1中,我們知道ORACLE數(shù)據(jù)庫(kù)的存儲(chǔ)體系是表空間、段、區(qū)間、塊,下面將集中討論ORACLE存儲(chǔ)對(duì)性能的影響。 4.3.1.1管理數(shù)據(jù)庫(kù)對(duì)象 4.3.1.2理解數(shù)據(jù)庫(kù)碎片 4.3.1.3管理回滾段 4.3.1.4鑒別存儲(chǔ)問(wèn)題 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象管理Oracle塊 Oracle服務(wù)器尋址的最小存儲(chǔ)單元是Orac

3、le塊。無(wú)論段是一個(gè)表、索引、簇或者其他對(duì)象,塊結(jié)構(gòu)是相同的。設(shè)計(jì)一個(gè)性能最優(yōu)的數(shù)據(jù)庫(kù)要從設(shè)計(jì)一個(gè)性能最優(yōu)的數(shù)據(jù)庫(kù)要從對(duì)對(duì)OracleOracle塊適塊適當(dāng)?shù)呐渲煤凸芾黹_(kāi)始當(dāng)?shù)呐渲煤凸芾黹_(kāi)始。 Oracle塊是由三部分組成的:塊頭、數(shù)據(jù)存儲(chǔ)區(qū)、自由空間區(qū)。塊頭包含有關(guān)塊的信息(什么類(lèi)型的段數(shù)據(jù)存儲(chǔ)在塊中,什么段在塊中有數(shù)據(jù),塊地址以及指向存儲(chǔ)在其中的實(shí)際行的指針)。塊頭由一個(gè)固定部分和一個(gè)可變部分組成,在塊中塊頭通常使用85到100字節(jié)。 在在OracleOracle塊中,主要關(guān)注管理數(shù)據(jù)存儲(chǔ)區(qū)域和自由塊中,主要關(guān)注管理數(shù)據(jù)存儲(chǔ)區(qū)域和自由空間區(qū)域空間區(qū)域。數(shù)據(jù)區(qū)域是塊中實(shí)際存儲(chǔ)行的地方。自由空

4、間區(qū)是一個(gè)保留的區(qū)域,被定義為總的可用空間的百分?jǐn)?shù),用于存儲(chǔ)有關(guān)在塊中的行將來(lái)更新的信息。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象理解PCTFREE與PCTUSED PCTFREEPCTFREE和和PCTUSEDPCTUSED是應(yīng)用于段的兩個(gè)存儲(chǔ)是應(yīng)用于段的兩個(gè)存儲(chǔ)參數(shù)參數(shù),當(dāng)Oracle向數(shù)據(jù)庫(kù)中寫(xiě)信息時(shí),它必須首先在一個(gè)段的分配區(qū)中找到一個(gè)或更多塊來(lái)存儲(chǔ)信息。 如果在塊中自由空間的百分?jǐn)?shù)比PCTFREE參數(shù)大得多,它就可以用來(lái)存儲(chǔ)新信息。當(dāng)自由空間的百分?jǐn)?shù)低于PCTFREE時(shí),塊就被

5、認(rèn)為是“滿的”。 當(dāng)塊中使用空間的百分?jǐn)?shù)低于PCTUSED時(shí),它就可以被用來(lái)存儲(chǔ)新信息。 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象理解PCTFREE與PCTUSED 使使OracleOracle保持足夠的額外空間用于行增長(zhǎng)保持足夠的額外空間用于行增長(zhǎng)( (修改結(jié)構(gòu)修改結(jié)構(gòu)) ),而不需要跨塊,而不需要跨塊存儲(chǔ)存儲(chǔ)。保持行被限制在一個(gè)單獨(dú)的塊中有助于使數(shù)據(jù)庫(kù)以最高性能運(yùn)行。 PCTFREE和PCTUSED的值不能等于100%。由數(shù)據(jù)庫(kù)引擎處理引起的系統(tǒng)開(kāi)銷(xiāo)可以通過(guò)在PCTFREE和PCTU

6、SED之間留至少20%的裕量而得到解決。缺省PCTFREE為10,PCTUSED為40。 PCTFREE和PCTUSED在數(shù)據(jù)庫(kù)段的存儲(chǔ)子句中被指定??梢杂胐ba_tables、dba_clusters或者dba_indexes數(shù)據(jù)字典視圖查詢(xún)它們目前的值。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象索引與PCTUSED/PCTFREE 索引使用PCTFREE和PCTUSED與表相比不同。只有當(dāng)一個(gè)索引最初建立時(shí)這些參數(shù)適用只有當(dāng)一個(gè)索引最初建立時(shí)這些參數(shù)適用。PCTFREE的設(shè)置應(yīng)讓索引結(jié)

7、構(gòu)最初在葉塊中建立時(shí)就有足夠的空間,這樣就可以增加輔助關(guān)鍵字,而不必拆分已存在的葉塊提供給新關(guān)鍵字。索引不索引不必必設(shè)置設(shè)置PCTUSEDPCTUSED。 當(dāng)為一個(gè)已存在的表建立新索引時(shí),如果預(yù)料到表中的數(shù)據(jù)較穩(wěn)定,修改不多時(shí),可選擇較小的PCTFREE,反之則應(yīng)選擇較大的值。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象管理表存儲(chǔ)區(qū) 創(chuàng)建表時(shí),系統(tǒng)自動(dòng)在表空間中分配一個(gè)區(qū)間,構(gòu)成數(shù)據(jù)段。表的空間需求是平均行長(zhǎng)與行數(shù)的乘積。確定表的容量應(yīng)該在表建立之前的設(shè)計(jì)階段完成。預(yù)期的增長(zhǎng)和存儲(chǔ)參數(shù)值等問(wèn)

8、題應(yīng)該在建表時(shí)處理。ORACLEORACLE用如下方式用如下方式來(lái)為未來(lái)的數(shù)據(jù)預(yù)留空間來(lái)為未來(lái)的數(shù)據(jù)預(yù)留空間(參看2.1內(nèi)容): 1)為表的數(shù)據(jù)段設(shè)置存儲(chǔ)參數(shù),控制每次分配的區(qū)間大小。 2)用存儲(chǔ)參數(shù)PCTFREE和PCTUSED控制構(gòu)成數(shù)據(jù)段的區(qū)間中各個(gè)塊的空間利用率。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象管理索引 當(dāng)查詢(xún)語(yǔ)句中的WHERE子句表達(dá)式含有被索引的關(guān)鍵字時(shí),ORACLE將自動(dòng)啟動(dòng)索引。 許多應(yīng)用程序員(以及DBA)通過(guò)申請(qǐng)更多索引的辦法解決數(shù)據(jù)庫(kù)的性能問(wèn)題。但更多的索更

9、多的索引引不僅會(huì)影響不僅會(huì)影響修改性能,修改性能,而且在一個(gè)查詢(xún)中并而且在一個(gè)查詢(xún)中并不是子句中涉及的索引都啟用不是子句中涉及的索引都啟用。 過(guò)多的索引過(guò)多的索引并不會(huì)一直提供比較好的并不會(huì)一直提供比較好的SELECTSELECT性能性能。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象管理索引: 關(guān)于索引的管理和使用的幾點(diǎn)技巧: 1)組合索引是提高性能的有力工具,特別是針對(duì)只需從索引段讀出而不用從數(shù)據(jù)段的查詢(xún)。 2)如果在查詢(xún)子句中包含IS NULL或IS NOT NULL,索引將不在啟用。

10、3)在查詢(xún)條件中涉及多個(gè)索引,而又無(wú)明顯優(yōu)先可選項(xiàng)的查詢(xún)中,ORACLE一般按索引類(lèi)型及列的性質(zhì)選擇啟動(dòng)索引,當(dāng)有唯一性和非唯一性索引均可使用時(shí),選擇只啟用唯一性索引。 4)在關(guān)鍵字列上進(jìn)行運(yùn)算可以屏蔽定義在此列上的索引。 5)在WHERE子句中若包含不等于(!=或NOT)運(yùn)算,ORACLE將不在啟用索引,但可對(duì)其他列使用索引。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象監(jiān)控回滾段 回滾段實(shí)際上是動(dòng)態(tài)的,DBA應(yīng)該集中精力保證每個(gè)回滾段及與之聯(lián)系的表空間有足夠保證每個(gè)回滾段及與之聯(lián)系的表空間

11、有足夠的空間用于增長(zhǎng)的空間用于增長(zhǎng)。 關(guān)心回滾段的目的在于合理地配置系統(tǒng)資源,提高回滾段的利用率,關(guān)鍵是各個(gè)事務(wù)要占用多大的存儲(chǔ)空間,其活動(dòng)時(shí)間有多長(zhǎng)。 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.1 4.3.1.1 管理管理ORACLEORACLE數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象管理臨時(shí)表空間和段 臨時(shí)段是SELECT語(yǔ)句在需要的時(shí)候向ORACLE申請(qǐng)的存儲(chǔ)資源,隨SELECT語(yǔ)句結(jié)束而注銷(xiāo)。只有查詢(xún)的直接結(jié)果與查詢(xún)的顯示結(jié)果有差異時(shí)才會(huì)申請(qǐng)臨時(shí)段,保存中間結(jié)果,比如DISTINCT、ORDER BY等。 在缺省情況下,臨時(shí)段創(chuàng)建在系統(tǒng)表空間中,而臨時(shí)段頻繁的創(chuàng)建和刪除勢(shì)

12、必造成系統(tǒng)表空間的效率降低,還會(huì)使系統(tǒng)表空間中的碎片增加,影響存儲(chǔ)器的有效使用。 應(yīng)該設(shè)計(jì)一個(gè)專(zhuān)門(mén)的表空間來(lái)存放應(yīng)該設(shè)計(jì)一個(gè)專(zhuān)門(mén)的表空間來(lái)存放臨時(shí)段,臨時(shí)段,最好將最好將其分配在與系統(tǒng)表空間和數(shù)據(jù)段不同的存儲(chǔ)器上,減其分配在與系統(tǒng)表空間和數(shù)據(jù)段不同的存儲(chǔ)器上,減少少I(mǎi)/OI/O沖突沖突。在創(chuàng)建用戶時(shí),應(yīng)同時(shí)為其指定臨時(shí)段所使用的表空間。臨時(shí)段臨時(shí)段表空間最起碼的容積應(yīng)有兩倍表空間最起碼的容積應(yīng)有兩倍的單個(gè)數(shù)據(jù)表信息量,還要考慮用戶數(shù)的單個(gè)數(shù)據(jù)表信息量,還要考慮用戶數(shù)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片

13、 DBA面對(duì)的最常見(jiàn)問(wèn)題就是處理數(shù)據(jù)庫(kù)對(duì)象的處理數(shù)據(jù)庫(kù)對(duì)象的碎片碎片。碎片浪費(fèi)空間,導(dǎo)致性能問(wèn)題,并給數(shù)據(jù)庫(kù)對(duì)象的管理帶來(lái)困難。數(shù)據(jù)庫(kù)碎片通常是行被插入、修改和刪除以及對(duì)象被建立和刪除的結(jié)果,一個(gè)新建立的數(shù)據(jù)庫(kù)不會(huì)有碎片。只有當(dāng)在數(shù)據(jù)庫(kù)上運(yùn)行了一個(gè)或更多的活動(dòng)應(yīng)用程序后,才開(kāi)始看到數(shù)據(jù)庫(kù)碎片的跡象。 數(shù)據(jù)庫(kù)碎片包括分裂成碎片的數(shù)據(jù)庫(kù)對(duì)象,分?jǐn)?shù)據(jù)庫(kù)碎片包括分裂成碎片的數(shù)據(jù)庫(kù)對(duì)象,分裂成碎片的表空間、鏈接行和轉(zhuǎn)移行裂成碎片的表空間、鏈接行和轉(zhuǎn)移行。DBA應(yīng)該,注意數(shù)據(jù)庫(kù)應(yīng)用程序是如何執(zhí)行任務(wù)的,盡量避免數(shù)據(jù)庫(kù)應(yīng)用程序運(yùn)行過(guò)程中產(chǎn)生碎片,并且監(jiān)測(cè)數(shù)據(jù)庫(kù)運(yùn)行狀態(tài),對(duì)產(chǎn)生的碎片進(jìn)行必要的處理。北京郵電大

14、學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片分裂成了碎片的表空間 表空間變成碎片是由于表空間變成碎片是由于運(yùn)行運(yùn)行錯(cuò)誤錯(cuò)誤或者或者表空間中的數(shù)表空間中的數(shù)據(jù)庫(kù)對(duì)象的無(wú)計(jì)劃撤消和重建造成的據(jù)庫(kù)對(duì)象的無(wú)計(jì)劃撤消和重建造成的。表空間不會(huì)由于任何行級(jí)動(dòng)作而變成碎片。 Oracle盡力幫助DBA進(jìn)行空間分配和管理。例如假定一開(kāi)始表空間有四個(gè)10MB表段,現(xiàn)在刪除其中的兩個(gè)表,這兩個(gè)表都位于表空間的“中間”位置,SMON后臺(tái)進(jìn)程自動(dòng)地把兩個(gè)10MB的區(qū)間聚合為一個(gè)20MB區(qū)間。如果要?jiǎng)h除的兩個(gè)表不是位于表空間的“中間”位置,則形成表

15、空間碎片。 表空間碎片會(huì)導(dǎo)致:表空間中的空間被分離且不能有效地使用。 DBA_FREE_SPACEDBA_FREE_SPACE和和DBA_EXTENTSDBA_EXTENTS數(shù)據(jù)字典數(shù)據(jù)字典可以查詢(xún)數(shù)據(jù)庫(kù)的每個(gè)表空間中有多少自由空間是可用的和最大自由區(qū)間的容量以及每個(gè)表空間中自由區(qū)間的數(shù)目。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片處理分裂成碎片的表空間 處理表空間碎片的最好方法是避免它,這需要仔細(xì)地計(jì)劃和管理。避免碎片的幾種提示方法: 1)把對(duì)象用相似的空間和增長(zhǎng)特性聚合在一起。 2)如果可能,把它們的區(qū)間

16、設(shè)成相同的容量,這樣所有的對(duì)象可以共享釋放對(duì)象回收的區(qū)間。 3)使每個(gè)段的PCTINCREASE保持為0(注意Oracle7.3后,設(shè)置PCTINCREASE比0大會(huì)導(dǎo)致SMON自動(dòng)聚合相鄰的自由區(qū)域)。 對(duì)確實(shí)需要對(duì)確實(shí)需要整理整理的的分裂成碎片的表空間,簡(jiǎn)單分裂成碎片的表空間,簡(jiǎn)單的的方方法是在表空間中導(dǎo)出損壞了的對(duì)象,刪除該對(duì)象,再法是在表空間中導(dǎo)出損壞了的對(duì)象,刪除該對(duì)象,再把它們導(dǎo)入回來(lái)把它們導(dǎo)入回來(lái)。這不僅能夠聚合自由空間,而且導(dǎo)出操作也可以把數(shù)據(jù)庫(kù)對(duì)象聚合到一個(gè)區(qū)域中。 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)

17、據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片對(duì)象碎片 碎片問(wèn)題可能發(fā)生在對(duì)象級(jí)。對(duì)象碎片會(huì)導(dǎo)致:由于在表和索引塊中的自由空間空洞導(dǎo)致空間的浪費(fèi);讀性能下降,因?yàn)閿?shù)據(jù)不再被緊緊地排在一起,物理磁盤(pán)驅(qū)動(dòng)器必需從一個(gè)比需要的大的磁盤(pán)表面區(qū)域中搜尋和讀數(shù)據(jù)。 對(duì)象碎片對(duì)象碎片的的三個(gè)特殊碎片類(lèi)型:行轉(zhuǎn)移、行鏈接和三個(gè)特殊碎片類(lèi)型:行轉(zhuǎn)移、行鏈接和過(guò)分?jǐn)U展的段過(guò)分?jǐn)U展的段。 DELETE操作可能會(huì)產(chǎn)生稀疏的塊稀疏的塊,因?yàn)檫@些塊不滿足PCTUSED條件,以至沒(méi)有成為自由空間。處理對(duì)象碎片的操作也會(huì)處理這類(lèi)稀疏的塊問(wèn)題。 DBA在一個(gè)經(jīng)常改變的表空間中發(fā)現(xiàn)空間分配問(wèn)題,并重建了表空間和它的所有對(duì)象,隨后數(shù)據(jù)庫(kù)性能提高了。這種在性能

18、上的提高是消除表空間碎片的結(jié)果,但也可能是消除對(duì)象級(jí)碎片帶來(lái)的性能的提高。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片行轉(zhuǎn)移:行轉(zhuǎn)移在對(duì)行的修改引起行的長(zhǎng)度比塊中可行轉(zhuǎn)移在對(duì)行的修改引起行的長(zhǎng)度比塊中可利用空間大時(shí)發(fā)生利用空間大時(shí)發(fā)生。當(dāng)發(fā)生行轉(zhuǎn)移時(shí),行的一部分轉(zhuǎn)移到一個(gè)新的數(shù)據(jù)塊中,這個(gè)新數(shù)據(jù)塊的地址存儲(chǔ)在原始行單元中。當(dāng)Oracle需要讀這個(gè)行時(shí),它首先讀原始單元并找到一些數(shù)據(jù)和指向另一個(gè)塊的指針,再在這個(gè)塊中找到剩下的行數(shù)據(jù)。 為什么Oracle執(zhí)行行轉(zhuǎn)移而不是把整個(gè)行移到一個(gè)新塊中?因?yàn)橐苿?dòng)一個(gè)行的單元

19、會(huì)引發(fā)ROWID的變化,而ROWID的變化引發(fā)一系列的變動(dòng),代價(jià)太大。 行轉(zhuǎn)移存在兩個(gè)問(wèn)題: 1)Oracle必須讀每一個(gè)包括行數(shù)據(jù)的一部分或者是指向另一個(gè)包含著行數(shù)據(jù)的塊的指針的塊,無(wú)疑這會(huì)導(dǎo)致相當(dāng)大地全系統(tǒng)的額外開(kāi)銷(xiāo)。 2)Oracle必須和行數(shù)據(jù)一起存儲(chǔ)額外的指針來(lái)供給行轉(zhuǎn)移機(jī)制,浪費(fèi)了一些磁盤(pán)空間。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片行鏈接:行鏈接在行太長(zhǎng)以致于不能放入任何一個(gè)數(shù)行鏈接在行太長(zhǎng)以致于不能放入任何一個(gè)數(shù)據(jù)塊時(shí)發(fā)生據(jù)塊時(shí)發(fā)生。這導(dǎo)致該行被存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)塊的鏈中。行鏈接伴隨著包含

20、LONG、LONG RAW或者LOB數(shù)據(jù)類(lèi)型的大行時(shí)發(fā)生。消除鏈接和轉(zhuǎn)移的行 鏈接和轉(zhuǎn)移的行會(huì)對(duì)數(shù)據(jù)庫(kù)的整體性能造成一系列的問(wèn)題??梢酝ㄟ^(guò)下面的SQL語(yǔ)句檢查鏈接和轉(zhuǎn)移的行: analyze table customer list chained rows into cha; 這個(gè)命令把ROWID和數(shù)據(jù)庫(kù)中所有鏈接和轉(zhuǎn)移行的表存儲(chǔ)到cha表中。直接查詢(xún)cha表,即可找出行和表的特定信息。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.2 4.3.1.2 ORACLE數(shù)據(jù)庫(kù)碎片數(shù)據(jù)庫(kù)碎片消除鏈接和轉(zhuǎn)移的行 消除轉(zhuǎn)移的行的方法消除轉(zhuǎn)移的行的方法是直接查詢(xún)cha表,把轉(zhuǎn)移

21、的行從表中移出放入一臨時(shí)表中,然后再集中將臨時(shí)表中數(shù)據(jù)添加進(jìn)表,即可消除轉(zhuǎn)移的行,該方法可能使原來(lái)相鄰存放的數(shù)據(jù)變得不再相鄰,并不一定能提高性能;另一個(gè)方法是使用全表導(dǎo)出,刪除表,之后使用導(dǎo)入重建該表,該方法最簡(jiǎn)單、最全面,肯定會(huì)消除行轉(zhuǎn)移引起的性能問(wèn)題,但無(wú)疑是消耗時(shí)間最長(zhǎng)的。 行鏈接行鏈接是非常難調(diào)整的。唯一的解決辦法是縮短表解決辦法是縮短表的行長(zhǎng)或者增加數(shù)據(jù)庫(kù)塊的大小的行長(zhǎng)或者增加數(shù)據(jù)庫(kù)塊的大小。選擇前一種方法通常需要對(duì)表結(jié)構(gòu)進(jìn)行重新設(shè)計(jì),但是后一種方法需要導(dǎo)出整個(gè)數(shù)據(jù)庫(kù),重新創(chuàng)建數(shù)據(jù)庫(kù)然后全部導(dǎo)入,因?yàn)閴K的大小調(diào)整必須重構(gòu)數(shù)據(jù)庫(kù)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與

22、開(kāi)發(fā)講義4.3.1.3 4.3.1.3 管理回退段管理回退段 像其他段一樣,回滾段被定位在表空間中并且包含區(qū)間。每個(gè)數(shù)據(jù)庫(kù)有一個(gè)SYSTEM回滾段,它位于系統(tǒng)表空間中并在數(shù)據(jù)庫(kù)建立時(shí)建立,用戶不允許使用它并且它不能被刪除。正象第三章所述,ORACLE數(shù)據(jù)庫(kù)應(yīng)該建立附加回滾段。 在有許多并行事務(wù)的系統(tǒng)上需要有更多區(qū)間的更多回滾段。事務(wù)越大,回滾段也就需要越大。因?yàn)榛貪L段通常允許增長(zhǎng),然后收縮回回滾段通常允許增長(zhǎng),然后收縮回到到存儲(chǔ)存儲(chǔ)參數(shù)參數(shù)OPTIMUMOPTIMUM的值的值,一定要特別小心以確保一個(gè)回滾段需要的空間裕量。 當(dāng)創(chuàng)建的回滾段空間太小或者創(chuàng)建的回滾段太少時(shí),Oracle通常出現(xiàn)“快

23、照太舊”的錯(cuò)誤信息。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.3 4.3.1.3 管理回退段管理回退段回滾段操作 事務(wù)可以通過(guò)顯式或者隱式方式被指定到一個(gè)特殊的回滾段中。Oracle用擴(kuò)展(存儲(chǔ)子句)和循環(huán)(釋放的空間可以重用)的方式使用回滾段。如果達(dá)到了一如果達(dá)到了一個(gè)回滾段的個(gè)回滾段的maxextentsmaxextents,或者表空間中沒(méi)有更多的空,或者表空間中沒(méi)有更多的空間分配給回滾段的話,擴(kuò)展就失敗了間分配給回滾段的話,擴(kuò)展就失敗了。應(yīng)該給回滾段分配預(yù)留擴(kuò)展的表空間。 包含在任何給定的表空間中的所有回滾段應(yīng)該被精確地分配成相同的大小,如果設(shè)置了不匹配

24、的區(qū)間大小,那么可能出現(xiàn)前面討論過(guò)的碎片問(wèn)題。也即盡量盡量為活動(dòng)時(shí)間大致相同的事務(wù)創(chuàng)建一個(gè)回滾段,這樣可為活動(dòng)時(shí)間大致相同的事務(wù)創(chuàng)建一個(gè)回滾段,這樣可以使回滾段的區(qū)間利用率達(dá)到最好水平以使回滾段的區(qū)間利用率達(dá)到最好水平。 特殊回滾段是為特殊事務(wù)類(lèi)(如DSS和OLTP)創(chuàng)建的,這些可能被設(shè)置為不通用大小的回滾段,它們應(yīng)該存儲(chǔ)在它們自己的表空間中以使碎片減到最小。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.3 4.3.1.3 管理回退段管理回退段設(shè)定回滾段大小 數(shù)據(jù)庫(kù)設(shè)計(jì)者對(duì)回滾段通常考慮如下問(wèn)題: 1)使用多少個(gè)回滾段; 2)給每個(gè)回滾段分配多少空間; 3)各個(gè)回

25、滾段是專(zhuān)用的還是共享的; 4)各個(gè)回滾段分別住留在哪些表空間中。 當(dāng)設(shè)定回滾段大小時(shí),應(yīng)該被設(shè)置得足夠大,這樣系統(tǒng)就不必馬上重新使用剛被一個(gè)完成的事務(wù)釋放的塊,同時(shí)有足夠的空間來(lái)存儲(chǔ)非活動(dòng)的或者被提交的數(shù)據(jù)事務(wù),而這些數(shù)據(jù)事務(wù)可能是其他長(zhǎng)時(shí)間運(yùn)行的查詢(xún)所需要的(讀一致性)。 使用SET TRANSACTION USE ROLLBACK語(yǔ)句在事務(wù)開(kāi)始時(shí)明確地使用某個(gè)回滾段??梢越⒁粋€(gè)只被長(zhǎng)時(shí)間運(yùn)行的批量工作使用的大回滾段。 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.3 4.3.1.3 管理回退段管理回退段使用OPTIMAL參數(shù) 當(dāng)建立回滾段時(shí),回滾段的目標(biāo)容量

26、可以用存儲(chǔ)參數(shù)OPTIMAL定義。OPTIMAL參數(shù)指定了回滾段要縮小到的尺寸。例: create rollback segment r05 tablespace rbs storage (initial 10M next 10M optimal 20M minextents 2 maxextents 100); ORACLEORACLE盡力把回滾段的尺寸維持在指定的最佳值盡力把回滾段的尺寸維持在指定的最佳值20MB上。當(dāng)回滾段開(kāi)始寫(xiě)入另一個(gè)區(qū)間時(shí),Oracle總是檢查段是否比OPTIMAL的尺寸大,如果大,并且下一個(gè)區(qū)域是完全空閑的,Oracle就釋放該區(qū)間。 如果回滾段的尺寸設(shè)置不適當(dāng),回

27、滾段會(huì)由于OPTIMAL子句的緣故持續(xù)地收縮,這種不斷的區(qū)間分配和釋放會(huì)影響到性能。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.3 4.3.1.3 管理回退段管理回退段進(jìn)行裝載測(cè)試以獲得回滾段估算 為了正確地設(shè)置回滾段的尺寸,需要對(duì)將由較大事務(wù)產(chǎn)生的撤消信息的數(shù)量有個(gè)了解??梢栽跇颖臼聞?wù)中執(zhí)行一個(gè)裝載測(cè)試裝載測(cè)試: 1)建立兩個(gè)表保存統(tǒng)計(jì)信息:undo_begin和undo_end。 2)在與數(shù)據(jù)庫(kù)連接后,發(fā)出一系列事務(wù)處理命令,使用動(dòng)態(tài)性能視圖v$rollstat把寫(xiě)入指定回滾段的原始數(shù)據(jù)捕獲到表undo_begin中。 3)在事務(wù)處理結(jié)束后,再把寫(xiě)入指定回滾

28、段的數(shù)據(jù)放到表undo_end中。 4)在表undo_begin和undo_end中已經(jīng)有了開(kāi)始和結(jié)束值,將這兩個(gè)值相減便可得到寫(xiě)入指定回滾段的數(shù)據(jù)。這些值可以用于確定你的回滾段的尺寸需求。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.4 4.3.1.4 鑒別存儲(chǔ)問(wèn)題鑒別存儲(chǔ)問(wèn)題 當(dāng)數(shù)據(jù)庫(kù)啟動(dòng)和運(yùn)行時(shí),也需要查看數(shù)據(jù)庫(kù)的每個(gè)主要組件有多大。目的是要確保表空間足確保表空間足夠大,能夠存儲(chǔ)它們所包含的段夠大,能夠存儲(chǔ)它們所包含的段。開(kāi)發(fā)表空間 表空間的開(kāi)發(fā)包括了解表空間的總尺寸以及表空間使用什么樣的數(shù)據(jù)文件兩方面。DBA_DATA_FILESDBA_DATA_FILE

29、S表包含所有關(guān)于數(shù)據(jù)文件的信息表包含所有關(guān)于數(shù)據(jù)文件的信息,表空間的尺寸是它的數(shù)據(jù)文件的總和。DBA_FREE_SPACEDBA_FREE_SPACE表中保存數(shù)表中保存數(shù)據(jù)庫(kù)中所有自由區(qū)間的清單據(jù)庫(kù)中所有自由區(qū)間的清單,通過(guò)合計(jì)表空間中自由區(qū)間的尺寸,會(huì)看到還剩多少自由空間、每個(gè)表空間中的最大自由區(qū)域多少。DBA_SEGMENTSDBA_SEGMENTS表表包含包含了數(shù)據(jù)庫(kù)了數(shù)據(jù)庫(kù)的區(qū)間信息的區(qū)間信息。應(yīng)該通過(guò)這三個(gè)表定期評(píng)價(jià)你的表空間被分裂成碎片的程度。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.1.4 4.3.1.4 鑒別存儲(chǔ)問(wèn)題鑒別存儲(chǔ)問(wèn)題表檢查 表檢查包括估

30、計(jì)總的容量以及實(shí)際使用的空間。一個(gè)已用空間與分配空間的比值很低的區(qū)間意味著INITIAL和NEXT區(qū)域值可能被設(shè)置得太高了。可以在DBA_EXTENTS表中找到區(qū)間信息。優(yōu)化簇存儲(chǔ)和檢查索引 理想情況下,每個(gè)簇剛好有一個(gè)區(qū)間理想情況下,每個(gè)簇剛好有一個(gè)區(qū)間。可以查詢(xún)DBA_EXTENTS計(jì)算每個(gè)簇的區(qū)間數(shù)目。可能的情況下,重新計(jì)算最佳的存儲(chǔ)參數(shù),并重建一個(gè)簇。 同簇一樣,理想情況下每個(gè)索引剛好有一個(gè)區(qū)間。監(jiān)控臨時(shí)表空間 排序、鏈接和GROUP BY子句等操作要使用臨時(shí)表空間。要監(jiān)控臨時(shí)段,可以檢查DBA_SEGMENTSDBA_SEGMENTS中類(lèi)中類(lèi)型為型為T(mén)EMPORARYTEMPORAR

31、Y的所有段信息的所有段信息。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2 ORACLE4.3.2 ORACLE安全管理安全管理 Oracle安全模型原理是基于最小特權(quán)原則。此原則認(rèn)為用戶應(yīng)該僅有完成他的任務(wù)所必需的特權(quán)。ORACLE的安全性主要通過(guò)用戶(USER)管理、權(quán)限(PRIVILEGE)管理、角色(ROLE)管理來(lái)實(shí)現(xiàn)。ORACLE的安全管理在第二章中已經(jīng)作過(guò)介紹,下面的內(nèi)容是第二章的繼續(xù)。 4.3.2.1 用戶驗(yàn)證 4.3.2.2 權(quán)限管理 4.3.2.3 審計(jì) 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.1 4.3.2.

32、1 用戶驗(yàn)證用戶驗(yàn)證數(shù)據(jù)庫(kù)驗(yàn)證 當(dāng)創(chuàng)建用戶時(shí),可以為其選擇資源限制文件。 資源限制文件(profile)可以使用企業(yè)管理器(OEM)或SQL*Plus創(chuàng)建環(huán)境資源文件,使資源限制文件生效需在init.ora中設(shè)置resource_limit=TURE。 資源限制文件可以做到口令限制和資源限制資源限制文件可以做到口令限制和資源限制。 資源限制包括會(huì)話級(jí)限制(當(dāng)達(dá)到限制要求時(shí)則斷開(kāi)會(huì)話)和調(diào)用級(jí)限制(當(dāng)達(dá)到限制要求時(shí)回退語(yǔ)句)。 具體有:限制會(huì)話的數(shù)量、每個(gè)會(huì)話使用CPU時(shí)間(100秒為單位)、CPU調(diào)用的次數(shù)、邏輯讀的次數(shù)、每次調(diào)用的邏輯讀的次數(shù)、空閑時(shí)間以及連接時(shí)間等等。 北京郵電大學(xué)軟件學(xué)院

33、 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.1 4.3.2.1 用戶驗(yàn)證用戶驗(yàn)證數(shù)據(jù)庫(kù)驗(yàn)證 口令限制包括 用戶帳戶的鎖定:當(dāng)一個(gè)用戶多次注冊(cè)失敗后,該帳戶能夠被鎖定一段指定的時(shí)間; 口令使用期與到期:一個(gè)給定的口令在使用一段時(shí)間后過(guò)期,此時(shí)必須修改該口令; 口令歷史:口令歷史選項(xiàng)檢查每一個(gè)新近設(shè)定的口令以確??诹钤谥付ㄩL(zhǎng)度的時(shí)間內(nèi)或指定次數(shù)的口令修改中未重復(fù)使用; 口令復(fù)雜性驗(yàn)證:復(fù)雜性驗(yàn)證檢查口令的長(zhǎng)度以使它更難被計(jì)算機(jī)破壞者所破解(長(zhǎng)度上至少為4個(gè)字符,不要與用戶標(biāo)識(shí)相同,至少包含一個(gè)字母字符、一個(gè)數(shù)字字符和一個(gè)標(biāo)點(diǎn)符號(hào),不要與簡(jiǎn)單單詞的一個(gè)內(nèi)部列表上的任何單詞匹配,與以前的口

34、令至少有3個(gè)字符不同)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.1 4.3.2.1 用戶驗(yàn)證用戶驗(yàn)證數(shù)據(jù)庫(kù)驗(yàn)證例:CREATE PROFILE d_prof LIMIT SESSIONS_PER_USER 2 -限制會(huì)話的數(shù)量 CPU_PER_SESSION 10000 -會(huì)話使用CPU時(shí)間(100秒為單位) IDLE_TIME 60 -空閑時(shí)間 CONNECT_TIME 480;-連接時(shí)間例:CREATE PROFILE grace LIMIT FAILED_LOGIN_ATTEMPTS 3 -3次失敗則鎖定 PASSWORD_LIFT_TIME 30 -

35、可以使用30天 PASSWORD_GRACE_TIME 5; -30天到期后再提示5天北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.1 4.3.2.1 用戶驗(yàn)證用戶驗(yàn)證外部驗(yàn)證 外部驗(yàn)證依賴(lài)于操作系統(tǒng)或網(wǎng)絡(luò)驗(yàn)證服務(wù)。此類(lèi)登錄不需要數(shù)據(jù)庫(kù)口令。要使用外部驗(yàn)證, init.ora參數(shù)REMOTE_OS_AUTHENT必須被設(shè)置為T(mén)RUE(缺省值是FALSE)。另外在init.ora文件中設(shè)置OS_AUTHENT_PREFIX參數(shù)表示任何同此值有相同前綴的用戶將在外部得到驗(yàn)證。比如,該值被設(shè)置為ops那么所有以ops打頭的用戶將在外部得到驗(yàn)證。企業(yè)驗(yàn)證 企業(yè)驗(yàn)證啟用一個(gè)

36、中央資源用于口令管理,該用戶被稱(chēng)為全局用戶(global user)并且必須在每個(gè)使用全局口令的數(shù)據(jù)庫(kù)中創(chuàng)建。假如口令得到驗(yàn)證,用戶便能夠訪問(wèn)Oracle數(shù)據(jù)庫(kù)。Oracle安全服務(wù)與Oracle企業(yè)管理器的接口集中了安全角色管理和企業(yè)驗(yàn)證。這使得當(dāng)前正在被管理的用戶具有全局同一性。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.2 4.3.2.2 權(quán)限管理權(quán)限管理 ORACLE權(quán)限有系統(tǒng)權(quán)限和對(duì)象權(quán)限,通過(guò)將權(quán)限直接授予用戶或通過(guò)將角色(一定權(quán)限的集合)賦予用戶完成用戶的權(quán)限管理(見(jiàn)第二章)。 兩種特權(quán):Category ExamplesSYSOPERSTARTU

37、PSHUNTDOWNALTER DATABASE OPEN|MOUNTALTER DATABASE BACKUP CONTROLFILE TORECOVER DATABASEALTER DATABASE ARCHIVELOGSYSDBA不僅具有SYSOPER權(quán)限,而且CREATE DATABASEALTER DATABASE BEGIN/END BACKUPRESTRICTED SESSEIONRECOVER DATABASE UNTIL北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.2.3 4.3.2.3 審計(jì)審計(jì) Oracle能夠?qū)徲?jì)并記錄數(shù)據(jù)庫(kù)中發(fā)生的活動(dòng)。可以使

38、用AUDIT命令允許審計(jì)操作或使用NOAUDIT命令禁止審計(jì)操作。有三種類(lèi)型的審計(jì)操作:登錄嘗試、對(duì)象存取(具體對(duì)象上的具體語(yǔ)句)和數(shù)據(jù)庫(kù)操作(具體的系統(tǒng)特權(quán)和語(yǔ)句,不考慮對(duì)象)。 任何一條命令,不管是成功的還是不成功的都可以進(jìn)行審計(jì)。要?jiǎng)?chuàng)建審計(jì)系統(tǒng)視圖,以用戶SYS的身份運(yùn)行CATAUDIT.SQL文件腳本,并設(shè)置init.ora參數(shù)AUDIT_TRAIL,該參數(shù)可以設(shè)置為寫(xiě)入數(shù)據(jù)庫(kù)或一個(gè)操作系統(tǒng)文件:AUDIT_TRAIL=DB 寫(xiě)入數(shù)據(jù)庫(kù),所有已審計(jì)的活動(dòng)被寫(xiě)入SYS.AUD$表中;AUDIT_TRAIL=OS 寫(xiě)入一個(gè)操作系統(tǒng)文件。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)

39、與開(kāi)發(fā)講義4.3.3 ORACLE4.3.3 ORACLE備份與恢復(fù)備份與恢復(fù) 數(shù)據(jù)丟失分為物理丟失和邏輯丟失兩類(lèi)。 物理數(shù)據(jù)丟失是指操作系統(tǒng)級(jí)的數(shù)據(jù)庫(kù)組件的丟失,例如數(shù)據(jù)文件、控制文件、重做日志以及存檔日志。 邏輯數(shù)據(jù)丟失是諸如表、索引或表記錄的數(shù)據(jù)庫(kù)級(jí)組件的丟失。 OracleOracle能夠?qū)崿F(xiàn)物理數(shù)據(jù)備份與邏輯能夠?qū)崿F(xiàn)物理數(shù)據(jù)備份與邏輯數(shù)據(jù)備份數(shù)據(jù)備份。有效的備份計(jì)劃必須把兩種方案都包含在內(nèi)才能完全避免數(shù)據(jù)丟失。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3 ORACLE4.3.3 ORACLE備份與恢復(fù)備份與恢復(fù) 物理數(shù)據(jù)備份即為數(shù)據(jù)文件、控制文件、歸檔重

40、做日志的拷貝。 物理備份應(yīng)用于相同的Oracle版本以及引起物理備份的實(shí)例上的恢復(fù),因此,物理備份被認(rèn)為是不可移植的,它們通常僅用于保護(hù)同一臺(tái)機(jī)器和實(shí)例中的數(shù)據(jù)免遭數(shù)據(jù)丟失。物理備份通常按照預(yù)定的時(shí)間間隔運(yùn)行以防止數(shù)據(jù)庫(kù)的物理丟失。 物理備份可以進(jìn)一步分為冷備份(脫機(jī)備份offline backup)與熱備份(聯(lián)機(jī)備份online backup)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3 ORACLE4.3.3 ORACLE備份與恢復(fù)備份與恢復(fù) 邏輯數(shù)據(jù)備份通常是SQL語(yǔ)句的集合,這些SQL語(yǔ)句重新創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(表、索引、授權(quán)、角色等)和記錄。 當(dāng)需要在不同

41、實(shí)例之間移動(dòng)指定的數(shù)據(jù),或者需要在不同的系統(tǒng)結(jié)構(gòu)、操作系統(tǒng)版本或Oracle版本之間拷貝一個(gè)實(shí)例的全部數(shù)據(jù)時(shí)可以使用Oracle的邏輯備份系統(tǒng)。邏輯備份用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)對(duì)象的恢復(fù),用來(lái)保證數(shù)據(jù)庫(kù)能夠從無(wú)意中的修改(例如DELETE、DROP等)中恢復(fù)出來(lái)。 在開(kāi)發(fā)者環(huán)境中,應(yīng)該設(shè)計(jì)一個(gè)邏輯備份策略。一般存在兩個(gè)數(shù)據(jù)庫(kù)拷貝,一個(gè)是成品數(shù)據(jù)庫(kù),另一個(gè)由開(kāi)發(fā)者使用,用來(lái)調(diào)試他們的程序。開(kāi)發(fā)數(shù)據(jù)庫(kù)將與成品數(shù)據(jù)庫(kù)定期地保持同步。 北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.1 ORACLE4.3.3.1 ORACLE邏輯備份邏輯備份 Oracle提供了邏輯備份工具EXP(I

42、MP用于邏輯恢復(fù))。命令格式如下: EXP keyword=value, keyword=value完全邏輯備份 EXP可用于完全邏輯數(shù)據(jù)庫(kù)備份。但條件是必須有EXP_FULL_DATABASE權(quán)限和足夠的存儲(chǔ)空間。 寫(xiě)入缺省輸出文件中的完全邏輯備份的例子: exp USERID=SYSTEM/MANAGER FULL=Y指定用戶模式的邏輯備份 EXP支持指定用戶模式的備份。導(dǎo)出一個(gè)指定的用戶組會(huì)導(dǎo)出用戶定義的所有表、索引等相關(guān)的數(shù)據(jù)。 把TGASPER模式導(dǎo)出到標(biāo)準(zhǔn)輸出文件中的示例: exp USERID=SYSTEM/MANAGER OWNER=TGASPER北京郵電大學(xué)軟件學(xué)院 郭文明

43、2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.1 ORACLE4.3.3.1 ORACLE邏輯備份邏輯備份指定表的邏輯備份 導(dǎo)出一組表的處理方法與用戶導(dǎo)出的方法一樣。用TABLES關(guān)鍵字列舉表的名字,可以導(dǎo)出一個(gè)或一組表。 下面的例子把ABC表與XYZ表從BGE模式中導(dǎo)出到缺省輸出文件中: exp USERID=SYSTEM/MANAGER OWNER=BGE TABLES =XYZ,ABC 注意EXP缺乏一些主要的功能,EXP使你不能導(dǎo)出一條基于SQL WHERE子句的信息。Oracle的導(dǎo)出文件實(shí)際上是一種專(zhuān)有格式。市場(chǎng)上有許多第三方的工具提供了這些缺少的功能。 運(yùn)行exp HELP=Y會(huì)

44、顯示EXP的所有關(guān)鍵字及其描述。 ORACLE邏輯備份工具EXP的對(duì)應(yīng)恢復(fù)工具是IMP,其用法可以參照EXP。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.2 ORACLE4.3.3.2 ORACLE冷物理備份冷物理備份 冷物理備份是數(shù)據(jù)庫(kù)管理員用來(lái)保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)整體上免遭各種類(lèi)型數(shù)據(jù)破壞的工具。定期的冷備份以及一組好的歸檔重做日志與當(dāng)前重做日志能夠把數(shù)據(jù)庫(kù)恢復(fù)到失敗前的最后一次提交狀態(tài)。 在NT桌面環(huán)境出現(xiàn)以前,往往借助操作系統(tǒng)工具執(zhí)行冷物理備份。NT環(huán)境是圖形化界面,所以O(shè)racle創(chuàng)建了一個(gè)叫做備份管理器的圖形化產(chǎn)品,備份管理器使用一個(gè)標(biāo)準(zhǔn)的NT圖形用戶界面

45、程序執(zhí)行物理備份與恢復(fù)。從Oracle 8開(kāi)始,Oracle引入了一個(gè)稱(chēng)為恢復(fù)管理器(簡(jiǎn)稱(chēng)為RWAN)的新的備份與恢復(fù)系統(tǒng)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.2 ORACLE4.3.3.2 ORACLE冷物理備份冷物理備份 無(wú)論采用什么方法,冷物理備份都應(yīng)包含如下數(shù)據(jù)庫(kù)元素:控制文件、數(shù)據(jù)文件、重做日志文件、歸檔日志文件。命令行驅(qū)動(dòng)冷物理備份 在備份過(guò)程開(kāi)始以前,要確保數(shù)據(jù)庫(kù)已有足夠長(zhǎng)的時(shí)間停留在脫機(jī)狀態(tài),這樣才能得到完全備份。 執(zhí)行一個(gè)冷備份所需要的基本步驟如下: 1)建立一個(gè)需要備份的操作系統(tǒng)級(jí)文件的列表。 2)選擇使用NORMAL或IMMEDIA

46、TE方式關(guān)閉數(shù)據(jù)庫(kù)。注意僅在使用IMMEDIATE或NORMAL模式關(guān)閉數(shù)據(jù)庫(kù)后才對(duì)它進(jìn)行備份。 3)執(zhí)行步驟1中文件列表的操作系統(tǒng)級(jí)備份。 4)正常啟動(dòng)數(shù)據(jù)庫(kù)。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.2 ORACLE4.3.3.2 ORACLE冷物理備份冷物理備份命令行驅(qū)動(dòng)冷物理備份 建立一個(gè)需要備份的操作系統(tǒng)級(jí)文件的列表并不建立一個(gè)需要備份的操作系統(tǒng)級(jí)文件的列表并不是簡(jiǎn)單的過(guò)程是簡(jiǎn)單的過(guò)程,下面提供一個(gè)方法。 1)init.ora文件必須備份。還要查看一下此文件是否有一個(gè)ifile行,假如有一個(gè)使用ifile關(guān)鍵字列出的文件名,還必須備份那個(gè)文件。 2)

47、查看可用的init.ora文件,生成由數(shù)據(jù)庫(kù)使用的控制文件列表。 3)使用DBA_DATA_FILES獲得所有數(shù)據(jù)庫(kù)數(shù)據(jù)文件。 4)下面的語(yǔ)句可生成重做日志文件的清單: SELECT MEMBER FROM V$LOGFILE; 5)歸檔日志可由歸檔進(jìn)程自動(dòng)寫(xiě)到一個(gè)目錄中。init.ora文件中的log_archive_dest關(guān)鍵字被設(shè)置為目的目錄,歸檔日志將被寫(xiě)入這里。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.2 ORACLE4.3.3.2 ORACLE冷物理備份冷物理備份桌面驅(qū)動(dòng)冷備份 Oracle的備份管理器作為一個(gè)工具用于Oracle數(shù)據(jù)庫(kù)的備份。備

48、份管理器的界面操作相當(dāng)容易。執(zhí)行一個(gè)冷物理備份步驟: 1)確保Oracle數(shù)據(jù)庫(kù)運(yùn)行正常。(因?yàn)閭浞莨芾砥餍枰陉P(guān)閉數(shù)據(jù)庫(kù)以前對(duì)該數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)以便它能建立一個(gè)需要備份的數(shù)據(jù)庫(kù)文件列表。) 2)備份管理器中選擇備份方式(offline_full database)。 3)確定備份目標(biāo):數(shù)據(jù)備份到磁盤(pán)或磁帶中。 4)開(kāi)始備份,備份管理器完成工作后重啟數(shù)據(jù)庫(kù)。 一般不把數(shù)據(jù)備份在數(shù)據(jù)庫(kù)所駐留的物理設(shè)備中。 備份管理器不備份init.ora、config.ora或歸檔日志文件。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.3 ORACLE4.3.3.3 ORACLE熱物

49、理備份熱物理備份 熱備份要求對(duì)Oracle和操作系統(tǒng)具有較高的專(zhuān)業(yè)知識(shí)。由于熱備份的復(fù)雜性,必須事先測(cè)試備份策略。只有從一個(gè)測(cè)試系統(tǒng)中的大量失敗中恢復(fù)出來(lái)時(shí),熱備份系統(tǒng)才被認(rèn)為是可靠的。 Oracle提供了兩種熱備份方法,一種用于命令行UNIX環(huán)境,另一種用于桌面(Windows)環(huán)境。熱備份復(fù)雜性 Oracle基本存儲(chǔ)單元是數(shù)據(jù)塊。數(shù)據(jù)塊中存儲(chǔ)數(shù)據(jù),數(shù)據(jù)塊頭存儲(chǔ)包含在塊中的數(shù)據(jù)的信息。數(shù)據(jù)庫(kù)處于聯(lián)機(jī)狀態(tài)時(shí),備份程序和Oracle可能都工作于同一個(gè)塊上。假定當(dāng)Oracle寫(xiě)新的數(shù)據(jù)和更新數(shù)據(jù)塊頭時(shí),備份程序僅完成了對(duì)塊頭部分的備份,那么完成備份之后,該塊具有老的塊頭和新的數(shù)據(jù)。這個(gè)數(shù)據(jù)塊成為不純的數(shù)據(jù)塊不純的數(shù)據(jù)塊。北京郵電大學(xué)軟件學(xué)院 郭文明 2003.06數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)講義4.3.3.3 ORACLE4.3.3.3 ORACLE熱物理備份熱物理備份熱備份復(fù)雜性 針對(duì)不純的數(shù)據(jù)塊,Oracle的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論