因为我这里使用的是linux和Oracle,所有首先找到Oracle数据库所在的服务器。
1.切换到oracle用户:su - oracle
2.使用sqlplus连接数据库:sqlplus / as sysdba
3.查一下当前shared pool的大小:
select sum(bytes)/1024/1024 mb from v$sgastat where pool=‘shared pool’;
如果这里提示
ERROR at line 1:
ORA-01012: not logged on
的话建议关掉数据库监听,关掉数据库服务然后再启动监听和数据库服务。
命令如下:
1).先退出sqlplus:ctrl+z
2).查看数据库监听器的状况:lsnrctl status
3).停止数据库监听器运行:lsnrctl stop
4).进入sqlplus :sqlplus / as sysdba
5).关闭数据库服务:shutdown immediate(如果这里执行后还是报ORA-04031可以执行
shutdown abort,在这之前记得备份数据!切记!)
6).退出sqlplus:ctrl+z
7).启动数据库监听器:lsnrctl start
8).进入sqlplus :sqlplus / as sysdba
9).开启数据库服务:startup
10).然后再查询当前shared pool的大小:select sum(bytes)/1024/1024 mb from
v$sgastat where pool='shared pool';
如果没有提示错误,就继续往下走。
4.退出sqlplus:ctrl+z
5.查看总内存:free
6.用如下命令修改SGA_MAX_SIZE与SGA_TARGET的值,调大一些,
比如调整为总内存的60%-70%,数据库正常。
SQL> alter system set sga_max_size=2G scope=spfile;
SQL> alter system set sga_target=2G scope=spfile;
7.修改之后重新启动一下数据库服务就好了。