今天,在自己機器上裝了oracle 12c,發現Oracle的服務Oracle RDBMS Kenel Executable (OracleServiceORCL)占用記憶體高達5G,本人電腦記憶體才16G。如此高的占用率,真讓人心疼。於是就對Oracle的記憶體進行調整。具體辦法如下: 1. 在cmd命 ...
今天,在自己機器上裝了oracle 12c,發現Oracle的服務Oracle RDBMS Kenel Executable (OracleServiceORCL)占用記憶體高達5G,本人電腦記憶體才16G。如此高的占用率,真讓人心疼。於是就對Oracle的記憶體進行調整。具體辦法如下:
1. 在cmd命令中輸入如下命令啟動sqlplus:
sqlplus /nolog
2. sql啟動後,連接資料庫,命令如下:
conn / as sysdba;
3. 如果是oracle 11g以後版本,可以修改MEMORY_MAX_TARGET的值來設置自己想要記憶體值,我這裡設置為1024M。
alter system set memory_max_target=1204M scope=SPFILE;
4. 關閉資料庫實例
shutdown immediate
5.啟動Oracle實例,基於spfile裡面設置情況。
startup
註意事項:
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命令來查看記憶體的情況。
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的值。
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;