创建Oracle实例时,默认占用系统25%的内存,自身内存比较大时,oracle所占的内存也会变大。而通常,我们自己的环境并不需要分配那么大的内存来支持Oracle,这种情况下,我们可以通过修改sga值来减少系统中oracle占用内存过大问题。
解决方法:
用dba身份进入oracle,本人使用sqlplus修改(sqlplus sys/密码 as sysdba),若使用PL/SQL,可以在Command Window执行:
(1)set Oracle_SID=你的数据库实例名;
(2)sqlplus conn sys/密码 as sysdba;--登录
(3)SQL> show parameter sga; --显示内存分配情况
(4)SQL> alter system set sga_max_size=1024m scope=spfile; --修改占用内存的大小
SQL> alter system set sga_target=1024m scope=spfile;
修改后重启Oracle服务,再查看资源管理器,Oracle占用资源便会降至1024M以下。不过如此修改所付出的代价就是数据库性能的下降,因此修改时不宜调得太小。
附:
如果没有执行上面红色语句则会报错:ORA-00823: Specified value of sga_target greater than sga_max_size。更改的值小于 sga_target,导致数据库起不来。
解决方式如下:
1.根据spfiel创建pfile后,修改pfile中的sga_max_size参数
SQL>CREATE PFILE='C:\pfile01.ora' FROM SPFILE;
根据路径找到文件,修改数据:*.sga_target的数值要小于或等于*.sga_max_size的数值。
2.用pfile启动数据库,测试正常。
SQL> startup pfile='C:\pfile01.ora'
3.根据pfiel创建spfile(spfile文件原来就有的,重新生成的替换掉原来的。以防万一的话可以先备份一下。)
SQL> create spfile='C:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILETYSDZL.ORA' from pfile='C:\pfile01.ora';
4.用spfile启动数据库。