日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

阐述oracle的体系结构,Oracle数据库逻辑体系结构详解

發(fā)布時間:2024/9/27 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阐述oracle的体系结构,Oracle数据库逻辑体系结构详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以前對Oracle數(shù)據(jù)庫的了解大多數(shù)是集中在mysql,最近工作里面一直使用的是Oracle,雖然說在互聯(lián)網(wǎng)行業(yè)mysql大行其道,但是一些傳統(tǒng)行業(yè)或者是金融領(lǐng)域還是更加傾向于使用oracle,sqlserver這種大型數(shù)據(jù)庫。為此還是有必要深入了解以下oracle的一些內(nèi)部機制的。

有過oracle使用經(jīng)驗的人都知道表空間(tablespace)的概念,表空間其實是一個邏輯概念,它并不實際存在。而與之關(guān)系密切的是數(shù)據(jù)文件(datafile),數(shù)據(jù)文件是實際存在的,并且和表空間是多對1的關(guān)系。其實只知道這些是遠(yuǎn)遠(yuǎn)不夠的,前段時間遇到一個數(shù)據(jù)文件超過32G導(dǎo)致的業(yè)務(wù)問題,才突然醒悟騷年靜下心好好學(xué)習(xí)學(xué)習(xí)oracle底層的一些概念才是解決問題的王道。首先我們從整體來上了解一下oracle的邏輯體系結(jié)構(gòu)。在這里附上一張百度到的圖片。

圖片中展示的oracle的最大的邏輯結(jié)構(gòu)為數(shù)據(jù)庫,其實這里最大的體系結(jié)構(gòu)應(yīng)該是實例(instance),并且實例和數(shù)據(jù)庫是一對一的關(guān)系,這樣的話我們可以將上圖看作是oracle體系結(jié)構(gòu)中的一個可分割的最大單元。 可以看出數(shù)據(jù)庫可劃分的最大單元為表空間,而表空間又由段(segment)組成,段由extent構(gòu)成,如果再往下分的話是block,oracle中block的概念不同于操作系統(tǒng)中塊文件的概念,這個我們后面章節(jié)解釋。下面我們對上述的一些概念進行一下闡述:

表空間:表空間是oracle抽象出來的最大的邏輯單元,用于存儲數(shù)據(jù)庫對象。和表空間相關(guān)的概念為數(shù)據(jù)文件,可以通過dba_data_files來查看表空間和數(shù)據(jù)文件的關(guān)系。

表空間分類:

永久表空間 :存儲數(shù)據(jù)庫中需要永久化存儲的對象,比如二維表、視圖、存儲過程、索引。

臨時表空間 :存儲數(shù)據(jù)庫的中間執(zhí)行過程,如:保存order by數(shù)據(jù)庫排序,分組時產(chǎn)生的臨時數(shù)據(jù)。操作完成后存儲的內(nèi)容會被自動釋放。臨時表空間是通用的,所的用戶都使用TEMP作為臨時表空間。一般只有tmp一個臨時表空間,如果還需要別的臨時表空間時,可以自己創(chuàng)建。

UNDO表空間 :保存數(shù)據(jù)修改前的副本。存儲事務(wù)所修改的舊址,即被修改之前的數(shù)據(jù)。當(dāng)我們對一張表中的數(shù)據(jù)進行修改的同時會對修改之前的信息進行保存,為了對數(shù)據(jù)執(zhí)行回滾、恢復(fù)、撤銷的操作。

段: 段是指占用數(shù)據(jù)文件空間的通稱,或數(shù)據(jù)庫對象使用的空間的集合;段可以有表段、索引段、回滾段、臨時段和高速緩存段等。說到這里有必要提一下表段,因為標(biāo)段中如果表作為一個分區(qū)表,那么表的一個分區(qū)占用一個段。

段分類: 由于oracle中段比較多,這里我們只是簡單的說一些比較常見的段。

表段:表段,故名思意,它是專門用于存儲表的信息的數(shù)據(jù)結(jié)構(gòu),通常與索引段聯(lián)合使用。

分區(qū)段:這種段類型用于分區(qū),與表段很相似。分區(qū)表由一個或多個表分區(qū)段組成,組合分區(qū)表則由一個或多個表子分區(qū)段組成。

索引段:這種段類型可以保存索引結(jié)構(gòu),與mysql類似,在mysql中mysiam存儲引擎下索引和數(shù)據(jù)是分開的,而innodb引擎下是存儲在一起的。

索引分區(qū): 類似于表分區(qū),這種段類型包含一個索引的某個片。分區(qū)索引由一個或多個索引分區(qū)段組成。

臨時段: 用于存放臨時數(shù)據(jù),比如帶有order by語句的sql會在臨時段內(nèi)存儲數(shù)據(jù)。

回滾段:回滾段是 DBA手動創(chuàng)建的段。 Type2 undo段由 Oracle自動創(chuàng)建和管理。

還有很多其他的段,感興趣的大家自行研究一哈。

區(qū):區(qū)是oracle中由塊組成的邏輯單元,在10G中只要創(chuàng)建了表的時候就會分配區(qū),而在11G及其之后是當(dāng)插入數(shù)據(jù)的時候才會分配區(qū)。區(qū)的分配則是動態(tài)的,當(dāng)表的容量超過當(dāng)前區(qū)所能承載的范圍時就會自動添加新的區(qū)。這個內(nèi)容可以通過dba_extents表查看。

塊: oracle的塊是建立在數(shù)據(jù)庫塊的基礎(chǔ)之上的,通常oracle的塊可以是2,4,8,16,32K,是系統(tǒng)塊的整數(shù)倍,并且定義之后不能被修改。在這里引入一個前段時間遇到的問題: oracle數(shù)據(jù)文件超過32G導(dǎo)致業(yè)務(wù)失敗的問題。這是因為測試環(huán)境上面使用的是smallfile tablespace 模式,所以需要滿足以下制約:

由于Oracle數(shù)據(jù)庫的Rowid中使用22位來代表Block號,這22位最多只能代表2^22-1(4194303)個數(shù)據(jù)塊,而在我們一般情況下使用的數(shù)據(jù)塊大小為8k,所以數(shù)據(jù)文件的理論大小最大為: 31.9999924G,并且在數(shù)據(jù)文件超過32G的情況下,唯一能做的就是添加一個datafile。

了解更多Oracle數(shù)據(jù)庫相關(guān)內(nèi)容請關(guān)注職坐標(biāo)Oracle數(shù)據(jù)庫頻道。

總結(jié)

以上是生活随笔為你收集整理的阐述oracle的体系结构,Oracle数据库逻辑体系结构详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。