自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle數(shù)據(jù)空間的使用、監(jiān)控和維護(hù)

數(shù)據(jù)庫 Oracle 數(shù)據(jù)庫運維
本文旨在介紹Oracle數(shù)據(jù)空間的使用、監(jiān)控和維護(hù)功能。文中描述了數(shù)據(jù)庫空間的基本概念;表空間的使用,包括表空間碎片的產(chǎn)生和清理方法;表數(shù)據(jù)段的使用等等。

Oracle提供了不少方法用于數(shù)據(jù)空間的使用、監(jiān)控和維護(hù),同時也在各版本中陸續(xù)對這方面的功能進(jìn)行了增強,目的在于簡化這方面工作的復(fù)雜度,提高應(yīng)用的運行效率。

一、相關(guān)概念

數(shù)據(jù)庫的空間在邏輯上分為多個表空間,每個表空間則由系統(tǒng)中的一個或多個物理數(shù)據(jù)文件構(gòu)成;Oracle存儲數(shù)據(jù)的基本單位是塊,其大小在建庫時由DB_BLOCK_SIZE參數(shù)確定,一個或多個連續(xù)的塊構(gòu)成一個區(qū)片(EXTENT),它作為數(shù)據(jù)對象存儲的基本單位來使用。在Oracle中,每個基本數(shù)據(jù)對象使用的空間稱為段(Segment),段存放在唯一的表空間上,每個段實際上是一系列區(qū)片(更為準(zhǔn)確地是數(shù)據(jù)塊)的集合。每個簡單數(shù)據(jù)對象對應(yīng)一個段;對于分區(qū)對象如分區(qū)表、索引,則每個(子)分區(qū)對應(yīng)一個段,由各個(子)分區(qū)共同構(gòu)成一個完整的數(shù)據(jù)對象。因此,可以把表空間看作桶,里面放著許多段;一個段只能放在一個桶中,而不能跨越多個桶。

二、表空間的使用

表空間碎片的產(chǎn)生

由于同一個表空間中存放有多個數(shù)據(jù)段,各個數(shù)據(jù)段可以有不同的區(qū)片尺寸,不同段的區(qū)片可以交叉存放;當(dāng)這些段中的區(qū)片經(jīng)過分配(如創(chuàng)建表)、釋放(如刪除表)后,就可能使表空間中原本連續(xù)的空閑數(shù)據(jù)塊變成不連續(xù),而區(qū)片必須由連續(xù)的數(shù)據(jù)塊構(gòu)成,這時,當(dāng)某一段需要分配新的區(qū)片時,就有可能出現(xiàn)雖然表空間空閑數(shù)據(jù)塊的總和大于所需區(qū)片的大小,但卻無法找到一串連續(xù)的塊來供此區(qū)片分配使用。這種情況就稱為表空間的ExtentFragmentation。我們經(jīng)常會遇到這種情況,明明從DBA_FREE_SPACE中計算表空間還有幾百MB,但其中的某一個表卻無法再擴展幾個MB的空間。

消除表空間碎片

Oracle在段的區(qū)片分配上為用戶提供了很大的靈活性,然而如果未能正確使用創(chuàng)建表空間和數(shù)據(jù)對象的各個可選擇參數(shù),則在最后將不可避免的要面對區(qū)片碎片的問題。Oracle的BhaskarHimatsingka和JuanLoaiza,為此提出了SAFE(SimpleAlgorithmforFragmentationElimination.)配制規(guī)則,通過遵循這套規(guī)則,區(qū)片級碎片可以完全的避免。而實際上,Oracle8i引入的新特性:LocalManagedTablespace就是SAFE規(guī)則在OracleServer的內(nèi)置實現(xiàn)。SAFE原則概括起來包括:

1.對每個表空間上的段使用相同的區(qū)片尺寸;段參數(shù)INITIAL=NEXT,PCTINCREASE=0;可以通過使用CreateTablespace的‘MINIMUMEXTENT’子句來確保分配的區(qū)片是此參數(shù)的倍數(shù);

2.僅在表空間級指定INITIAL、NEXT參數(shù),在創(chuàng)建數(shù)據(jù)段時不要指定這些參數(shù);

3.區(qū)片的大小根據(jù)段大小來確定,原則是均衡順序掃描的效率和空間的利用率,同時確保段的區(qū)片數(shù)目控制在1024之下;根據(jù)此原則,在進(jìn)行相應(yīng)測試之后,確定區(qū)片選取規(guī)則;

