當前位置:首頁 » 操作系統 » 資料庫增大

資料庫增大

發布時間: 2023-05-10 07:33:35

① 當資料庫內存增大,sga會自動增大嗎

Oracle資料庫可以自動內存管理SGA的,所以不用擔心。具體可以參考一下,如有幫助請採納。
ASMM自動共享內存管理:
自動根據工作量變化調整
最大程度地提高內存利用率
有助於消除內存不足的錯誤
SYS@PROD>show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1G
sga_target big integer 1G
SYS@PROD>show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 0
memory_target big integer 0
shared_memory_address integer 0
SYS@PROD>show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 208M
ASMM 的工作原理 :
ASMM 以 MMON 在後台捕獲的工作量信息為基礎。
MMON 使用內存指導。
將內存移到 MMAN 最迫切需要的地方。
如果使用 SPFILE:在關閉時保存組件大小 、保存的值用於引導程序組件大小 、無需再確定最佳值
自動共享內存管理功能使用由以下兩個後台進程實施的 SGA 內存中介:可管理性監視器 (MMON) 和內存管理器 (MMAN)。MMON 定期將統計信息和內存指導數據捕獲到內存中。MMAN 根據 MMON 的決定調整內存組件的大小。SGA 內存中介會不斷跟蹤組件的大小和待處理的大小調整操作。
SGA 內存中介會觀察系統和工作量,以便確定理想的內存分配方案。SGA 內存中介每隔幾分鍾就執行一次這種檢查,使內存始終用在需要的地方。如果沒有自動共享內存管理功能,必須分別預計各組件在峰值時的內存需求,然後對其內存大小進行調整。
在工作量信息基礎上,自動共享內存管理功能會:
定期在後台捕獲統計信息
使用內存指導
進行假設分析,確定最佳內存分配方案
將內存移到最迫切需要的地方
如果使用了 SPFILE,則在關閉時保存組件大小(這些大小可以在最後一次關閉前重新起用)
啟用自動共享內存管理功能 :
要從手動共享內存管理模式下啟用 ASMM,請執行以下操作:
1.獲取 SGA_TARGET 的值:
SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;
2.使用該值設置 SGA_TARGET。
3.將自動設置大小的 SGA 組件的值設置為 0。
要從自動內存管理模式切換到 ASMM,請執行以下操作:
1.將初始化參數 MEMORY_TARGET 設置為 0。
2.將自動設置大小的 SGA 組件的值設置為 0。
自動優化的 SGA 參數的行為:
未設置 SGA_TARGET 或將其設置為 0 時:
自動優化的參數指定相應組件的實際大小
、可能需要增加 SHARED_POOL_SIZE
SELECT SUM(bytes)/1024/1024 size_mb FROM v$sgastat WHERE pool = 'shared pool';
SGA_TARGET 設置為非零值時:
自動優化的參數的默認值為零 、指定的值用作下限大小
SELECT component, current_size/1024/1024 size_mb FROM v$sga_dynamic_components;
手動優化的 SGA 參數的行為:
有些組件不能自動優化。
--DB_KEEP_CACHE_SIZE 和 DB_RECYCLE_CACHE_SIZE
--非標准塊大小的緩沖區高速緩存,DB_nK_CACHE_SIZE
--
LOG_BUFFER
這些組件必須使用資料庫參數手動配置。
這些組件使用的內存會減少可用於自動優化 SGA 的內存量。
修改 SGA_TARGET 參數 :
--是動態參數
--
最多可增大到 SGA_MAX_SIZE
--可以減小,直到所有組件都達到其下限大小為止
更改 SGA_TARGET 的值只會影響自動調整大小的組件
SGA_TARGET 是一個動態參數,可以通過 Database Control 或使用 ALTER SYSTEM 命令更改。

