国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Oracle 概念(Oracle 10.2) 第八章 內(nèi)存結(jié)構(gòu)
8、內(nèi)存結(jié)構(gòu)
這一章描述了Oracle實(shí)例的內(nèi)存結(jié)構(gòu)。
本章包含下列主題:
u Oracle內(nèi)存結(jié)構(gòu)介紹
u 系統(tǒng)全局區(qū)(SGA)概述
u 程序全局區(qū)(PGA)概述
u 專用和共享服務(wù)器
u 軟件代碼區(qū)域
Oracle內(nèi)存結(jié)構(gòu)介紹
Oracle使用內(nèi)存保存下列信息:
u 程序代碼
u 連接會(huì)話的信息,即使是非活動(dòng)會(huì)話
u 程序執(zhí)行時(shí)需要的信息(例如,一個(gè)獲取行的查詢的當(dāng)前狀態(tài))
u 在Oracle進(jìn)程之間共享和通訊的信息(例如,鎖信息)
u 在外部存儲(chǔ)中持久保存的緩存數(shù)據(jù)(例如,數(shù)據(jù)塊和重做日志條目)
Oracle相關(guān)基礎(chǔ)內(nèi)存結(jié)構(gòu)包括:
u 系統(tǒng)全局區(qū)(SGA),在所有服務(wù)器進(jìn)程和后臺(tái)進(jìn)程之間共享
u 程序全局區(qū)(PGA),對(duì)于每個(gè)服務(wù)器進(jìn)程和后臺(tái)進(jìn)程私有的區(qū)域,每個(gè)進(jìn)程都有一個(gè)PGA。
圖8-1 描述了這些內(nèi)存結(jié)構(gòu)的聯(lián)系。
圖8-1 Oracle內(nèi)存結(jié)構(gòu)
軟件代碼區(qū)域是另外一個(gè)基本內(nèi)存區(qū)域。
系統(tǒng)全局區(qū)(SGA)概述
系統(tǒng)全局區(qū)(SGA)是包含Oracle數(shù)據(jù)庫(kù)實(shí)例的數(shù)據(jù)和控制信息的一組共享內(nèi)存結(jié)構(gòu)。如果多個(gè)用戶并發(fā)連接同一個(gè)實(shí)例,那么實(shí)例的SGA數(shù)據(jù)在用戶之間共享。所以,SGA有時(shí)候叫做共享全局區(qū)。
SGA和Oracle進(jìn)程構(gòu)成了一個(gè)Oracle實(shí)例。Oracle在你啟動(dòng)實(shí)例時(shí),自動(dòng)為SGA分配內(nèi)存,在你關(guān)閉實(shí)例時(shí),操作系統(tǒng)釋放內(nèi)存。每個(gè)實(shí)例都有它自己的SGA。
SGA是可讀寫的。連接到多進(jìn)程數(shù)據(jù)庫(kù)實(shí)例的所有用戶可以讀取實(shí)例SGA中的信息,Oracle運(yùn)行時(shí)多個(gè)進(jìn)程寫數(shù)據(jù)到SGA。
SGA包含下列數(shù)據(jù)結(jié)構(gòu):
u 數(shù)據(jù)庫(kù)高速緩存(Database buffer cache)
u 重做日志緩存(Redo log buffer)
u 共享池(Shared pool)
u Java池(Java pool)
u 大池(Large pool,可選)
u 流池(Streams pool)
u 數(shù)據(jù)字典緩存(Data dictionary cache)
u 其他信息
SGA包含數(shù)據(jù)庫(kù)和實(shí)例的通用信息,后臺(tái)進(jìn)程需要訪問這部分信息;這部分叫做固定(fixed)SGA。這里不保存用戶數(shù)據(jù)。SGA還包括進(jìn)程之間通訊的信息,比如鎖信息。
如果系統(tǒng)使用共享服務(wù)器架構(gòu),那么請(qǐng)求和回應(yīng)隊(duì)列和PGA的一些內(nèi)容保存在SGA中。
初始化參數(shù):SGA_MAX_SIZE
SGA由多個(gè)內(nèi)存組件組成,這些內(nèi)存是池化的,滿足特定類型的內(nèi)存分配需求。內(nèi)存組件的例子包括共享池(用來對(duì)執(zhí)行的SQL和PL/SQL分配內(nèi)存)、Java池(Java對(duì)象和其他Java執(zhí)行需要的內(nèi)存)、高速緩存(buffer cache,用來緩存磁盤塊)。所有的SGA組件按照一個(gè)固定的單位(顆粒,granules)來分配和釋放空間。Oracle數(shù)據(jù)庫(kù)使用針對(duì)每個(gè)SGA組件使用內(nèi)部的顆粒數(shù)量來跟蹤SGA內(nèi)存。
顆粒尺寸由整體SGA大小決定。在大多數(shù)平臺(tái),如果總體SGA尺寸小于1GB,顆粒大小為4M,更大的SGA顆粒尺寸是16M。某些平臺(tái)會(huì)略有不同。例如,在32位的windows平臺(tái)上,SGA尺寸大于1G時(shí),顆粒大小為8M。
Oracle可以設(shè)置數(shù)據(jù)庫(kù)SGA使用的虛擬內(nèi)存的大小。它可以按最小內(nèi)存啟動(dòng)實(shí)例,允許實(shí)例通過擴(kuò)展SGA組件的內(nèi)存分配來使用更多的內(nèi)存,直到達(dá)到初始化參數(shù)SGA_MAX_SIZE的限制為止。如果初始化參數(shù)文件或服務(wù)器參數(shù)文件(SPFILE)定義的SGA_MAX_SIZE小于所有組件分配的內(nèi)存之和(可以顯式在參數(shù)文件中指定或者默認(rèn)指定),這時(shí)候?qū)嵗梢猿跏蓟?,而?shù)據(jù)庫(kù)忽略SGA_MAX_SIZE的設(shè)定。
對(duì)大部分系統(tǒng)的性能優(yōu)化來說,整個(gè)SGA應(yīng)該都在實(shí)際內(nèi)存中。如果做不到,而SGA的一部分使用的虛擬內(nèi)存,然后數(shù)據(jù)庫(kù)系統(tǒng)的整體性能可能迅速下降。原因在于SGA的一部分被操作系統(tǒng)換頁(yè)(在磁盤上讀寫)。SGA中分配給所有共享區(qū)域的內(nèi)存數(shù)量也對(duì)性能有影響。
SGA的尺寸由多個(gè)初始化參數(shù)指定。下列參數(shù)對(duì)于SGA尺寸影響很大:
參數(shù)
描述
DB_CACHE_SIZE
標(biāo)準(zhǔn)塊的緩存尺寸
LOG_BUFFER
重做日志緩存分配的字節(jié)
SHARED_POOL_SIZE
專門用于共享SQL和PL/SQL語(yǔ)句的區(qū)域字節(jié)數(shù)
LARGE_POOL_SIZE
大池的尺寸,默認(rèn)為0
JAVA_POOL_SIZE
Java池大小
自動(dòng)共享內(nèi)存管理(Automatic Shared Memory Management)
在以前的數(shù)據(jù)庫(kù)版本中,數(shù)據(jù)庫(kù)管理員(DBA)通過設(shè)置一系列初始化參數(shù)(包括SHARED_POOL,DB_CACHE_SIZE,JAVA_POOL_SIZE和LARGE_POOL_SIZE)來手工指定不同的SGA組件尺寸。Oracle 10g數(shù)據(jù)庫(kù)包含自動(dòng)共享內(nèi)存管理特性,它顯著的簡(jiǎn)化了SGA內(nèi)存管理。在Oracle 10g數(shù)據(jù)庫(kù)中,一個(gè)數(shù)據(jù)庫(kù)管理員可以使用初始化參數(shù)SGA_TARGET參數(shù)來指定實(shí)例的SGA內(nèi)存總量,Oracle數(shù)據(jù)庫(kù)可以在多個(gè)組件中自動(dòng)分布內(nèi)存,確保有效使用內(nèi)存。
當(dāng)啟用了自動(dòng)SGA內(nèi)存管理,不同的SGA組件的尺寸是動(dòng)態(tài)變化的,可以適合工作負(fù)載的需要而不需要額外的配置。數(shù)據(jù)庫(kù)根據(jù)需要自動(dòng)在多個(gè)組件之間分布可用內(nèi)存,允許系統(tǒng)最大化使用所有可用SGA內(nèi)存。
考慮在SGA可用內(nèi)存為1GB時(shí)手工配置,使用如下初始化參數(shù)分布:
SHARED_POOL_SIZE=128M
DB_CACHE_SIZE=896M
如果一個(gè)應(yīng)用試圖對(duì)共享池分配多于128M的內(nèi)存,會(huì)產(chǎn)生一個(gè)錯(cuò)誤提示可用共享內(nèi)存已經(jīng)耗盡了。在數(shù)據(jù)庫(kù)高速緩存中可能還有空閑的內(nèi)存,但是這些內(nèi)存不能被共享池使用。你不得不手工重新調(diào)整高速緩存(buffer cache)和共享池(shared pool)來解決這個(gè)問題。
通過自動(dòng)SGA管理,你可以簡(jiǎn)單的設(shè)置初始化參數(shù)SGA_TARGET為1G。如果應(yīng)用需要更多的共享池內(nèi)存,它可以從高速緩存(buffer cache)中獲得空閑的內(nèi)存。
設(shè)置一個(gè)簡(jiǎn)單的參數(shù)可以大大簡(jiǎn)化管理員工作。你只需要指定實(shí)例可用的SGA內(nèi)存總量,不用考慮單獨(dú)組件的大小設(shè)置。只要系統(tǒng)事實(shí)上沒有耗盡內(nèi)存,就不會(huì)產(chǎn)生內(nèi)存錯(cuò)誤。
自動(dòng)SGA管理可以提高負(fù)載性能,而不需要額外的資源和手工的調(diào)整。使用SGA手工配置,可能因?yàn)閮?nèi)存不足,造成編譯的SQL語(yǔ)句從共享池中頻繁老化(即清理出共享池)。這會(huì)導(dǎo)致頻繁硬解析,導(dǎo)致性能降低。當(dāng)自動(dòng)SGA管理啟用時(shí),一個(gè)內(nèi)部機(jī)制會(huì)監(jiān)控負(fù)載性能,如果它認(rèn)為提升共享池尺寸可以降低需要的解析數(shù)量,就會(huì)提升共享池尺寸。
初始化參數(shù)SGA_TARGET
SGA_TARGET初始化參數(shù)影響整個(gè)SGA尺寸,包括下列組件的內(nèi)存:
u 固定SGA和其他Oracle數(shù)據(jù)庫(kù)實(shí)例需要的內(nèi)部分配
u 日志緩存(log buffer)
u 共享池(shared pool)
u Java池(Java pool)
u 高速緩存(buffer cache)
u 保存池和循環(huán)池緩存(keep and recycle buffer caches,如果指定的話)
u 非標(biāo)準(zhǔn)塊尺寸的高速緩存(如果指定的話)
u 流池(Streams pool)
SGA_TARGET包含SGA的全部?jī)?nèi)存是有重大意義的,和以前的發(fā)布版本比較,內(nèi)部和固定SGA加入SGA內(nèi)存配置參數(shù)的總和中。因而SGA_TARGET可以讓你精確控制數(shù)據(jù)庫(kù)分配給共享內(nèi)存區(qū)域的大小。如果啟動(dòng)時(shí)SGA_TARGET設(shè)置值大于SGA_MAX_SIZE,然后后者會(huì)根據(jù)SGA_TARGET調(diào)整。
注意:不能動(dòng)態(tài)設(shè)置和取消SGA_TARGET參數(shù)。只有在實(shí)例啟動(dòng)時(shí)設(shè)置。
自動(dòng)管理SGA組件
當(dāng)你設(shè)置SGA_TARGET值時(shí),Oracle 10g數(shù)據(jù)庫(kù)自動(dòng)定義大多數(shù)通用配置組件的尺寸,包括:
u 共享池(SQL和PL/SQL執(zhí)行)
u Java池(Java執(zhí)行區(qū)域)
u 大池(大的內(nèi)存分配,如RMAN備份緩存)
u 高速緩存(buffer cache)
u 流池
你不需要顯式的設(shè)置這些組件的大小。默認(rèn)這些組件的相關(guān)參數(shù)的值都為0。無論何時(shí)一個(gè)組件需要內(nèi)存,另一個(gè)組件根據(jù)內(nèi)部自動(dòng)調(diào)整機(jī)制傳輸一部分內(nèi)存給它。內(nèi)存?zhèn)鬏斒峭耆该鞯?,不需要用戶干預(yù)。
Oracle數(shù)據(jù)庫(kù)實(shí)例監(jiān)控每個(gè)自動(dòng)改變尺寸的組件的性能。實(shí)例使用內(nèi)部視圖和統(tǒng)計(jì)信息來確定在這些組件之間如何分布內(nèi)存最優(yōu)。當(dāng)負(fù)載改變時(shí),內(nèi)存會(huì)重新分布來確保最優(yōu)性能。為了計(jì)算最優(yōu)的內(nèi)存分布,數(shù)據(jù)庫(kù)使用一種機(jī)制同時(shí)考慮長(zhǎng)期和短期趨勢(shì)。
手工管理SGA組件
有些SGA組件的尺寸是不能自動(dòng)調(diào)整。如果應(yīng)用需要的話,管理員需要顯式的指定這些組件的大小。這些組件是:
u 緩存保持池和循環(huán)池(DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE控制)
u 非標(biāo)準(zhǔn)塊大小的額外高速緩存(參數(shù)DB_nK_CACHE_SIZE,n={2,4,8,16,32})
這些組件的大小由管理員定義對(duì)應(yīng)的參數(shù)值來確定。這些值當(dāng)然可以在任何時(shí)候通過企業(yè)管理器或者ALTER SYSTEM語(yǔ)句在命令行改變。
手工指定大小的組件消耗的內(nèi)存減少了自動(dòng)調(diào)整的可用內(nèi)存量。例如,在下面的配置中:
SGA_TARGET = 256M
DB_8K_CACHE_SIZE = 32M
這個(gè)實(shí)例只有224M(256-32)可以用來在自動(dòng)調(diào)整組件之間分布內(nèi)存。
自動(dòng)調(diào)整值的持久性
如果你使用服務(wù)器參數(shù)文件(SPFILE),即使關(guān)閉重啟,Oracle數(shù)據(jù)庫(kù)也會(huì)記住自動(dòng)調(diào)整組件的大小。因此,系統(tǒng)不需要在實(shí)例重啟時(shí)再次學(xué)習(xí)負(fù)載的規(guī)格參數(shù)。它可以從上一個(gè)實(shí)例的信息開始,并可以從上次關(guān)閉的中斷繼續(xù)評(píng)估負(fù)載。
跟蹤組件大小和增加顆粒
數(shù)據(jù)庫(kù)管理員使用ALTER SYSTEM語(yǔ)句來修改相關(guān)組件的初始化參數(shù)值來擴(kuò)張SGA一個(gè)組件的使用。Oracle數(shù)據(jù)庫(kù)將新值轉(zhuǎn)換為最近的16MB的整數(shù)倍,進(jìn)而增加和減少顆粒來達(dá)到目的值。數(shù)據(jù)庫(kù)必須有足夠的空閑顆粒才滿足需求。只要SGA內(nèi)存的當(dāng)前值小于SGA_MAX_SIZE,數(shù)據(jù)庫(kù)就可以分配更多的顆粒,直到SGA尺寸達(dá)到SGA_MAX_SIZE為止。
SGA中每個(gè)組件當(dāng)前使用的顆粒值可以在視圖V$SGAINFO中顯示。每個(gè)組件大小和上次重定義組件大小的操作時(shí)間和類型可以在V$SGA_DYNAMIC_COMPONENTS視圖中看到。數(shù)據(jù)庫(kù)保存最近400次修改SGA組件的操作。你可以在視圖V$SGA_RESIZE_OPS中看到這些緩存的循環(huán)。
注意:如果你指定一個(gè)組件尺寸不是顆粒大小的倍數(shù),然后Oracle增加指定大小到最近的倍數(shù)。例如,如果顆粒大小是4MB,你指定了DB_CACHE_SIZE為10MB,你最終被分配的是12MB。
數(shù)據(jù)庫(kù)高速緩存(buffer cache)
數(shù)據(jù)庫(kù)高速緩存是SGA的一部分,保存從數(shù)據(jù)文件讀取的數(shù)據(jù)塊的拷貝。所有并發(fā)訪問實(shí)例的用戶共享訪問數(shù)據(jù)庫(kù)高速緩存。
數(shù)據(jù)庫(kù)高速緩存和共享SQL緩存邏輯上分為多個(gè)集合。組織為多個(gè)集合降低了多處理器環(huán)境的爭(zhēng)用。
數(shù)據(jù)庫(kù)高速緩存的組織
高速緩存分為兩個(gè)列表:寫列表和最近最少使用列表(LRU)。寫列表保存臟緩存,這部分包含已經(jīng)修改了但是還沒有寫入磁盤的數(shù)據(jù)。LRU列表保存空閑緩存、釘住緩存、還沒有移入寫列表的臟緩存??臻e緩存不包含任何有用數(shù)據(jù),是可用的。釘住緩存是當(dāng)前訪問的緩存。
當(dāng)Oracle進(jìn)程訪問一個(gè)緩存,進(jìn)程會(huì)將緩存移動(dòng)到LRU列表的最近經(jīng)常使用端。隨著更多的緩存移動(dòng)到LRU列表的最近經(jīng)常使用端,臟塊順著LRU列表的最近最少使用端老化。
當(dāng)Oracle用戶進(jìn)程第一次請(qǐng)求一個(gè)特定的數(shù)據(jù),它先在數(shù)據(jù)庫(kù)高速緩存中查找數(shù)據(jù)。如果進(jìn)程發(fā)現(xiàn)數(shù)據(jù)已經(jīng)在緩存中(cache hit),它可以直接從內(nèi)存中讀取數(shù)據(jù)。如果進(jìn)程不能在緩存中找到數(shù)據(jù)(cache miss),它必須從磁盤上的數(shù)據(jù)文件拷貝數(shù)據(jù)塊到緩存中,然后才能訪問數(shù)據(jù)。通過Cache hit訪問數(shù)據(jù)比Cache miss訪問要快的多。
在讀取數(shù)據(jù)塊到緩存之前,進(jìn)程必須首先找到空閑的緩存。進(jìn)程搜索LRU列表,從最近經(jīng)常使用端開始搜索。進(jìn)程或者找到空閑的緩存,或者達(dá)到緩存的閥值限制為止。
如果用戶進(jìn)程在搜索LRU列表找到一個(gè)臟緩存,它移動(dòng)緩存到寫列表,然后繼續(xù)搜索。當(dāng)進(jìn)程找到空閑緩存時(shí),它將磁盤上的數(shù)據(jù)塊讀取到緩存中,并移動(dòng)這個(gè)緩存到LRU列表的最近經(jīng)常使用端。
如果一個(gè)Oracle用戶進(jìn)程查找達(dá)到緩存閥值限制也沒有知道空閑緩存,進(jìn)程停止搜索LRU列表,給DBW0后臺(tái)進(jìn)程發(fā)信號(hào)將某些臟塊寫入磁盤。
LRU策略和全表掃描
當(dāng)用戶進(jìn)程執(zhí)行一個(gè)全表掃描,它讀取表的塊到緩存中,并將它們放到LRU列表的LRU端(而不是MRU端)。這是因?yàn)橐粋€(gè)全表掃描通常只有少數(shù)情況下才需要,所以塊應(yīng)該快速?gòu)木彺嬷幸瞥粝赂嗟目臻g給經(jīng)常使用的塊。
你可以控制基于表掃描的表塊的默認(rèn)行為。在表或聚集創(chuàng)建時(shí)使用CACHE子句就可以指定表塊在全表掃描期間放置在LRU列表的MRU端。你可以對(duì)經(jīng)常查找的小表或者大的靜態(tài)歷史表指定這種行為來在順序訪問表時(shí)減少I/O。
數(shù)據(jù)庫(kù)高速緩存的大小
Oracle支持一個(gè)數(shù)據(jù)庫(kù)中多個(gè)塊大小。SYSTEM表空間使用的是標(biāo)準(zhǔn)塊大小。你可以通過設(shè)定初始化參數(shù)DB_BLOCK_SIZE來指定標(biāo)準(zhǔn)塊大小。合法塊大小為2K到32K。
如果需要的話,你可以設(shè)置兩個(gè)額外的緩沖池,通過DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE來設(shè)置保持(KEEP)和循環(huán)(RECYCLE)池。這3個(gè)參數(shù)是相互獨(dú)立的。
非標(biāo)準(zhǔn)塊大小的緩存的尺寸和數(shù)量可以通過下列參數(shù)指定:
DB_2K_CACHE_SIZE
DB_4K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
DB_32K_CACHE_SIZE
每個(gè)參數(shù)指定了對(duì)應(yīng)塊大小的緩存尺寸。
設(shè)置塊和緩存大小的例子
DB_BLOCK_SIZE=4096
DB_CACHE_SIZE=1024M
DB_2K_CACHE_SIZE=256M
DB_8K_CACHE_SIZE=512M
在前面的例子中,參數(shù)DB_BLOCK_SIZE設(shè)置了數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)塊大小為4K。標(biāo)準(zhǔn)塊大小的緩存大小為1024M。另外,2K和8K塊的緩存也定義了,分別為256MB和512MB。
注意:DB_nK_CACHE_SIZE參數(shù)不能用于標(biāo)準(zhǔn)塊大小的緩存大小的設(shè)置。如果參數(shù)DB_BLOCK_SIZE的值是nK,設(shè)置DB_nK_CACHE_SIZE是非法的。標(biāo)準(zhǔn)塊的緩存大小總是由DB_CACHE_SIZE的值指定。
緩存有一個(gè)限制值,所以不是所有磁盤上的數(shù)據(jù)都能放到緩存中。當(dāng)緩存充滿時(shí),隨后的cache miss會(huì)導(dǎo)致Oracle將緩存中存在的臟塊寫入磁盤,騰出空間來容納新的數(shù)據(jù)。(如果一段緩存不臟,那么在新塊讀入緩存之前不需要將其寫入到磁盤)。隨后對(duì)于已經(jīng)寫入磁盤的任何數(shù)據(jù)的訪問都會(huì)導(dǎo)致cache miss。
緩存的大小會(huì)影響以cache hit方式訪問數(shù)據(jù)的可能性。如果Cache很大,它更可能包含需要訪問的數(shù)據(jù)。提高Cache的尺寸會(huì)提高cache hit訪問數(shù)據(jù)的百分比。
你可以在實(shí)例運(yùn)行時(shí)修改buffer cache的大小,而不需要關(guān)閉數(shù)據(jù)庫(kù)。修改bufer cache大小可以使用ALTER SYSTEM語(yǔ)句。更多的信息,可以參考“控制SGA的內(nèi)存使用”。
使用固定視圖V$BUFFER_POOL來跟蹤不同cache組件的大小和任何將要發(fā)生的重新定義大小的操作。
多個(gè)緩沖池
你可以使用幾個(gè)緩沖池來定義數(shù)據(jù)庫(kù)buffer cache,這些緩沖池可以讓數(shù)據(jù)保存在buffer cache中或者數(shù)據(jù)塊在緩存中只保存一次(使用之后就清除,留給新數(shù)據(jù)使用)。特定的模式對(duì)象(表、聚集、索引和分區(qū))可以分配合適的緩沖池來控制它們的數(shù)據(jù)庫(kù)在cache中如何老化:
u KEEP緩沖池:在內(nèi)存中保持模式對(duì)象的數(shù)據(jù)塊
u RECYCLE緩沖池:立即清理不再使用的數(shù)據(jù)塊出內(nèi)存
u DEFAULT緩沖池:包含沒有分配任何緩沖池的模式對(duì)象的數(shù)據(jù)塊,和顯式分配到DEFAULT緩沖池的模式對(duì)象一樣處理。
配置KEEP和RECYCLE緩沖池的初始化參數(shù)是DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE。
注意:多緩沖池只對(duì)標(biāo)準(zhǔn)塊有效,非標(biāo)準(zhǔn)塊Cache只有一個(gè)DEFAULT池。
重做日志緩存
重做日志緩存是SGA中保存數(shù)據(jù)庫(kù)的修改信息的循環(huán)緩存。這些信息是重做條目。重做條目包含由INSERT、UPDATE、DELETE、CREATE、ALTER或DROP操作造成的修改的重構(gòu)或者重做信息。重做條目必要時(shí)可以用于數(shù)據(jù)庫(kù)恢復(fù)。
重做記錄由Oracle數(shù)據(jù)庫(kù)進(jìn)程從用戶的內(nèi)存空間拷貝到SGA的重做日志緩沖中。重做記錄在緩存中按照順序保存。后臺(tái)進(jìn)程LGWR將重做日志緩存寫入到磁盤上的當(dāng)前活動(dòng)的重做日志文件中(一組文件)。
初始化參數(shù)LOG_BUFFER指定了重做日志緩存的大小(字節(jié))。通常來說,大尺寸可以降低日志文件I/O,特別是長(zhǎng)事務(wù)或多個(gè)事務(wù)時(shí)。默認(rèn)值是512K和CPU數(shù)目乘以128K兩者的最大值。
共享池(Shared Pool)
共享池是SGA中的一部分,包含庫(kù)緩存、數(shù)據(jù)字典緩存、并行執(zhí)行消息的緩存、控制結(jié)構(gòu)。
共享池的大小由初始化參數(shù)SHARED_POOL_SIZE來指定。32位平臺(tái)的默認(rèn)值為8M,64位平臺(tái)的默認(rèn)值為64M。提高這個(gè)參數(shù)的大小可以提高共享池保留的內(nèi)存數(shù)量。
庫(kù)緩存
庫(kù)緩存包括共享SQL區(qū)域、私有SQL區(qū)域(在使用共享服務(wù)器的情況下)、PL/SQL過程和包、諸如鎖和庫(kù)緩存句柄的控制結(jié)構(gòu)。
共享SQL區(qū)域?qū)τ谒杏脩舳伎梢栽L問,所以庫(kù)緩存包含在SGA的共享池中。
共享SQL區(qū)域和私有SQL區(qū)域
Oracle中每個(gè)SQL語(yǔ)句在共享SQL區(qū)域和私有SQL區(qū)域中執(zhí)行。Oracle可以識(shí)別兩個(gè)用戶執(zhí)行的相同的SQL語(yǔ)句,并對(duì)于這些用戶重用共享SQL區(qū)域。但是每個(gè)用戶必須有語(yǔ)句私用SQL區(qū)域的一個(gè)拷貝。
共享SQL區(qū)域
一個(gè)共享SQL區(qū)域包含一個(gè)給定SQL語(yǔ)句的解析樹和執(zhí)行計(jì)劃。Oracle通過對(duì)多次使用的SQL語(yǔ)句使用同一個(gè)共享內(nèi)存區(qū)域來節(jié)省內(nèi)存,這種情況在多個(gè)用戶同時(shí)運(yùn)行一個(gè)應(yīng)用時(shí)經(jīng)常出現(xiàn)。
Oracle在一個(gè)SQL語(yǔ)句被解析后,就會(huì)從共享池分配內(nèi)存將其保存在共享SQL區(qū)域中。分配內(nèi)存的大小依賴于語(yǔ)句的復(fù)雜程度。當(dāng)整個(gè)共享池都被分配了,Oracle會(huì)使用一個(gè)改進(jìn)的LRU(最近最少使用)算法來從池中釋放一些條目,直到可以容納新語(yǔ)句的共享內(nèi)存區(qū)域?yàn)橹?。如果Oracle釋放了一個(gè)共享SQL區(qū)域,相關(guān)SQL語(yǔ)句下次執(zhí)行時(shí)必須重新解析和重新分配另外一塊共享SQL區(qū)域。
PL/SQL程序單位和共享池
Oracle執(zhí)行PL/SQL程序單位(過程、函數(shù)、包、匿名塊、數(shù)據(jù)庫(kù)觸發(fā)器)和處理單獨(dú)SQL語(yǔ)句方式類似。Oracle分配一個(gè)共享區(qū)域來保存程序單位的解析、編譯格式。Oracle還分配一個(gè)私有區(qū)域來保存運(yùn)行程序單位的會(huì)話的信息,包括正在執(zhí)行的SQL的本地、全局和包變量(也可以說是包實(shí)例)和緩存。如果多個(gè)用戶運(yùn)行同一個(gè)程序單位,那么所有用戶使用同一個(gè)共享區(qū)域,而每個(gè)用戶保存他或者她的私有SQL區(qū)域的一個(gè)單獨(dú)拷貝,這里保存著他或她的會(huì)話信息。
PL/SQL程序單位里面的單獨(dú)SQL語(yǔ)句處理起來和前一部分描述的一樣。不管它們是否來源于PL/SQL程序單位,這些SQL語(yǔ)句使用一個(gè)共享區(qū)域來保存它們的解析樹,每個(gè)語(yǔ)句使用一個(gè)私有區(qū)域來保存語(yǔ)句所在會(huì)話的信息。
數(shù)據(jù)字典緩存
數(shù)據(jù)字典是一些包含數(shù)據(jù)庫(kù)信息、數(shù)據(jù)庫(kù)結(jié)構(gòu)和用戶信息的表、視圖的集合。Oracle在SQL語(yǔ)句解析時(shí)經(jīng)常訪問數(shù)據(jù)字典。這個(gè)訪問對(duì)于Oracle持續(xù)運(yùn)行是必需的。
數(shù)據(jù)字典經(jīng)常訪問,所以O(shè)racle在內(nèi)存中分配了兩個(gè)區(qū)域來專門保存字典數(shù)據(jù)。一個(gè)區(qū)域叫做數(shù)據(jù)字典高速緩存,也叫做行高速緩存(因?yàn)樗4媪藬?shù)據(jù)行,而不是保存整個(gè)塊的數(shù)據(jù)的一個(gè)緩存)。另一個(gè)內(nèi)存區(qū)域是在庫(kù)高速緩存中保存數(shù)據(jù)字典數(shù)據(jù)的。所有的Oracle用戶進(jìn)程共享這兩個(gè)高速緩存(cache)來訪問數(shù)據(jù)字典信息。
共享池中內(nèi)存的釋放和重新使用
通常來說,共享池中的任何條目(共享SQL區(qū)域或者字典行)都一直保持,除非通過改進(jìn)的LRU算法清理出去。如果共享池必須為新的條目分配空間時(shí),不再經(jīng)常使用的內(nèi)存條目就會(huì)被釋放。一個(gè)改進(jìn)的LRU算法允許被很多會(huì)話使用的共享池條目只要是有用的,就一直保存在內(nèi)存中,即使創(chuàng)建這個(gè)條目的原始進(jìn)程結(jié)束也是如此。因此一個(gè)多用戶Oracle系統(tǒng)的SQL語(yǔ)句處理和開銷是非常小的。
當(dāng)一個(gè)SQL語(yǔ)句提交給Oracle來執(zhí)行時(shí),Oracle自動(dòng)執(zhí)行下列的內(nèi)存分配步驟:
1、Oracle檢查共享池來看共享內(nèi)存區(qū)域是否已經(jīng)存在相同的語(yǔ)句。如果找到了,共享內(nèi)存區(qū)域就被隨后執(zhí)行的語(yǔ)句實(shí)例使用。如果沒有這個(gè)語(yǔ)句的共享SQL區(qū)域,Oracle會(huì)在共享池中分配一個(gè)共享SQL區(qū)域。任一情況下,都會(huì)創(chuàng)建對(duì)應(yīng)共享SQL區(qū)域的私有SQL區(qū)域。
注意:共享內(nèi)存區(qū)域能夠從共享池中清除,甚至對(duì)應(yīng)于一個(gè)一段時(shí)間不再使用的打開的游標(biāo)對(duì)應(yīng)的共享SQL區(qū)域也是如此。如果這個(gè)游標(biāo)隨后被調(diào)用而需要運(yùn)行它的語(yǔ)句,Oracle重新解析語(yǔ)句,共享池分配一個(gè)新的共享SQL區(qū)域。
2、Oracle基于會(huì)話分配一個(gè)私有SQL區(qū)域。私有SQL區(qū)域的位置依賴于構(gòu)成連接的會(huì)話的類型。
Oracle還在這些情況下從共享池中清理共享SQL區(qū)域:
u 當(dāng)使用ANALYZE語(yǔ)句來更新或者刪除表、聚集、索引的統(tǒng)計(jì)信息,所有包含分析的模式對(duì)象對(duì)應(yīng)的共享SQl區(qū)域會(huì)被從共享池中清理出去。清理出去的語(yǔ)句下一次運(yùn)行時(shí),語(yǔ)句在新的共享SQL區(qū)域中分析來反映模式對(duì)象的新的統(tǒng)計(jì)信息。
u 如果SQL語(yǔ)句引用的模式對(duì)象最近被修改過結(jié)構(gòu),共享SQL區(qū)域就是無效的(標(biāo)識(shí)為無效),下次語(yǔ)句執(zhí)行時(shí)必須被重新解析。
u 如果你修改了數(shù)據(jù)庫(kù)的全局?jǐn)?shù)據(jù)庫(kù)名字,共享池的所有信息都被清理出去
u 管理員可以手工的清除共享池的所有信息來在不需要關(guān)閉當(dāng)前實(shí)例的情況評(píng)估性能。ALTER SYSTEM FLUSH SHARED_POOL語(yǔ)句就是用來干這個(gè)的。
大池
數(shù)據(jù)庫(kù)管理員可以配置一個(gè)可選的內(nèi)存區(qū)域(叫做大池)來為下列情況提供大內(nèi)存分配:
u 共享服務(wù)器和Oracle XA接口(多個(gè)數(shù)據(jù)庫(kù)交互的事務(wù)會(huì)用到)
u I/O服務(wù)器進(jìn)程
u Oracle備份和恢復(fù)操作
通過在大池中為共享服務(wù)器、Oracle XA或者并發(fā)查詢緩存分配內(nèi)存,Oracle可以使用共享池集中緩存共享SQL,避免收縮共享SQL緩存導(dǎo)致性能瓶頸。
另外,Oracle備份和恢復(fù)操作、I/O服務(wù)器進(jìn)程、并發(fā)緩存需要分配的緩存可能達(dá)幾百M(fèi)B,大池比共享池更適合這樣大內(nèi)存請(qǐng)求。
大池并沒有LRU列表。它和共享池的備用區(qū)域不同,這個(gè)區(qū)域和其他共享池中的內(nèi)存分配一樣使用了LRU列表。
Java池
Java池內(nèi)存是JVM內(nèi)的所有會(huì)話級(jí)別的Java代碼和數(shù)據(jù)使用的服務(wù)器內(nèi)存。Java池內(nèi)存使用方式依賴于Oracle服務(wù)器的運(yùn)行模式。
Java池顧問統(tǒng)計(jì)提供了Java使用的庫(kù)緩存信息,推測(cè)Java池如何變化能影響的解析比例。Java池顧問在statistics_level設(shè)置為TYPICAL或者更高時(shí)內(nèi)部開啟。如果顧問關(guān)閉,統(tǒng)計(jì)信息復(fù)位。
流池
在一個(gè)單獨(dú)數(shù)據(jù)庫(kù)中,你可以聲明一個(gè)流池,流池是從SGA中的一個(gè)池中分配一個(gè)流內(nèi)存。要配置流池的話,使用初始化參數(shù)STREAMS_POOL_SIZE來指定池的大?。ㄗ止?jié)數(shù))。如果流池沒有定義,那么流第一次使用時(shí)會(huì)自動(dòng)創(chuàng)建。
如果設(shè)置了SGA_TARGET,那么SGA內(nèi)存中流池來源于SGA的全局池。如果沒有設(shè)置SGA_TARGET,然后SGA的流池從其他高速緩存中分配。這個(gè)分配只發(fā)生在第一次使用流時(shí),分配量是共享池大小的10%。
控制SGA的內(nèi)存使用
動(dòng)態(tài)SGA提供了對(duì)于增加和減少Oracle物理內(nèi)存使用的更多控制。包括動(dòng)態(tài)buffer cache、共享池和大池,動(dòng)態(tài)SGA允許下列情況:
u SGA可以根據(jù)數(shù)據(jù)庫(kù)管理員語(yǔ)句增長(zhǎng),上限為操作系統(tǒng)最大內(nèi)存和SGA_MAX_SIZE的值。
u SGA可以根據(jù)數(shù)據(jù)庫(kù)管理員語(yǔ)句收縮,下限為Oracle預(yù)定義最小值,通常是操作系統(tǒng)限制優(yōu)先。
u SGA池和buffer cache都可以在運(yùn)行時(shí)根據(jù)Oracle管理策略的一些內(nèi)部機(jī)制來增長(zhǎng)和收縮。
其他SGA初始化參數(shù)
你可以使用多個(gè)初始化參數(shù)來控制SGA任何使用內(nèi)存。
物理內(nèi)存
LOCK_SGA參數(shù)將SGA鎖定在物理內(nèi)存中(即SGA只使用物理內(nèi)存)
SGA開始地址
參數(shù)SHARED_MEMORY_ADDRESS和HI_SHARED_MEMORY_ADDRESS指定了SGA運(yùn)行時(shí)的開始地址。這些參數(shù)很少使用。在64位平臺(tái)上,HI_SHARED_MEMORY_ADDRESS指定了64位地址的高32位地址。
擴(kuò)展Buffer Cache機(jī)制
參數(shù)USE_INDIRECT_DATA_BUFFERS對(duì)32位平臺(tái)啟用擴(kuò)展bufer cache機(jī)制,這樣就可以支持多于4G的物理內(nèi)存。在不支持那么多物理內(nèi)存的平臺(tái)上,忽略這個(gè)參數(shù)。
程序全局區(qū)概述(PGA)
程序全局區(qū)(PGA)是一個(gè)包含服務(wù)器進(jìn)程的數(shù)據(jù)和控制信息的內(nèi)存區(qū)域。這是Oracle服務(wù)進(jìn)程啟動(dòng)時(shí)創(chuàng)建的非共享內(nèi)存。它是這個(gè)服務(wù)器專用的內(nèi)存,只能由Oracle代碼代表它讀寫。一個(gè)Oracle實(shí)例的每個(gè)服務(wù)器進(jìn)程分配的PGA內(nèi)存總和也叫做實(shí)例分配的聚集PGA內(nèi)存。
PGA的目錄
PGA的內(nèi)存條目針對(duì)是否啟用了共享服務(wù)器而不同。但通常來說,PGA內(nèi)存可以按照以下分類:
私有SQL區(qū)域
私有SQL區(qū)域包含綁定信息和運(yùn)行時(shí)內(nèi)存結(jié)構(gòu)。每個(gè)執(zhí)行SQL語(yǔ)句的會(huì)話都有一個(gè)私有SQL區(qū)域。每個(gè)提交相同SQL語(yǔ)句的用戶都有他或她自己的私有SQL區(qū)域,并且共享同一個(gè)共享SQL區(qū)域。因而,一個(gè)共享SQL區(qū)域可以對(duì)應(yīng)于多個(gè)私有SQL區(qū)域。
一個(gè)游標(biāo)的私有SQL區(qū)域分成兩個(gè)部分,它們的生命周期不同:
u 持久區(qū)域,包括諸如綁定信息。在游標(biāo)關(guān)閉時(shí)釋放
u 運(yùn)行時(shí)區(qū)域,只有在執(zhí)行結(jié)束時(shí)釋放。
Oracle在執(zhí)行請(qǐng)求的第一步創(chuàng)建運(yùn)行時(shí)區(qū)域。對(duì)于INSERT、UPDATE、DELETE語(yǔ)句,Oracle在語(yǔ)句運(yùn)行之后釋放運(yùn)行時(shí)區(qū)域。對(duì)于查詢來說,Oracle只有在所有行都獲取之后或者查詢被取消之后才會(huì)釋放運(yùn)行時(shí)區(qū)域。
私有SQL區(qū)域的位置依賴于創(chuàng)建會(huì)話的連接類型。如果會(huì)話通過專用服務(wù)器連接,私有SQL區(qū)域位于服務(wù)器進(jìn)程的SGA中。但是,如果會(huì)話通過共享服務(wù)器連接,私有SQL區(qū)域的一部分保存在SGA中。
游標(biāo)和SQL區(qū)域
Oracle預(yù)編譯程序或者OCI程序的應(yīng)用開發(fā)人員可以顯示的打開具體的私有SQL區(qū)域的游標(biāo)或句柄,在程序執(zhí)行期間像一個(gè)命名資源那樣使用它們。Oracle隱式執(zhí)行的一些SQL語(yǔ)句的遞歸游標(biāo)也使用共享SQL區(qū)域。
私有SQL區(qū)域的管理是用戶進(jìn)程的責(zé)任。雖然一個(gè)用戶進(jìn)程可以分配的私有SQL區(qū)域數(shù)量總是由初始化參數(shù)OPEN_CURSORS限制,但私有SQL區(qū)域的分配和釋放很大程度上依賴于你使用的應(yīng)用程序工具。這個(gè)參數(shù)的默認(rèn)值為50.
一個(gè)私有SQL區(qū)域一直存在,除非對(duì)應(yīng)的游標(biāo)關(guān)閉或者語(yǔ)句句柄被釋放。Oracle在語(yǔ)句完成時(shí)釋放了運(yùn)行時(shí)區(qū)域,但持久性區(qū)域還保持等待狀態(tài)。應(yīng)用開發(fā)人員需要管理所有的不再使用的打開游標(biāo)來釋放持久性區(qū)域和最小化應(yīng)用程序用戶需要的內(nèi)存數(shù)量。
會(huì)話內(nèi)存
會(huì)話內(nèi)存是一個(gè)保存會(huì)話變量(登陸信息)和其他會(huì)話相關(guān)信息的內(nèi)存。對(duì)于共享服務(wù)器,會(huì)話內(nèi)存是共享的,而不是私有的。
SQL工作區(qū)域
對(duì)于復(fù)雜的查詢(例如決策支持查詢),運(yùn)行時(shí)區(qū)域的一大部分用于內(nèi)存密集型操作符分配的工作區(qū)域,例如:
u 排序操作符(order by,group-by,rollup,window,function)
u 哈希關(guān)聯(lián)
u 位圖合并
u 位圖創(chuàng)建
例如,一個(gè)排序操作符使用一個(gè)工作區(qū)域(有時(shí)叫做排序區(qū)域)來執(zhí)行一系列行在內(nèi)存中的排序。類似的,哈希關(guān)聯(lián)操作符使用一個(gè)工作區(qū)域(也叫做Hash區(qū)域)來從它的左輸入來構(gòu)建hash表。如果這兩個(gè)操作符操作的數(shù)據(jù)量不能都放在工作區(qū)域中,然后輸入數(shù)據(jù)會(huì)分成更小的一些片。這導(dǎo)致某些數(shù)據(jù)片在內(nèi)存中處理,而剩下的部分放在臨時(shí)磁盤存儲(chǔ)上,等待后續(xù)執(zhí)行。雖然位圖操作符在它們工作區(qū)太小時(shí)不會(huì)溢出到磁盤,但是它們的復(fù)雜程度和工作區(qū)域的大小成反比。因而,這些操作符在大工作區(qū)域中運(yùn)行起來更快。
工作區(qū)域的大小可以控制和調(diào)整。通常,大數(shù)據(jù)庫(kù)區(qū)域可以提高特定的大量消耗內(nèi)存的操作符的性能。理想情況下,工作區(qū)大小應(yīng)該足夠容納輸入數(shù)據(jù)和相關(guān)SQL操作符分配的輔助存儲(chǔ)結(jié)構(gòu)。如果做不到,會(huì)增加反應(yīng)時(shí)間,因?yàn)檩斎霐?shù)據(jù)的一部分必須溢出到臨時(shí)磁盤存儲(chǔ)上。在極端情況下,如果工作區(qū)域相對(duì)輸入數(shù)據(jù)來說太小,數(shù)據(jù)片必須多次裝入。這會(huì)出人意料的增加操作符的反應(yīng)時(shí)間。
專用服務(wù)器模式下的PGA內(nèi)存管理
你可以整體上自動(dòng)管理SQL工作區(qū)域的大小。數(shù)據(jù)庫(kù)管理員可以通過設(shè)置初始化參數(shù)PGA_AGGREGATE_TARGET來簡(jiǎn)化設(shè)置PGA內(nèi)存的總體尺寸的工作。指定值(例如 2G)是Oracle實(shí)例的總體值,Oracle視圖確保所有服務(wù)器進(jìn)程分配的PGA內(nèi)存總量不能超過這個(gè)值。
注意:在早期版本中,數(shù)據(jù)庫(kù)管理員通過下列參數(shù)控制SQL工作區(qū)域的最大值:SQL_AREA_SIZE,HASH_AREA_SIZE,BITMAP_MERGE_AREA_SIZE和CREATE_BITMAP_AREA_SIZE。設(shè)置這些參數(shù)是非常困難的,因?yàn)樽顑?yōu)的最大的工作區(qū)域大小要在數(shù)據(jù)輸入大小和系統(tǒng)中活動(dòng)的全部工作區(qū)域之間選擇。這兩個(gè)因素在工作區(qū)域之間和不同的時(shí)間段都會(huì)不同。因而,不同的*_AREA_SIZE參數(shù)在最好的情況下也很難調(diào)整。
通過PGA_AGGREGATE_TARGET,所有專用會(huì)話的工作區(qū)域的大小是自動(dòng)調(diào)整的,所有的*_AREA_SIZE都被忽略。在任何給定的時(shí)間內(nèi),實(shí)例中活動(dòng)的工作區(qū)域的總體PGA內(nèi)存數(shù)量自動(dòng)從參數(shù)PGA_AGGREGATE_TARGET中分配。這個(gè)數(shù)量是指PGA_AGGREGATE_TARGET減去系統(tǒng)其他組件分配的PGA內(nèi)存(例如,會(huì)話分配的PGA內(nèi)存)。剩下的PGA內(nèi)存為每個(gè)活動(dòng)工作區(qū)域根據(jù)他們需要的內(nèi)存分配給它們。
注意:初始化參數(shù)WORKAREA_SIZE_POLICY是一個(gè)會(huì)話和系統(tǒng)級(jí)別的參數(shù),只能有兩個(gè)值MANUAL和AUTO。默認(rèn)是AUTO。數(shù)據(jù)庫(kù)管理員可以設(shè)置PGA_AGGREGATE_TARGET,然后從自動(dòng)內(nèi)存管理模式轉(zhuǎn)回到手工內(nèi)存管理模式。
有些固定視圖和列可以提供PGA內(nèi)存的使用統(tǒng)計(jì)信息。在PGA_AGGEGATE_TARGET被設(shè)置時(shí),可以啟動(dòng)大部分統(tǒng)計(jì)信息。
u 工作區(qū)域內(nèi)存的分配和使用統(tǒng)計(jì)信息可以在下列動(dòng)態(tài)性能視圖中顯示:
V$SYSSTAT
V$SESSTAT
V$PGASTAT
V$SQL_WORKAREA
V$SQL_WORKAREA_ACTIVE
u 視圖V$PROCESS的下面三列報(bào)告了一個(gè)Oracle進(jìn)程分配和使用的PGA內(nèi)存:
PGA_USED_MEM
PGA_ALLOCATED_MEM
PGA_MAX_MEM
注意:自動(dòng)PGA內(nèi)存管理模式在共享和專用服務(wù)器下都可以分配工作區(qū)域。
專用和共享服務(wù)器
內(nèi)存分配在一些細(xì)節(jié)上依賴于是否使用了專用或者共享服務(wù)器架構(gòu)。表8-1顯示了其中的區(qū)別。
表8-1 共享和專用服務(wù)器中內(nèi)存分配的不同
內(nèi)存區(qū)域
專用服務(wù)器
共享服務(wù)器
會(huì)話內(nèi)存的種類
私有
共享
持久區(qū)域的位置
PGA
SGA
SELECT語(yǔ)句的運(yùn)行時(shí)區(qū)域的部分位置
PGA
PGA
DML/DDL語(yǔ)句的運(yùn)行時(shí)區(qū)域的位置
PGA
PGA
軟件代碼區(qū)域
軟件代碼區(qū)域是保存正在運(yùn)行或可以運(yùn)行的代碼的內(nèi)存區(qū)域。Oracle代碼保存在軟件代碼區(qū)域,它和用戶程序的位置不同,是更專用或更加保護(hù)的位置。
軟件區(qū)域大小通常是固定的,只有在軟件升級(jí)或者重新安裝時(shí)改變。這些區(qū)域需要的尺寸和操作系統(tǒng)有關(guān)。
軟件區(qū)域是只讀的,可以共享使用,也可以不共享使用。盡可能的情況下,Oracle代碼是共享的,所有的Oracle用戶都可以訪問,這樣內(nèi)存中就不用保存多份拷貝了。這樣可以節(jié)省物理內(nèi)存和提升總體性能。
用戶程序也可以共享,也可以不共享。某些Oracle工具和公共程序(如Oracle窗體和SQL *PLUS)可以共享,但某些不能。Oracle多個(gè)實(shí)例如果運(yùn)行在一臺(tái)機(jī)器上可以使用相同的Oracle代碼區(qū)域。
注意:共享軟件安裝的選項(xiàng)不是在所有的操作系統(tǒng)上都可用(例如,在PC的windows系統(tǒng)上)。
查看你的Oracle操作系統(tǒng)規(guī)格文檔來查找更多的信息。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
oracle內(nèi)存管理
oracle實(shí)例內(nèi)存(SGA和PGA)調(diào)整
對(duì)oracle實(shí)例的內(nèi)存(SGA和PGA)進(jìn)行調(diào)整,優(yōu)化數(shù)據(jù)庫(kù)性 - Net130.com
深入淺出Oracle學(xué)習(xí)筆記(4)
oracle server 包含 oracle instance 和 oracle database
Oracle之內(nèi)存結(jié)構(gòu)(SGA、PGA)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服