有此數(shù)據(jù)庫中可以只使用三種區(qū)片大小的表空間;在對象創(chuàng)建之前需對其大小進(jìn)行評估,并放到相應(yīng)的表空間中;

4.Oracle815引入了本地管理表空間,它在管理和性能上都優(yōu)于傳統(tǒng)的字典管理表空間,它已融合了規(guī)則1、2、3;要使用此特性,在CREATETABLESPACE語句中指定EXTENTMANAGEMENTLOCAL子句;

5.段的區(qū)片數(shù)目上限應(yīng)在4096之下,DML操作在此區(qū)片數(shù)目范圍內(nèi)不會有明顯的性能差異;但某些DDL操作的速度則與區(qū)片的數(shù)目關(guān)系較大;因此合理的區(qū)片數(shù)目應(yīng)保持在1024之下;對于持續(xù)不斷擴展的段,應(yīng)監(jiān)控區(qū)片數(shù)目,在必要時移至其它表空間;

6.對于特別大的數(shù)據(jù)段應(yīng)控制在4G-128G(Oracle7為5G-160G)之間,它們應(yīng)存放到單獨的表空間上,同時對于這些特大段應(yīng)考慮使用分區(qū)拉提高性能;

7.用戶的臨時表空間應(yīng)使用TEMPORARY類型;

8.當(dāng)系統(tǒng)的事務(wù)規(guī)模比較均衡時可以對回滾段使用OPTIMAL參數(shù),否則應(yīng)避免制定OPTIMAL參數(shù),而定期監(jiān)控回滾段的大小,并在必要時重建;

9.臨時段和回滾段絕對不要將用戶數(shù)據(jù)存放到SYSTEM表空間,它是專為永遠(yuǎn)不會Drop和Truncate的系統(tǒng)數(shù)據(jù)對象而設(shè)計的;

10.創(chuàng)建表空間時指定數(shù)據(jù)文件的大小應(yīng)=區(qū)片整數(shù)倍+1數(shù)據(jù)塊,對于LocalManagedTablespace則為區(qū)片整數(shù)倍+64K;

11.當(dāng)表空間使用統(tǒng)一的區(qū)片大小時,不要對其進(jìn)行空間整理,重整的結(jié)果不僅耗費精力而且可能會使性能變差;對于未使用統(tǒng)一的區(qū)片尺寸的表空間應(yīng)通過Export/Import重整;

12.8i提供了AlterTable…Move[Tablespace…]命令可用于快速重整表,AlterIndex…Rebuild…[Tablespace…]命令可用于快速重建索引。

有關(guān)使用單個區(qū)片的誤導(dǎo)

在許多關(guān)于碎片整理的文檔中建議在Export時使用Compress=Y選項,將表中的所有數(shù)據(jù)調(diào)整到一個區(qū)片中,期望在Import后獲得良好性能。由此讓許多人產(chǎn)生一個觀點,認(rèn)為當(dāng)表中數(shù)據(jù)全部存放到一個區(qū)片中時,可以獲得良好性能。實際上單區(qū)片段只在以下條件成立時,才具有優(yōu)越性。

數(shù)據(jù)主要以(全段)掃描方式訪問;

段所對應(yīng)的數(shù)據(jù)塊在物理磁盤上連續(xù)存放,Oracle可以發(fā)布較大的順序磁盤讀操作;

通過對這兩條進(jìn)行分析可以發(fā)現(xiàn),一方面數(shù)據(jù)庫中大部分表是通過索引來訪問,另一方面現(xiàn)在的數(shù)據(jù)庫文件一般在物理上使用了RAID5或RAID0+1技術(shù),數(shù)據(jù)以條帶化方式分布到多個物理磁盤上,邏輯上的單個區(qū)片和多區(qū)片在物理上并無本質(zhì)上的區(qū)別;另外,從Oracle的角度來看,管理幾百個區(qū)片的段是非常輕松的并不會有性能的下降。由此可見將整個段放到一個區(qū)片中并無明顯好處,而這種做法卻會導(dǎo)致表空間碎片的產(chǎn)生。

三、表數(shù)據(jù)段的使用

表空間的組織

Heap表的空間由一系列區(qū)片鏈接而成,每個數(shù)據(jù)塊除塊頭外其余部分可用于存放數(shù)據(jù),在創(chuàng)建表時可以指定以下參數(shù):

