前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决oracle服务占用内存过高的问题

解决oracle服务占用内存过高的问题

作者头像
浩Coding
发布2019-07-03 15:42:14
10.2K0
发布2019-07-03 15:42:14
举报
文章被收录于专栏:浩Coding浩Coding

方法一:修改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”,添加如下代码:

代码语言:javascript
复制
@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

注意:记得手动更改具体服务名称!

运行这个文件,你就可以看到如下界面:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档