程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle體系結構之:Oracle實例和Oracle數據庫

Oracle體系結構之:Oracle實例和Oracle數據庫

編輯:Oracle數據庫基礎
 

對於初接觸Oracle 數據庫的人來講,很容易混淆的兩個概念即是Oracle 實例和Oracle 數據庫。這兩
概念不同於SQL sever下的實例與數據庫,當然也有些相似之處。只是在SQL server我們根本不需要花費太
多的精力去搞清SQL實例和數據庫,因為它簡單易於理解。下面簡要說明一下SQL實例、數據庫,更多的是講
述Oracle下的實例及數據庫。

一、SQL server中的實例與數據庫
1.SQL中的實例指的是一個SQL server服務器上僅有一個缺省實例。缺省實例名即為機器名ServerName
(或IP),如果在同一台機器上再安裝SQL server,我們可以對實例命名如ServerName/InstanceName。
即一台SQL server服務器上可以存在多個不同的實例。一個實例下可以存在多個不同的數據庫。
對於不同實例下的數據庫的訪問,使用ServerName/InstanceName:PortNo即可實現訪問,缺省實例
為ServerName:PortNo。
2.對不同的實例配置IP地址,相關的訪問協議,端口等等。
3.實例的可訪問性需要啟動該實例對應的相關服務。此處需要注意的是實例名和實例的服務名並不是相
同的。缺省的實例的服務名為MSSQLSERVER,而命名實例的服務名為MSSQL$INSTANCE_NAME。
4.實例的相關功能性的設置可以通過外圍應用配置來實現。
5.上述完成後,即可實現對數據庫的訪問。
二、Oracle 實例
一個Oracle Server由一個Oracle實例和一個Oracle數據庫組成。
即:Oracle Server = Oracle Instance + Oracle Database
Oracle實例
包括了內存結構(SGA)和一系列後台進程(Background Process),兩者合起來稱為一個Oracle實例
即:Oracle Instance = SGA + Background Process
Oracle內存結構
包含系統全局區(SGA)和程序全局區(PGA)
即Oracle Memory Structures = SGA + PGA
SGA由服務器和後台進程共享
PGA包含單個服務器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA 正相反,PGA是
只被一個進程使用的區域,PGA 在創建進程時分配在終止進程時回收。即由服務器進程產生。

1.SGA
系統全局區SGA,SGA = 數據緩沖區+ 重做日志緩沖區+ 共享池+ 大池+ Java 池+ 流池
系統全局區是動態的,由參數SGA_MAX_SIZE決定。
查看當前系統的SGA大小:show parameter sga_max_size;
要修改:alter system set sga_max_size=1200m scope=spfile;
因為實例內存的分配是在數據庫啟動時進行的,所以要讓修改生效,要重啟數據庫。

ORACLE 10G 引入了ASMM(自動共享內存管理),DBA只需設置SGA_TARGET,ORACLE就會
自動的對共享池、JAVA池、大池、數據緩沖區、流池進行自動調配。取消自動調配就是
sga_target設為。

數據緩沖區(Database buffer cache):存儲從數據文件中獲得的數據塊的鏡像
大小由db_cache_size 決定
查看:show parameter db_cache_size;
設置:alter system set db_cache_size=800M;

重做日志緩沖區(Redo log buffer):對數據庫的任何修改都按順序被記錄在該緩沖,然後由LGWR進程將
它寫入磁盤,大小由LOG_BUFFER決定

共享池(Shared pool):是SGA中最關鍵的內存片段,共享池主要由庫緩存(共享SQL區和PL/SQL區)和數據
字典緩存組成,它的作用是存放頻繁使用的sql,在有限的容量下,數據庫系統根據一定的算法決
定何時釋放共享池中的sql。
庫緩存大小由shared_pool_size 決定
查看:show parameter shared_pool_size
修改:alter system set shared_pool_size=120m;

數據字典緩存:
存儲數據庫中數據文件、表、索引、列、用戶和其它數據對象的定義和權限信息
大小由shared_pool_size 決定,不能單獨指定

大池(Large pool):是一個可選的區域,用於一些大型的進程如Oracle的備份恢復操作、IO服務器進程等

Java 池:該程序緩沖區就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區的默認大小

流池(Stream pool):被Oracle流所使用

2.PGA
是為每個用戶進程連接ORACLE數據庫保留的內存
進程創建時分配,進程結束時釋放,只能被一個進程使用
PGA包括了以下幾個結構:
()排序區
()游標狀態區
()會話信息區
()堆棧區
由參數:pga_aggregate_target 決定

3.幾類進程:用戶進程,服務器進程,後台進程,其它可選進程
用戶進程
在用戶連接數據庫產生,請求oracle服務器連接,必須要先建立一個連接,不會直接和oracle服務器連接
服務器進程
當連接實例並建立用戶會話時產生,獨立服務器或者提供共享服務器都能產生
後台進程
維持物理和內存之間的聯系,用來管理數據庫的讀寫,恢復和監視等工作。
Server Process主要是通過他和user process進行聯系和溝通,並由他和user process進行數據的交換。
在Unix機器上,Oracle後台進程相對於操作系統進程,也就是說,一個Oracle後台進程將啟動一個操作
系統進程。
Windows機器上,Oracle後台進程相對於操作系統線程,打開任務管理器,我們只能看到一個
ORACLE.EXE的進程,但是通過另外的工具,就可以看到包含在這裡進程中的線程。

必須要有的後台進程
DBWn -->數據庫寫進程
PMON -->程序監控進程
SMON -->系統監控進程
LGWr -->日志寫進程
CKPT -->檢查點進程

可選進程:
ARCN 歸檔進程
RECO
Snnn
pnnn  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved