❶ 請問Oracle的資料庫體系的物理結構是怎樣的
物理結構,即Oracle資料庫使用的操作系統文件結構。
對於資料庫物理結構文件,不同的oracle版本,不同的操作系統平台上有不同的存儲目錄結構.
資料庫的物理結構文件按其作用可以分為三類:
數據文件
日誌文件
控制文件
一、數據文件
數據文件用來存儲資料庫的數據,如表、索引等。讀取數據時,系統首先從資料庫文件中讀取數據,並存儲到SGA的數據緩沖區中。
二、重做日誌文件
重做日誌文件記錄對資料庫的所有修改信息。它是三類文件中最復雜的一類文件,也是保證資料庫安全與資料庫備份與恢復有直接關系的文件。
三、控制文件
控制文件是一個二進制文件,用來描述資料庫的物理結構,一個資料庫只需要一個控制文件,控制文件的內容包括:
資料庫名及資料庫唯一標識
數據文件和日誌文件標識
資料庫恢復所需的同步信息,即檢查點號
.
Oracle資料庫的體系結構包括四個方面:資料庫的物理結構、邏輯結構、內存結構及進程。
❷ Oracle資料庫的物理結構有哪些
Oracle資料庫的體系結構包括四個方面:資料庫的物理結構、邏輯結構、內存結構及進程。
1. 物理結構
物理資料庫結構是由構成資料庫的操作系統文件所決定,Oracle資料庫文件包括:
數據文件(Data File)
數據文件用來存儲資料庫中的全部數據,例如資料庫表中的數據和索引數據.通常以為*.dbf格式,例如:userCIMS.dbf 。
日誌文件(Redo Log File)
日誌文件用於記錄資料庫所做的全部變更(如增加、刪除、修改)、以便在系統發生故障時,用它對資料庫進行恢復。名字通常為Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。
控制文件(Control File)
每個Oracle資料庫都有相應的控制文件,它們是較小的二進制文件,用於記錄資料庫的物理結構,如:資料庫名、資料庫的數據文件和日誌文件的名字和位置等信息。用於打開、存取資料庫。名字通常為Ctrl*ctl 格式,如Ctrl1CIMS.ctl。
配置文件
配置文件記錄Oracle資料庫運行時的一些重要參數,如:數據塊的大小,內存結構的配置等。名字通常為init*.ora 格式,如:initCIMS.ora 。
2 邏輯結構
Oracle資料庫的邏輯結構描述了資料庫從邏輯上如何來存儲資料庫中的數據。邏輯結構包括表空間、段、區、數據塊和模式對象。資料庫的邏輯結構將支配一個資料庫如何使用系統的物理空間.模式對象及其之間的聯系則描述了關系資料庫之間的設計.
一個資料庫從邏輯上說是由一個或多個表空間所組成,表空間是資料庫中物理編組的數據倉庫,每一個表空間是由段(segment)組成,一個段是由一組區(extent)所組成,一個區是由一組連續的資料庫塊(database block)組成,而一個資料庫塊對應硬碟上的一個或多個物理塊。一個表空間存放一個或多個資料庫的物理文件(即數據文件).一個資料庫中的數據被邏輯地存儲在表空間上。
表空間(tablespace)
Oracle資料庫被劃分為一個或多個稱為表空間的邏輯結構,它包括兩類表空間,System表空間和非System表空間,其中,System表空間是安裝資料庫時自動建立的,它包含資料庫的全部數據字典,存儲過程、包、函數和觸發器的定義以及系統回滾段。除此之外,還能包含用戶數據。。
一個表空間包含許多段,每個段有一些可以不連續的區組成,每個區由一組連續的數據塊組成,數據塊是資料庫進行操作的最小單位。
每個表空間對應一個或多個數據文件,每個數據文件只能屬於一個表空間。
資料庫塊(database block)
資料庫塊也稱邏輯塊或ORACLE塊,它對應磁碟上一個或多個物理塊,它的大小由初始化參數db-block-size(在文件init.ora中)決定,典型的大小是2k。Pckfree 和pctused 兩個參數用來優化數據塊空間的使用。
區(extent)
區是由一組連續的數據塊所組成的資料庫存儲空間分配的邏輯單位。
段(segment)
段是一個或多個不連續的區的集合,它包括一個表空間內特定邏輯結構的所有數據,段不能跨表空間存放。Oracle資料庫包括數據段、索引段、臨時段、回滾段等。
模式對象(schema object)
Oracle資料庫的模式對象包括表、視圖、序列、同意詞、索引、觸發器、存儲.過程等,關於它們將重點在後面章節介紹。
3.Oracle Server系統進程與內存結構
當在計算機伺服器上啟動Oracle資料庫後,稱伺服器上啟動了一個Oracle實例(Instance)。ORACLE 實例(Instance)是存取和控制資料庫的軟體機制,它包含系統全局區(SGA)和ORACLE進程兩部分。SGA是系統為實例分配的一組共享內存緩沖區,用於存放資料庫實例和控制信息,以實現對資料庫中數據的治理和操作。
❸ oracle資料庫組成部分
ORACLE由兩部分:實例和資料庫
實例由以下組成: SGA,Shared pool,Database buffer cache,Redo log buffer cache.
資料庫由物理文件組成,其中必須有的文件是:數據文件,控制文件,重做日誌
另外還有:參數文件,口令文件,歸檔日誌文件(這三個不是必須的)
ORACLE SERVER 由兩個部分組成,
1.INSTANCE:又由內存結構和後台進程組成
2.DATABASE:又由數據文件,日誌文件和控制文件組成<這三個文件是必需的>.
CONTROL FILE是用來連接實例和DATABASE的
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP NOMOUNT
SQL>ALTER DATABASE MOUNT
以上三個過程就是通過CONTROL FILE來連接實例和資料庫.
SQL>ALTER DATABASE OPEN
在OPEN的過程對DATABASE的數據文件和重做日誌文件進行一次性的驗證,驗證它們的狀態.
ORACLE INSTANCE:存取資料庫的一個手段
一個DATABASE與INSTANCE之間是1:N的關系,一個INSTANCE只能操作一個DATABASE,由內存結構(共享池,
BUFFER CACHE,REDO LOG BUFFER CACHE)及相應的進程結構組成(PMON<程序監控進程>,SMON<系統監控進
程>,CKPT<檢查點進程>)
SQL>SHOW SGA ---顯示DATABASE內存結構信息
SQL>SET WRAP OFF
SQL>SET LINESIZE 200
以上這兩個是設置行寬
SQL>SELECT * FROM V$BGPROCESS;
將看到在這個系統中所有可能使用到的進程,其中PADDR並不每個進程都分配到有效的地址,即並不是每個進程都是必須的.
SQL>SELECT * FROM V$BGPROCESS WHERE PADDR<>\'00\'
將顯示所有必需的進程.
ESTABLISHING A CONNECTION AND CREATING A SESSION
連接到ORACLE實例包括建立一個用戶連接及創建會話.
ORACLE MEMORY STRUCTURE (內存結構)
由兩部分組成:
1.SGA
SGA是動態的,其最大值由SGA_MAX_SIZE指定,SGA的內存由SGA COMPONENTS來動態調整.
2.PGA 是不共享的,即其包含的信息是不一樣的,有兩個可享的內存可以由SGA配置
<1> LARGE POOL
<2> JAVA POOL
SQL>SHOW PARAMETER SHARED
SQL>SHOW PARAMETER DB_CACHE
SQL>SHOW PARAMETER LOG
以上三個命令是用於查看相關內存信息
SQL>ALTER SYSTEM SET DB_CACHE_SIZE=20M;
所有內存大小總和不能大於SGA_MAX_SIZE的值,當提示信息出現?號或亂碼時,是由於系統的語言問題.
可以通過ALTER SESSION SET NLS_LANGUAGE=\'AMERICAN\'或ALTER SESSION SET NLS_LANGUAGE=\"SIMPLE
[Page]
CHINESE\"
SHARED POOL (共享池)
含:<1>LIBRARY CACHE 庫緩存
<2>DATA DICTIONARY CACHE 數據字典緩存,有的地方又稱行CACHE,由SHARED_POOL_SIZE指定大小.
SQL>ALTER SYSTEM SET SHARED_POOL_SIZE=64M;
LIBRARY CACHE 主要為提高代碼的共享,存儲的是最近使用的SQL和PL/SQL代碼.
<1>.用最近最少使用(LRU)演算法
<2>.包括兩個結構 1:共享SQL代碼 2:共享PL/SQL代碼
<3>.不可直接定義,而由SHARED POOL SIZE決定.
DATA DICTONARY CACHE.
執行此命令的過程是:首先確認是否存在AUTHORS,,然後確認欄位存不存在,再檢查語法,最後驗證許可權,而
這些信息就屬於DATA DICTIONARY CACHE的內容.其包含的信息有:DATABASE FILES,表,索引,欄位,用戶,
許可權和其他資料庫對象.
❹ oracle資料庫系統的組成
數據文件 日誌文件 控制文件
❺ Oracle系統的結構
ORACLE資料庫系統為具有管理ORACLE資料庫功能的計算機系統。每一個運行的ORACLE資料庫與一個ORACLE實例(INSTANCE)相聯系。一個ORACLE實例為存取和控制一資料庫的軟體機制。每一次在資料庫伺服器上啟動一資料庫時,稱為系統全局區(SYSTEM GLOBAL AREA)的一內存區(簡稱SGA)被分配,有一個或多個ORACLE進程被啟動。該SGA 和 ORACLE進程的結合稱為一個ORACLE資料庫實例。一個實例的SGA和進程為管理資料庫數據、為該資料庫一個或多個用戶服務而工作。
在ORACLE系統中,首先是實例啟動,然後由實例裝配(MOUNT)一資料庫。在松耦合系統中,在具有ORACLE PARALLEL SERVER 選項時,單個資料庫可被多個實例裝配,即多個實例共享同一物理資料庫。
進程結構和內存結構
進程是操作系統中的一種機制,它可執行一系列的操作步。進程是由多個線程組成的。在有些操作系統中使用作業(JOB)或任務(TASK)的術語。一個進程通常有它自己的專用存儲區。ORACLE進程的體系結構設計使性能最大。
ORACLE實例有兩種類型:單進程實例和多進程實例。
單進程ORACLE(又稱單用戶ORACLE)是一種資料庫系統,一個進程執行全部ORACLE代碼。由於ORACLE部分和客戶應用程序不能分別以進程執行,所以ORACLE的代碼和用戶的資料庫應用是單個進程執行。
在單進程環境下的ORACLE 實例,僅允許一個用戶可存取。例如在MS-DOS上運行ORACLE 。
多進程ORACLE實例(又稱多用戶ORACLE)使用多個進程來執行ORACLE的不同部分,對於每一個連接的用戶都有一個進程。
在多進程系統中,進程分為兩類:用戶進程和ORACLE進程。當一用戶運行一應用程序,如PRO*C程序或一個ORACLE工具(如SQL*PLUS),為用戶運行的應用建立一個用戶進程。ORACLE進程又分為兩類:伺服器進程和後台進程。伺服器進程用於處理連接到該實例的用戶進程的請求。當應用和ORACELE是在同一台機器上運行,而不再通過網路,一般將用戶進程和它相應的伺服器進程組合成單個的進程,可降低系統開銷。然而,當應用和ORACLE運行在不同的機器上時,用戶進程經過一個分離伺服器進程與ORACLE通信。它可執行下列任務:
對應用所發出的SQL語句進行語法分析和執行。
從磁碟(數據文件)中讀入必要的數據塊到SGA的共享資料庫緩沖區(該塊不在緩沖區時),將結果返回給應用程序處理。
系統為了使性能最好和協調多個用戶,在多進程系統中使用一些附加進程,稱為後台進程。在許多操作系統中,後台進程是在實例啟動時自動地建立。一個ORACLE實例可以有許多後台進程,後台進程的名字為:
DBWR資料庫寫入程序
LGWR日誌寫入程序
ARCH歸檔
RECO 恢復
LCKn 封鎖 。
❻ oracle資料庫的體系結構是什麼
1、資料庫的體系結構
1)進程結構:用戶進程
oracle進程:伺服器進程
後台進程:
DBWR資料庫寫入程序
LGWR日誌寫入程序
CKPT檢查點
SMON系統監控
PMON進程監控
ARCH歸檔
RECO恢復
LCKn
Dnnn
Snnn
2)內存結構:軟體代碼區
系統全局區SGA,包括資料庫緩沖存儲區、日誌緩沖區和共享池
程序全局區PGA
排序區
資料庫物理結構:數據文件,控制文件,日誌文件
資料庫邏輯結構:表空間,段,區,數據塊
模式對象:表、視圖、索引、聚集、序列、同義詞、資料庫鏈接、過程、函數、包
❼ 簡要說明oracle資料庫體系的內存結構
內存結構 oracle內存結構大致具有四個區:軟體代碼區、系統全局區、程序全局區和排序區。 1、系統全局區。(SGA) 系統全局區為一組由oracle分配的共享數據結構,它是實例的主要部分,它含有數據維護、SQL語句分析與重做緩存所必須的所有內存結構,系統全局區的數據是共享的,也就是說,多個進程可以在同一時間對SGA中的數據進行訪問和修改。它包含以下內容: <1>、數據塊緩沖區 該區存放最近使用過的數據塊,使用LRU(最近最少使用演算法)進行管理。 <2>、字典緩沖區 該區用於保存數據字典中的行,數據字典中存放oracle系統管理自身所需的所有信息。該區也使用LRU演算法管理。 <3>、重做日誌緩沖區 任何事務在記錄到重做日誌之前都先放到該區,資料庫系統定期將該區內容寫入到聯機重做日誌中。 <4>、SQL共享池 存放所有通過SQL語法分析、准備執行的SQL語句。 <5>、JAVA池 為JAVA命令提供語法分析。 <6>、多緩沖池 可以在SGA中創建多個緩沖池,能夠用多個緩沖池把的數據集與其他的應用程序分開,以減少它們爭奪數據塊緩沖區相同資源的可 能性。 2、程序全局區(PGA) 包含單個伺服器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA 正相反PGA 是只被一個進程使用的區域,PGA 在創建進程時分配在終止進程時回收。 3、排序區 排序需要內存,這部分空間成為排序區,排序區存在於請求排序的用戶進程的內存中,該空間的大小為適應排序數據量的大小,可增長,但受初始化參數SORT_AREA_SIZER所限制。 4、軟體代碼區 用於存儲正在執行或可以執行的程序代碼。 </FONT></SPAN>