熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫體系結構

2022-06-13   來源: Oracle 

  Oracle數據庫的體系結構包括四個方面數據庫的物理結構邏輯結構內存結構及進程
  
   物理結構
  
  物理數據庫結構是由構成數據庫的操作系統文件所決定Oracle數據庫文件包括
  
  數據文件(Data File)
  數據文件用來存儲數據庫中的全部數據例如數據庫表中的數據和索引數據通常以為*dbf格式例如:userCIMSdbf
  
  日志文件(Redo Log File)
  日志文件用於記錄數據庫所做的全部變更(如增加刪除修改)以便在系統發生故障時用它對數據庫進行恢復名字通常為Log*dbf格式LogCIMSdbfLogCIMSdbf
  
  控制文件(Control File)
  每個Oracle數據庫都有相應的控制文件它們是較小的二進制文件用於記錄數據庫的物理結構數據庫名數據庫的數據文件和日志文件的名字和位置等信息用於打開存取數據庫名字通常為Ctrl*ctl 格式如CtrlCIMSctl
  
  配置文件
  配置文件記錄Oracle數據庫運行時的一些重要參數數據塊的大小內存結構的配置等名字通常為init*ora 格式initCIMSora
  
   邏輯結構
  
  Oracle數據庫的邏輯結構描述了數據庫從邏輯上如何來存儲數據庫中的數據邏輯結構包括表空間數據塊和模式對象數據庫的邏輯結構將支配一個數據庫如何使用系統的物理空間模式對象及其之間的聯系則描述了關系數據庫之間的設計
  
  一個數據庫從邏輯上說是由一個或多個表空間所組成表空間是數據庫中物理編組的數據倉庫每一個表空間是由段(segment)組成一個段是由一組區(extent)所組成一個區是由一組連續的數據庫塊(database block)組成而一個數據庫塊對應硬盤上的一個或多個物理塊一個表空間存放一個或多個數據庫的物理文件(即數據文件)一個數據庫中的數據被邏輯地存儲在表空間上
  
  表空間(tablespace)
  Oracle數據庫被劃分為一個或多個稱為表空間的邏輯結構它包括兩類表空間System表空間和非System表空間其中System表空間是安裝數據庫時自動建立的它包含數據庫的全部數據字典存儲過程函數和觸發器的定義以及系統回滾段除此之外還能包含用戶數據
  
  一個表空間包含許多段每個段有一些可以不連續的區組成每個區由一組連續的數據塊組成數據塊是數據庫進行操作的最小單位
  
  每個表空間對應一個或多個數據文件每個數據文件只能屬於一個表空間
  
  數據庫塊(database block)
  數據庫塊也稱邏輯塊或ORACLE塊它對應磁盤上一個或多個物理塊它的大小由初始化參數dbblocksize(在文件initora中)決定典型的大小是kPckfree 和pctused 兩個參數用來優化數據塊空間的使用
  
  區(extent)
  區是由一組連續的數據塊所組成的數據庫存儲空間分配的邏輯單位
  
  段(segment)
  段是一個或多個不連續的區的集合它包括一個表空間內特定邏輯結構的所有數據段不能跨表空間存放Oracle數據庫包括數據段索引段臨時段回滾段等
  
  模式對象(schema object)
  Oracle數據庫的模式對象包括表視圖序列同意詞索引觸發器存儲過程等關於它們將重點在後面章節介紹
  
  .Oracle Server系統進程與內存結構
  
  當在計算機服務器上啟動Oracle數據庫後稱服務器上啟動了一個Oracle實例(Instance)ORACLE 實例(Instance)是存取和控制數據庫的軟件機制它包含系統全局區(SGA)和ORACLE進程兩部分SGA是系統為實例分配的一組共享內存緩沖區用於存放數據庫實例和控制信息以實現對數據庫中數據的管理和操作
  
  進程是操作系統中一個極為重要的概念一個進程執行一組操作完成一個特定的任務對ORACLE數據庫管理系統來說進程由用戶進程服務器進程和後台進程所組成
  
  當用戶運行一個應用程序時系統就為它建立一個用戶進程服務器進程處理與之相連的用戶進程的請求它與用戶進程相通訊為相連的用戶進程的ORACLE請求服務
  
  為了提高系統性能更好地實現多用戶功能ORACLE還在系統後台啟動一些後台進程用於數據庫數據操作
  
  系統進程的後台進程主要包括
  SMON 系統監控進程(system monitor)負責完成自動實例恢復和回收分類(sort)表空間
  PMON 進程監控進程(process monitor)實現用戶進程故障恢復清理內存區和釋放該進程所需資源等
  DBWR 數據庫寫進程數據庫緩沖區的管理進程在它的管理下數據庫緩沖區中總保持有一定數量的自由緩沖塊以確保用戶進程總能找到供其使用的自由緩沖塊
  LGWR 日志文件寫進程是日志緩沖區的管理進程負責把日志緩沖區中的日志項寫入磁盤中的日志文件上每個實例只有一個LGWR進程
  ARCH 歸檔進程(archiver process)把已經填滿的在線日志文件拷貝到一個指定的存儲設備上僅當日志文件組開關(switch)出現時才進行ARCH操作ARCH不是必須的而只有當自動歸檔可使用或者當手工歸檔請求時才發出
  RECO 恢復進程是在具有分布式選項時使用的一個進程主要用於解決引用分布式事務時所出現的故障它只能在允許分布式事務的系統中出現
  LCKn 封鎖進程用於並行服務器系統主要完成實例之間的封鎖
  內存結構(SGA)
  SGA是Oracle為一個實例分配的一組共享內存緩沖區它包含該實例的數據和控制信息SGA在實例啟動時被自動分配當實例關閉時被收回數據庫的所有數據操作都要通過SGA來進行
  
  SGA中內存根據存放信息的不同可以分為如下幾個區域
  
  Buffer Cache存放數據庫中數據庫塊的拷貝它是由一組緩沖塊所組成這些緩沖塊為所有與該實例相鏈接的用戶進程所共享緩沖塊的數目由初始化參數DB_BLOCK_BUFFERS確定緩沖塊的大小由初始化參數DB_BLOCK_SIZE確定大的數據塊可提高查詢速度它由DBWR操作
  
  b 日志緩沖區Redo Log Buffer存放數據操作的更改信息它們以日志項(redo entry)的形式存放在日志緩沖區中當需要進行數據庫恢復時日志項用於重構或回滾對數據庫所做的變更日志緩沖區的大小由初始化參數LOG_BUFFER確定大的日志緩沖區可減少日志文件I/O的次數後台進程LGWR將日志緩沖區中的信息寫入磁盤的日志文件中可啟動ARCH後台進程進行日志信息歸檔
  
  c 共享池Shared Pool包含用來處理的SQL語句信息它包含共享SQL區和數據字典存儲區共享SQL區包含執行特定的SQL語句所用的信息數據字典區用於存放數據字典它為所有用戶進程所共享
  
  Cursors一些內存指針執行待處理的SQL語句
  其他信息區除了上述幾個信息區外還包括一些進程之間的通訊信息(如封鎖信息)在多線索服務器配置下還有一些程序全局區的信息請求隊列和響應隊列等

From:http://tw.wingwit.com/Article/program/Oracle/201311/18784.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.