今天,在本身機器上裝了oracle 12c,發現Oracle的服務Oracle RDBMS Kenel Executable (OracleServiceORCL)佔用內存高達5G,本人電腦內存才16G。如此高的佔用率,真讓人心疼。因而就對Oracle的內存進行調整。具體辦法以下:sql
1. 在cmd命令中輸入以下命令啓動sqlplus:數據庫
sqlplus /nolog
2. sql啓動後,鏈接數據庫,命令以下:windows
conn / as sysdba;
3. 若是是oracle 11g之後版本,能夠修改MEMORY_MAX_TARGET的值來設置本身想要內存值,我這裏設置爲1024M。oracle
alter system set memory_max_target=1204M scope=SPFILE;
4. 關閉數據庫實例spa
shutdown immediate
5.啓動Oracle實例,基於spfile裏面設置狀況。code
startup
注意事項:blog
1)MEMORY_MAX_TARGET是MEMORY_TARGET的最大閾值,MEMORY_TARGET是Oracle使用機器內存的總量,默認值爲0,即由oracle自動根據機器內存來分配,MEMORY_TARGET = SGA_TARGET + PGA_AGGREGATE_TARGET,當SGA_TARGET和PGA_AGGREGATE_TARGET都設置爲0時,Oracle會自動根據MEMORY_TARGET對二者進行內存分配。內存
2)若是更改過SGA_TARGET和PGA_AGGREGATE_TARGET的值,請用下面語句將其恢復0。記得不太清楚的,能夠經過show parameter命令來查看內存的狀況。ci
ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;
show parameter命令例子以下,注意下面命令的sga能夠換成target或者memory來查看memory_max_target和memory_target的值。get
show parameter sga;
3)若是是oracle 10g,不支持MEMORY_MAX_TARGET和MEMORY_TARGET這兩個參數,內存的調整能夠經過sga_target或sga_max_size來手動設置實現,注意sga_target必需要小於等於sga_max_size,不然oracle庫會運行不起來。
alter system set sga_max_size=1024m scope=spfile;
alter system set sga_target=1024m scope=spfile;
有時候犯糊塗設置錯了,致使數據庫實例運行不起來的話,能夠經過從二進制配置文件spfile來建立pfile的文本文件,來手動修改解決,在由pfile重建spfile文件。例如我將sga_max_size和sga_target都設置爲512M,就啓動不起來了,啓動時,錯誤爲ORA-00821: Specified value of sga_target 512M is too small, needs to be at least 636M,這時候,能夠經過下面四部解決。
(1). 在sqlplus裏面由spfile建立pfile文件,爲了方便,自定義pfile的存放目錄爲「e:\\ini.ora.temp」,不指定會默認爲spfile同目錄,本人在windows上的12c目錄爲"{oracle安裝目錄}\product\12.2.0\dbhome_1\database」目錄下的SPFILEORCL.ORA,文件名遵循格式spfile${SID}.ora。
create pfile='e:\\ini.ora.temp' from spfile;
(2). 由於pfile爲文本文件,用文本應用程序打開你指定的路徑文件來進行編輯,修改sga_max_size和sga_target爲0,保存文件。
(3).由pfile來重建spfile文件
create spfile from pfile='e:\\ini.ora.temp';
(4).默認基於新的spfile,啓動Oracle實例。
startup
一些可能用到的其餘命令:
顯示spfile的文件存放路徑:
show parameter spfile;
顯示pfile的文件存放路徑:
show parameter pfile;