解决oracle服务占用内存过高的问题
作者:快盘下载 人气:方法一:修改Oracle最大占用内存
通常我们在自己电脑上搭建项目环境时,都免不了要安装Oracle。不管你硬件多强悍,都会发现,Oracle服务一旦启用,内存立马吃紧。笔者内存8G,启动一个VS,启动一个Eclipse,启动一个虚拟机,开一个Tomcat,再开一个PL/SQL,内存基本就耗去了一大半。再启用Oracle服务,内存马上飙升五六百兆,程序便会频繁出现假死。
其实这是因为安装Oracle时,为了均衡电脑性能和数据库性能,默认内存大小为物理内存的1/8,自身内存比较大时,oracle所占的内存也会变大。而通常,我们自己的环境并不需要分配那么大的内存来支持Oracle,这种情况下,我们可以通过修改sga值来减少系统中oracle占用内存过大问题。
用dba身份进入oracle,本人使用sqlplus修改(sqlplus sys/密码 as sysdba),若使用PL/SQL,可以在Command Window执行:
(1)show parameter sga; --显示内存分配情况
(2)alter system set sga_max_size=200m scope=spfile; --修改占用内存的大小
修改后重启Oracle服务,再查看资源管理器,Oracle占用资源便会降至200M以下。不过如此修改所付出的代价就是数据库性能的下降,因此修改时不宜调得太小。
方法二:不用时关闭Oracle服务
Oracle启动之后占用了大量内存。所以解决这个问题就是关闭oracle的一些开机启动服务就可以。等你用oracle的时候在手动开启就可以了。下面我们就一起来具体看一下如何去关闭和开启oracle服务程序
一:右击我的电脑—》服务,找到如下的几个服务程序:
把上面几个服务程序通通关闭。然后设置启动方式为手动启动。如果你想用oracle的时候在启动这几个服务就可以了。
二:利用脚本的形式关闭和打开服务
建立“打开或关闭oracle服务.bat”,添加如下代码:
@echo off title Oracle服务管理 cls color 2f goto MENU :MENU cls echo. =-=-=-=-=Oracle服务管理=-=-=-=-= echo. echo. 1 开启服务 echo. echo. 2 关闭服务 echo. echo. 3 退 出 echo. echo. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- echo. 请输入选择项目的序号: set /p ID= if "%id%"=="1" goto cmd1 if "%id%"=="2" goto cmd2 if "%id%"=="3" exit echo 请输入正确序号!&ping -n 2 127.1>nul&goto MENU :cmd1 echo. echo 开启Oracle服务中... net start|findstr /i /c:"OracleDBConsoleorcl">nul&&set k=1||set k=0 if %k%==0 (net start "OracleDBConsoleorcl") net start|findstr /i /c:"OracleOraDb10g_home1iSQL*Plus">nul&&set k=1||set k=0 if %k%==0 (net start "OracleOraDb10g_home1iSQL*Plus") net start|findstr /i /c:"OracleOraDb10g_home1TNSListener">nul&&set k=1||set k=0 if %k%==0 (net start "OracleOraDb10g_home1TNSListener") net start|findstr /i /c:"OracleServiceORCL">nul&&set k=1||set k=0 if %k%==0 (net start "OracleServiceORCL") echo. echo Oracle服务已经成功开启... echo. pause exit :cmd2 echo. echo 关闭Oracle服务中... net start|findstr /i /c:"OracleDBConsoleorcl">nul&&set k=1||set k=0 if %k%==1 (net stop "OracleDBConsoleorcl") net start|findstr /i /c:"OracleOraDb10g_home1iSQL*Plus">nul&&set k=1||set k=0 if %k%==1 (net stop "OracleOraDb10g_home1iSQL*Plus") net start|findstr /i /c:"OracleOraDb10g_home1TNSListener">nul&&set k=1||set k=0 if %k%==1 (net stop "OracleOraDb10g_home1TNSListener") net start|findstr /i /c:"OracleServiceORCL">nul&&set k=1||set k=0 if %k%==1 (net stop "OracleServiceORCL") echo. echo Oracle服务已经成功关闭... echo. pause exit
注意:记得手动更改具体服务名称!
运行这个文件,你就可以看到如下界面:
加载全部内容