阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle内存占用过高和修改不当无法启动Oracle实例的解决办法

194次阅读
没有评论

共计 1823 个字符,预计需要花费 5 分钟才能阅读完成。

今天,在自己机器上装了 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;

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1823字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中