GA_MAX_SIZE 是可分配給 SGA 的內存量的上限。更改該值後,必須重新啟動資料庫才能生效。SGA_TARGET 最多可增大到 SGA_MAX_SIZE 值。它可以減小,直到任一自動優化的組件達到其下限大小:用戶指定的下限值或內部確定的下限值。
如果增大 SGA_TARGET 的值,則會根據自動優化策略在自動優化的組件之間分配增加的那部分內存。
如果減小 SGA_TARGET 的值,則這部分內存將按照自動優化策略從一個或多個自動優化的組件處提取。
假定 SGA_MAX_SIZE 設置為 10 GB,SGA_TARGET 設置為 8 GB。如果 DB_KEEP_CACHE_SIZE 設置為 1 GB,並且將 SGA_TARGET 增大為 9 GB,則增加的 1 GB 只會在 SGA_TARGET 控制的組件之間進行分配。DB_KEEP_CACHE_SIZE 的值不受影響。同樣,如果將 SGA_TARGET 減小到 7 GB,則這 1 GB 也只會從 SGA_TARGET 控制的那些組件中提取。這種減少並不會影響手動控制的參數(如 DB_KEEP_CACHE_SIZE)的設置。
禁用 ASMM :
將 SGA_TARGET 設置為 0 可禁用自動優化功能。
自動優化的參數設置為其當前大小。
SGA 大小總體上不受影響。
eg:
SGA_TARGET 的值為 8 GB,SHARED_POOL_SIZE 的值為 1 GB。如果系統將共享池組件的大小內部調整為 2 GB,則將 SGA_TARGET 設置為 0 會導致 SHARED_POOL_SIZE 被設置為 2 GB,從而覆蓋用戶定義的原始值。
手動調整動態 SGA 參數的大小
對於自動優化的參數,手動調整大小會:
導致組件大小立即調整(如果新值大於當前值) 、更改下限大小(如果新值小於當前大小)
調整手動優化的參數的大小隻會影響 SGA 的可調部分。
調整了自動優化的參數的大小並設置了 SGA_TARGET 值後,只有當新值大於組件的當前大小時,這種調整才會導致組件的大小立即發生更改。例如,如果將 SGA_TARGET 設置為 8 GB,將 SHARED_POOL_SIZE 設置為 2 GB,可確保共享池始終不小於 2 GB,以滿足必要的內存分配需求。之後,即使將 SHARED_POOL_SIZE 值調整為 1 GB,也不會對共享池的大小產生直接影響。只會使自動內存優化演算法以後可以將共享池大小減少到 1 GB(如果需要)。相反,如果共享池的大小最初設置為 1 GB,那麼將 SHARED_POOL_SIZE 值調整為 2 GB 時,共享池組件的大小會立即增加到 2 GB。此大小調整操作中使用的內存從一個或多個自動優化的組件中提取,手動優化的組件的大小不受影響。
手動調整大小的組件的參數也可以動態變更,但不同之處在於,參數的值會立即指定相應組件的精確大小。因此,如果手動調整的組件的大小增大,則增加的那部分內存將從一個或多個自動調整大小的組件處提取。如果手動調整的組件的大小減小,則釋放的內存將會提供給自動調整大小的組件。
程序全局區 (PGA)
程序全局區 (PGA) 是包含某伺服器進程的數據及控制信息的內存區。這是 Oracle 伺服器在伺服器進程啟動時創建的非共享內存,只有該伺服器進程才能訪問。由關聯到某個 Oracle 實例的所有伺服器進程分配的 PGA 總內存,也稱為該實例分配的聚集 PGA 內存。
使用共享伺服器時,部分 PGA 可位於 SGA 中。
PGA 內存通常包含以下各項:

專用 SQL 區:
專用 SQL 區包含綁定信息和運行時內存結構等數據。這些信息是每個會話的 SQL 語句調用所特有的;在其它方面,綁定變數有不同的值,游標的狀態也不同。發出 SQL 語句的每個會話都有一個專用 SQL 區。提交同一 SQL 語句的每個用戶也都有其自己的專用 SQL 區,該專用 SQL 區使用一個共享 SQL 區。這樣,許多專用 SQL 區可與同一個共享 SQL 區關聯。專用 SQL 區的位置取決於為會話建立的連接類型。如果會話是通過專用伺服器連接的,則專用 SQL 區位於該伺服器進程的 PGA 中。不過,如果會話是通過共享伺服器連接的,則部分專用 SQL 區將保留在 SGA 中。
游標和 SQL 區

