1. 程式人生 > >oracle 佔用記憶體

oracle 佔用記憶體

1、在使用database configuration assistant 配置之時,注意設定SGA大小,一般會預設佔用記憶體的40%,這樣就特別慢了。

2、不使用oracle的時候把服務停掉。

3、使用oracle EM進行維護

4、https://www.cnblogs.com/sparkbj/p/6146363.html

操作 (oracle使用記憶體約等於 SGA+PGA,所以可以減少SGA與PGA解決你的問題,生產庫慎用)
alter system set sga_max_size=100m scope=spfile; --減少SGA大小,靜態引數,重啟後生效
alter system set sga_target=80m scope=both; --動態引數;oracle推薦:啟動時修改此引數,不要動態設定此引數


alter system set pga_aggregate_target=40m sope=both; ---減少pga大小
2、拓展
SGA_MAX_SIZE的大小不是隨意指定的,必須滿足一定條件的。
sga_max_size=100M,必須滿足SGA所有元件的最小和;至少滿足db_cache_size,log_buffer,shared_pool_size,large_pool_size,java_pool_size總和的大小)

這一點很重要,如果不滿足oracle例項服務會經常掛!

oracle記憶體結構介紹:
Introduction to Oracle Memory Structures
Oracle uses memory to store information such as the following:

Program code
Information about a connected session, even if it is not currently active
Information needed during program execution (for example, the current state of a query from which rows are being fetched)
Information that is shared and communicated among Oracle processes (for example, locking information)
Cached data that is also permanently stored on peripheral memory (for example, data blocks and redo log entries)
The basic memory structures associated with Oracle include:
System Global Area (SGA), which is shared by all server and background processes.
Program Global Areas (PGA), which is private to each server and background process; there is one PGA for each process.
修改方法:

1.sqlplus “/ as sysdba"  2. 3.create pfile='d:/cj.ora' from spfile;  然後去你的oracle安裝目錄

  找一個init資料庫名。ora這樣一個檔案

  把幾個oracle記憶體引數改小點

  一個2G的記憶體是如下配置的:

  *.sga_max_size=712M

  *.large_pool_size=8M

  *.shared_pool_size=250M

  *.sort_area_size=0.5M

  *.db_cache_size=350M

  然後shutdown資料庫

  1.shutdown immediate;  2. 3.create spfile from pfile='d:/cj2.ora';  4. 5.startup;  然後啟動,就可以了。

  以上就是調整oracle記憶體引數,減少資料庫記憶體佔用的方法介紹。


5、知乎:

Oracle記憶體元件中,有一個叫做SGA的部分,這個部分如果設定了7G,啟動之後,立馬從記憶體中分割出7G,哪怕當前Oracle只用了100M。這7G也是不可以被其他任何機制回收和利用的。
而且Oracle是典型的耗記憶體應用,SGA元件裡的BufferCache放的是真實的使用者資料。可以避免分散的磁碟操作,而直接在SGA中完成對資料庫的修改加工。
SGA是主要佔記憶體的元件。其他PGA等等為用多少分配多少的基本原則。會發生回收機制的。
除此之外,你可以通過show parameter sga檢視SGA的具體設定。

正式答下,oracle佔用記憶體不會無限向上,而是預先劃一片SGA和PGA,是固定的。如果是win系統預設安裝,這個引數會是整機記憶體的40%。
然並卵,對於開發用或小應用,這些記憶體佔用過多。一般SGA 2000M,PGA 300M足矣。
查設定引數
sqlplus/ as sysdba
Show parameter sga
Show parameter pga
設定
Alter system set sga_target=2000M SCOPE=spfile;
同理修改sga_max_size=2000m,pga_aggregate_target=300m
重啟資料庫例項
6、http://blog.csdn.net/linxidwx/article/details/52678250 SGA大小配置