PCTFREE:塊中保留用于UPDATE操作的空間百分比,當(dāng)數(shù)據(jù)占用的空間達(dá)到此上限時,新的數(shù)據(jù)將不能再插入到此塊中;

PCTUSED:指定塊中數(shù)據(jù)使用空間的最低百分比;當(dāng)一個塊在達(dá)到PCTFREE,之后經(jīng)歷了一些DELETE操作,在其空間使用下降到PCTUSED后便可以重新被用于INSERT數(shù)據(jù);這就是PCTFREE/PCTUSED參數(shù)的含義;

調(diào)整PCTFREE、PCTUSED參數(shù)的目標(biāo)一方面是提高性能,另一方面則主要是提高空間使用效率,避免出現(xiàn)塊中存在有許多未用的空間,但卻無法找到一個塊可以被用于插入新數(shù)據(jù)行的情況發(fā)生。

PCTFREE的使用

在Oracle中表的每一行數(shù)據(jù)由唯一的ROWID標(biāo)記;而Oracle支持的數(shù)據(jù)類型中有一些長度是可變的,如VARCHAR,當(dāng)對這些數(shù)據(jù)進(jìn)行UPDATE時,如果塊中的可用空間不能容納UPDATE后的數(shù)據(jù)行時,Oracle將會把此行移到其它數(shù)據(jù)塊,同時保留此數(shù)據(jù)行的ROWID不變,并在原有塊中建一指針指向行遷移后的位置。在這種情況下讀取一行數(shù)據(jù)將需要訪問2個數(shù)據(jù)塊,從而導(dǎo)致性能下降。PCTFREE保留的空間就是為確保更改后的數(shù)據(jù)行可以仍存放于原有數(shù)據(jù)塊中,避免行遷移的情況發(fā)生。

由此,如果PCTFREE設(shè)置不足時可能產(chǎn)生行遷移;而另一方面如果PCTFREE設(shè)置過高,將會造成空間浪費。因此正確設(shè)置PCTFREE需要對表中數(shù)據(jù)的使用進(jìn)行分析。對于數(shù)據(jù)長度不會變化或極少更新的情況,可以采用較小的PCTFREE;對于其它大多數(shù)情況應(yīng)采用稍大的PCTFREE(PCTFREE的缺省值是10,如果不好估計需預(yù)留的空間,可以使用15-25的范圍),不要為節(jié)約塊中的空間而使用較小的PCTFREE值。

【編輯推薦】

  1. 如何更好的利用Oracle全文檢索
  2. Oracle數(shù)據(jù)庫管理腳本淺析
  3. 詳解Oracle建立用戶和對用戶的管理
責(zé)任編輯:yangsai 來源: IT專家網(wǎng)
相關(guān)推薦

2011-03-10 13:12:41

2011-03-22 09:07:12

nagios監(jiān)控oracle

2020-12-10 09:41:15

ZabbixOracle數(shù)據(jù)庫

2009-10-26 16:13:29

Oracle使用UND

2011-05-25 09:20:24

Oracle數(shù)據(jù)庫

2009-11-06 14:25:20

Oracle創(chuàng)建用戶表

2023-10-10 15:57:09

物聯(lián)網(wǎng)樓宇管理

2011-08-18 16:42:04

Oracle數(shù)據(jù)庫維護(hù)SQL代碼示例

2011-06-14 15:11:59

ORACLE

2009-04-24 09:15:50

Oracle維護(hù)前瞻性

2023-04-27 16:07:52

物聯(lián)網(wǎng)監(jiān)控和維護(hù)

2011-03-15 13:25:41

Oracle數(shù)據(jù)庫管理員維護(hù)

2010-04-21 11:43:33

Oracle數(shù)據(jù)庫

2010-04-16 10:00:06

Oracle查看表空間

2010-04-21 14:45:39

Oracle數(shù)據(jù)庫

2021-09-28 09:16:00

網(wǎng)絡(luò)空間安全網(wǎng)絡(luò)安全信息泄露

2011-03-25 16:10:58

oraclenagios

2010-03-24 09:42:12

Oracle數(shù)據(jù)庫

2010-04-06 09:58:13

Oracle dele

2010-05-04 16:57:45

Oracle空間管理
點贊
收藏

51CTO技術(shù)棧公眾號