Oracle Pro*C 程序或 Oracle OCI 程序的應用程序開發人員可以顯式打開特定專用 SQL 區的游標或句柄,並在該程序的整個執行過程中將它們用作命名資源。資料庫為某些 SQL 語句隱式發出的遞歸游標也使用共享 SQL 區。
工作區

對於復雜查詢(例如,決策支持查詢),會將大部分 PGA 供內存密集型運算符分配的工作區專用,例如:
基於排序的運算符(如 ORDER BY、GROUP BY 和 ROLLUP)和窗口函數
散列聯接
點陣圖合並
點陣圖創建
批量裝載操作使用的寫緩沖區
排序運算符使用工作區(排序區),對一組行執行內存中排序。與此類似,散列聯接運算符使用工作區(散列區),根據其左側輸入內容生成散列表。
工作區的大小是可以控制和優化的。通常,較大的工作區可以顯著改進特定運算符的性能,不過代價是消耗較多的內存。
會話內存

會話內存是用於存放會話的變數(登錄信息)以及與會話相關的其它信息的內存。對於共享伺服器,會話內存是共享的,而不是專用的。
自動 PGA 內存管理
根據 PGA_AGGREGATE_TARGET 參數,動態調整供工作區專用的 PGA 內存量
有助於最大限度地提高所有內存密集型 SQL 操作的性能
默認情況下是啟用的
PGA 管理資源
管理 PGA_AGGREGATE_TARGET 初始化參數的統計信息,如 PGA 高速緩存命中百分比
可以在下列動態性能視圖中查看有關工作區內存分配和使用的統計信息:
V$SYSSTAT
V$SESSTAT
V$PGASTAT
V$SQL_WORKAREA
V$SQL_WORKAREA_ACTIVE
用於調整 PGA 工作區大小的視圖有:
V$PGA_TARGET_ADVICE
V$PGA_TARGET_ADVICE_HISTOGRAM
V$SQL_WORKAREA_HISTOGRAM
-----------------Oracle DB 內存參數

ALTER SYSTEM SET MEMORY_TARGET=300M;
雖然僅需要設置 MEMORY_TARGET 來觸發自動內存管理,但仍可以為各種高速緩存設置下限值。因此,如果子參數是用戶設置的,則這些參數值將是 Oracle DB 伺服器自動優化該組件時的下限值。
有效使用內存:准則
盡量使 SGA 適合物理內存。
優化以實現高緩沖區高速緩存命中率,但要注意以下幾點:
--即使有效且必需的全表掃描也會降低命中率。
--可能存在因不必要地重復讀取同一塊而出現命中率虛升的情況。
使用內存指導。
庫高速緩存的內存優化准則:提高命中率
為開發人員制定格式使用約定,以便 SQL 語句符合高速緩存的要求。
使用綁定變數。
消除不必要的重復 SQL。
考慮使用 CURSOR_SHARING。
盡可能使用 PL/SQL。
緩存序列號。
連接庫高速緩存中的對象。

熱點內容
編譯不成功怎麼辦 發布:2025-05-16 10:35:54 瀏覽:610
如何修改密碼找回 發布:2025-05-16 10:35:53 瀏覽:568
怎麼才能編譯本書 發布:2025-05-16 10:27:47 瀏覽:757
ssd伺服器電腦 發布:2025-05-16 10:26:25 瀏覽:827
水果忍者源碼 發布:2025-05-16 10:26:22 瀏覽:472
python中ord函數 發布:2025-05-16 10:14:25 瀏覽:340
電腦啟動後無法連接伺服器 發布:2025-05-16 10:06:39 瀏覽:984
jar包編譯過程 發布:2025-05-16 10:03:37 瀏覽:679
選舉源碼 發布:2025-05-16 09:58:59 瀏覽:749
超級訪問陳小春應采兒 發布:2025-05-16 09:43:29 瀏覽:479