oracle内存占用过高和修改不当无法启动oracle实例的解决办法
今天,在自己机器上装了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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?