Oracle數(shù)據(jù)庫(kù)的系統(tǒng)結(jié)構(gòu)
1.Oracle數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)概述
Oracle數(shù)據(jù)庫(kù)由存放在磁盤(pán)上的數(shù)據(jù)庫(kù)(DB)和對(duì)磁盤(pán)上的數(shù)據(jù)庫(kù)進(jìn)行管理的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)兩部分構(gòu)成,分別對(duì)應(yīng)著數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和軟件結(jié)構(gòu)。
Oracle數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)(StorageStructure)分為物理存儲(chǔ)結(jié)構(gòu)和邏輯存儲(chǔ)結(jié)構(gòu)兩種,分別描述了在操作系統(tǒng)中和數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部數(shù)據(jù)的組織管理方式。其中,物理存儲(chǔ)結(jié)構(gòu)表現(xiàn)為操作系統(tǒng)中一系列文件)邏輯存儲(chǔ)結(jié)構(gòu)是對(duì)物理存儲(chǔ)結(jié)構(gòu)的邏輯組織與管理。
Oracle數(shù)據(jù)庫(kù)的軟件結(jié)構(gòu),即Oracle實(shí)例(Instance),包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程結(jié)構(gòu)兩部分。
具體關(guān)系如下圖所示:
用戶的所有操作都是通過(guò)實(shí)例完成的,首先在內(nèi)存結(jié)構(gòu)中進(jìn)行,在一定條件下由數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程結(jié)構(gòu)寫(xiě)入數(shù)據(jù)庫(kù)的物理存儲(chǔ)結(jié)構(gòu)做永久保存。
2.Oracle數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)
oracle 數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)分為物理存儲(chǔ)結(jié)構(gòu)和邏輯存儲(chǔ)結(jié)構(gòu)兩種。物理存儲(chǔ)結(jié)構(gòu)主要用于描述oracle 數(shù)據(jù)庫(kù)外部數(shù)據(jù)的存儲(chǔ),即在操作系統(tǒng)層面中如何組織和管理數(shù)據(jù),與具體的操作系統(tǒng)有關(guān)。邏輯存儲(chǔ)結(jié)構(gòu)主要描述oracle 數(shù)據(jù)庫(kù)內(nèi)部數(shù)據(jù)的組織和管理方式,即在數(shù)據(jù)庫(kù)管理系統(tǒng)的層面中如何組織和管理數(shù)據(jù),與操作系統(tǒng)沒(méi)有關(guān)系。
物理存儲(chǔ)結(jié)構(gòu)具體表現(xiàn)為一系列的操作系統(tǒng)文件,是可見(jiàn)的;而邏輯存儲(chǔ)結(jié)構(gòu)時(shí)候物理存儲(chǔ)結(jié)構(gòu)的抽象體現(xiàn),是不可見(jiàn)的,可以通過(guò)查詢數(shù)據(jù)庫(kù)數(shù)據(jù)字典了解邏輯結(jié)構(gòu)信息。
物理存儲(chǔ)結(jié)構(gòu)主要指的是存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)文件、控制文件、重做日志文件、歸檔文件等。 邏輯存儲(chǔ)結(jié)構(gòu)包括表空間、段、區(qū)和塊4種。
oracle 數(shù)據(jù)庫(kù)的物理存儲(chǔ)結(jié)構(gòu)與邏輯存儲(chǔ)結(jié)構(gòu)既相互獨(dú)立又相互聯(lián)系,如下圖:
從物理角度上看,數(shù)據(jù)庫(kù)由數(shù)據(jù)文件構(gòu)成,數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)文件中,從邏輯角度上看,數(shù)據(jù)庫(kù)是由表空間構(gòu)成的,數(shù)據(jù)存儲(chǔ)在表空間中。一個(gè)表空間包含一個(gè)或者多個(gè)數(shù)據(jù)文件,但一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。
物理存儲(chǔ)結(jié)構(gòu)
控制文件
(1)控制文件是ORALCE數(shù)據(jù)庫(kù)中最重要的物理文件,用于描述整個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu)信息。
控制文件是一個(gè)二進(jìn)制文件,由ORACLE進(jìn)程讀/寫(xiě),在數(shù)據(jù)庫(kù)運(yùn)行于維護(hù)階段,數(shù)據(jù)文件及重做日志文件的結(jié)構(gòu)變化信息都記錄在控制文件中。
Oracle建議最少有兩個(gè)控制文件,通過(guò)多路鏡像技術(shù),將其分散到不同的物理磁盤(pán)中。
(2)一個(gè)控制文件包括:
DB名稱和標(biāo)識(shí)
DB創(chuàng)建的時(shí)間
表空間名稱
數(shù)據(jù)文件和重做日志文件的名稱和位置
當(dāng)前重做日志文件的序號(hào)
檢查點(diǎn)的信息
回退段的開(kāi)始和結(jié)束
重做日志的歸檔信息
備份信息
(3)V$CONTROLFILE:
列出了與實(shí)例有關(guān)的所有控制文件的名稱和狀態(tài)
SHOW PARAMETERS CONTROL_FILES: 列出控制文件的名稱、狀態(tài)和位置
數(shù)據(jù)文件
(1)數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),一個(gè)數(shù)據(jù)庫(kù)由多個(gè)數(shù)據(jù)文件構(gòu)成。
(2) 與數(shù)據(jù)文件相關(guān)的數(shù)據(jù)字典主要有:
v$datafile
dba_data_files
(3). 數(shù)據(jù)文件默認(rèn)情況下都是以.dbf結(jié)尾的文件,默認(rèn)情況下與控制文件同一個(gè)目錄.
重做日志文件
(1)重做日志文件用于記錄對(duì)數(shù)據(jù)庫(kù)的變更操作,在用戶對(duì)數(shù)據(jù)庫(kù)的操作出現(xiàn)故障時(shí),可使用該文件進(jìn)行恢復(fù),以保證數(shù)據(jù)庫(kù)系統(tǒng)的安全.
(2)重做日志文件是成組使用的,即日志文件組,每個(gè)數(shù)據(jù)庫(kù)應(yīng)至少有兩個(gè)重做日志文件組,采用循環(huán)寫(xiě)的方式工作。每個(gè)組可以有一個(gè)或多個(gè)日志文件,同一組日志文件可進(jìn)行鏡像,且鏡像的日志文件應(yīng)存儲(chǔ)在不同的物理磁盤(pán)中.
(3)查看重做日志文件信息
V$log:查詢重做日志文件組的基本信息。
V$logfile:查詢重做日志文件的信息。
歸檔日志文件
1、數(shù)據(jù)庫(kù)運(yùn)行模式
(1) 非歸檔模式noarchivelog
(2) 歸檔模式archivelog
Oracle數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)
Oracle的邏輯結(jié)構(gòu)是一種層次結(jié)構(gòu)。主要由:表空間、段、區(qū)和數(shù)據(jù)塊等概念組成。邏輯結(jié)構(gòu)是面向用戶的,用戶使用Oracle開(kāi)發(fā)應(yīng)用程序使用的就是邏輯結(jié)構(gòu)。數(shù)據(jù)庫(kù)存儲(chǔ)層次結(jié)構(gòu)及其構(gòu)成關(guān)系,結(jié)構(gòu)對(duì)象也從數(shù)據(jù)塊到表空間形成了不同層次的粒度關(guān)系。
一個(gè)或多個(gè)連續(xù)的oracle 數(shù)據(jù)塊構(gòu)成區(qū),一個(gè)或多個(gè)區(qū)構(gòu)成段,一個(gè)或多個(gè)段構(gòu)成表空間,所有表空間構(gòu)成數(shù)據(jù)庫(kù)。
數(shù)據(jù)塊(Data Block)
數(shù)據(jù)庫(kù)塊大小是在Oracle創(chuàng)建數(shù)據(jù)庫(kù)或表空間時(shí)設(shè)定的,數(shù)據(jù)塊的大小在創(chuàng)建后是不可以修改的。
數(shù)據(jù)塊是Oracle讀寫(xiě)數(shù)據(jù)的基本單位,也是輸入/輸出操作的最小單位.
數(shù)據(jù)塊的大小必須是服務(wù)器操作系統(tǒng)塊大小的整數(shù)倍。
(盤(pán))區(qū)(Extent)
1.概念
也稱為數(shù)據(jù)區(qū),是物理上一組連續(xù)的數(shù)據(jù)塊構(gòu)成的邏輯存儲(chǔ)單元。
盤(pán)區(qū)是段中數(shù)據(jù)增長(zhǎng)的基本單位,即是ORACLE存儲(chǔ)空間分配與回收的最小單位。
一個(gè)或多個(gè)盤(pán)區(qū)組成一個(gè)段,當(dāng)一個(gè)段的空間被使用完后,系統(tǒng)將自動(dòng)為該段分配一個(gè)新的盤(pán)區(qū)。
一個(gè)盤(pán)區(qū)不能跨越多個(gè)文件,因?yàn)樗仨毎B續(xù)的數(shù)據(jù)塊
數(shù)據(jù)段中,盤(pán)區(qū)的個(gè)數(shù)受盤(pán)區(qū)控制參數(shù)控制
2.區(qū)的管理
(1)區(qū)的分配
表空間的本地管理(LOCAL)方式下,區(qū)分配方式:
統(tǒng)一大?。篣NIFORM,指定段的初始區(qū)和后續(xù)區(qū)具有統(tǒng)一的大小。
自動(dòng)分配:AUTOALLOCATE,由Oracle系統(tǒng)決定后續(xù)區(qū)的大小,用戶不能干預(yù)分配。
表空間的字典管理(DICTIONARY)方式下,區(qū)的分配方式: 使用STORAGE子句設(shè)置存儲(chǔ)參數(shù)。
(2)區(qū)的回收
通常不論區(qū)中的數(shù)據(jù)塊是否被使用,分配給段的區(qū)會(huì)一直保留在段中,只有當(dāng)段所屬的對(duì)象被刪除時(shí),段中所有的區(qū)才會(huì)被回收。
段(Segment)
段是由一個(gè)或多個(gè)連續(xù)或不連續(xù)的盤(pán)區(qū)構(gòu)成的邏輯存儲(chǔ)單元,用來(lái)保存特定對(duì)象,如表、索引、回滾數(shù)據(jù)、臨時(shí)數(shù)據(jù)等。段是表空間的組織單位。
(1)段內(nèi)包含的數(shù)據(jù)區(qū)可以不連續(xù),并且可以跨越多個(gè)文件。
(2)段類型
數(shù)據(jù)段:用來(lái)存儲(chǔ)表或簇的數(shù)據(jù),普通表數(shù)據(jù)段、分區(qū)表數(shù)據(jù)段、簇?cái)?shù)據(jù)段
索引段:存放索引數(shù)據(jù)(ROWID、索引鍵值)
臨時(shí)段:存儲(chǔ)臨時(shí)數(shù)據(jù)
回滾(退)段:存儲(chǔ)數(shù)據(jù)庫(kù)的回滾信息
表空間(Tablespace)
(1)表空間概念
表空間是ORACLE數(shù)據(jù)庫(kù)最大的邏輯存儲(chǔ)單元,一個(gè)表空間包含一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能從屬于一個(gè)表空間,數(shù)據(jù)庫(kù)對(duì)象就是存儲(chǔ)在表空間對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)文件中。
(2)表空間類型
在Oracle11g中有以下幾種比較特殊的表空間:
⑴SYSTEM表空間(System Tablespace):系統(tǒng)表空間
⑵SYSAUX表空間(SYSAUX Tablespace):系統(tǒng)輔助表空間
⑶TEMP表空間(Temp Tablespace):臨時(shí)表空間
⑷撤消UNDOBS1表空間(Undo Tablespace):撤消表空間
(5)USERS表空間:普通用戶表空間
(6)示例EXAMPLE 表空間:示例表空間
(3)表空間的存儲(chǔ)管理方式
本地管理方式
本地管理(Local)的表空間:
創(chuàng)建本地管理方式的表空間時(shí),可指定區(qū)的分配方式:
自動(dòng)方式:AUTOALLOCATE (默認(rèn)方式)
統(tǒng)一方式:UNIFORM
字典管理方式
(4)查看表空間信息
V$tablespace:查詢數(shù)據(jù)庫(kù)下表空間信息。
Dba_tablespaces:查詢數(shù)據(jù)庫(kù)下表空間信息。
到此這篇關(guān)于Oracle數(shù)據(jù)庫(kù)的系統(tǒng)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Oracle系統(tǒng)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle表空間不足ORA-01653的問(wèn)題:?unable?to?extend?table
這篇文章主要介紹了oracle表空間不足ORA-01653:?unable?to?extend?table的問(wèn)題?,出現(xiàn)這種表空間不足的問(wèn)題一般有兩種情況:一種是表空間的自動(dòng)擴(kuò)展功能沒(méi)有打開(kāi),另一種確實(shí)是表空間確實(shí)不夠用了,已經(jīng)達(dá)到了擴(kuò)展的極限,本文給大家分享解決方法,需要的朋友參考下2022-08-08關(guān)于ORACLE通過(guò)file_id與block_id定位數(shù)據(jù)庫(kù)對(duì)象遇到的問(wèn)題引發(fā)的思考
這篇文章主要介紹了關(guān)于ORACLE通過(guò)file_id與block_id定位數(shù)據(jù)庫(kù)對(duì)象遇到的問(wèn)題引發(fā)的思考,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03Oracle cloud control 12c的啟動(dòng)、關(guān)閉及獲取安裝信息的方法
這篇文章主要介紹了Oracle cloud control 12c的啟動(dòng)、關(guān)閉及獲取安裝信息的方法,例如獲取安裝時(shí)設(shè)定的各類端口號(hào),URL以及如何啟動(dòng)、關(guān)閉cloud control等等,需要的朋友可以參考下2014-11-11oracle在導(dǎo)入數(shù)據(jù)時(shí)報(bào)600錯(cuò)誤的解決方法
最近在工作中進(jìn)行oracle數(shù)據(jù)庫(kù)導(dǎo)入的時(shí)候遇到了600錯(cuò)誤,通過(guò)查找相關(guān)的資料,最終終于解決了,下面這篇文章主要給大家介紹了關(guān)于oracle在導(dǎo)入數(shù)據(jù)時(shí)報(bào)600錯(cuò)誤的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09oracle中if/else的三種實(shí)現(xiàn)方式詳解
本文給大家介紹了oracle中if/else的三種實(shí)現(xiàn)方式及注意事項(xiàng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-10Oracle中獲取會(huì)話信息的兩個(gè)函數(shù)分享
這篇文章主要介紹了Oracle中獲取會(huì)話信息的兩個(gè)函數(shù)分享,本文分別講解了USERENV和兩個(gè)函數(shù)sys_context,并對(duì)可以獲取哪些信息作了介紹,需要的朋友可以參考下2014-12-12PL/SQL遠(yuǎn)程備份和恢復(fù)Oracle數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了PL/SQL遠(yuǎn)程備份和恢復(fù)Oracle數(shù)據(jù)庫(kù)的具體方法,感興趣的小伙伴們可以參考一下2016-09-09解決Oracle?DISTINCT?報(bào)錯(cuò)?inconsistent?datatypes:?expected?
這篇文章主要介紹了Oracle DISTINCT報(bào)錯(cuò)inconsistent datatypes:expected-got CLOB(數(shù)據(jù)類型不一致:?應(yīng)為-,但卻獲得?CLOB),本文給大家分享三種解決方案,需要的朋友可以參考下2023-07-07