小记:不明原因的解决了ORACLE慢的问题
近来发现ORACLE服务器超级慢,而且慢并不是由应用程序性能导致的,就连运行proc预编译程序都很慢,可见问题还是出在ORACLE服务器
本身。
首先查看了一下ORACLE的主要内存参数:
SELECT "NUM","NAME","TYPE","VALUE"/1024 AS "KB",
"ISDEFAULT","ISSES_MODIFIABLE","ISSYS_MODIFIABLE",
"ISMODIFIED","ISADJUSTED","DESCRIPTION","UPDATE_COMMENT"
FROM v$parameter
WHERE NAME IN ('db_block_size', 'db_cache_size',
'java_pool_size', 'large_pool_size', 'pga_aggregate_target',
'shared_pool_size', 'sort_area_size')
除了大池(large_pool_size)为16MB以外,每项内存都配置得不小。
于是怀疑是共享池满造成的,在网上找了篇文章查了查共享池的占用情况:
《如何计算oracle共享池的大小》 http://blog.sina.com.cn/s/blog_3ebdf8ad010006bk.html
执行了一下,共享池竟然占用了113%。居然溢出了!!!搞不懂!
于是尝试着修改参数:
1.在linux下:su - oracle
2. sqlplus "/as sysdba"
3. CREATE PFILE='ahfu.ora' FROM SPFILE;
4. 在LINUX下:cd /oracle/ora9/product/9.2/dbs/
5. vi ahfu.ora
6. 修改参数如下:
db_cache_size (数据缓存) 256MB -> 512MB
java_pool_size (java池) 84MB -> 0MB
large_pool_size (大池) 16MB -> 64MB
query_rewrite_enabled (查询重写) FALSE -> TRUE
7. 保存,关闭数据库:shutdown immediate;
8. 从新的pfile启动:startup pfile='/oracle/ora9/product/9.2/dbs/ahfu.ora';
9. 重新连接数据库,发现连接和查询都变得很快了。反复重启数据库多次,仍然很快。
猜测一方面是因为共享池满导致了数据库慢,另一方面是大池设置得过小。但是重启后变快并不能说明真正解决了问题,要多运行一段时间
才知道。
====================================================
附1:对共享池的分析
共享池缓存了系统中执行过的SQL。如果出现大量的不同的SQL,就可能导致共享池满。共享池满后,每次执行SQL都会扫描共享池,寻找相
同的SQL,找不到后又扫描整个共享池将长时间为执行的SQL设置为过期,为新的SQL分配空间。因此,哪怕是很简单的SQL,每次执行都会反复
扫描共享池,使得整个系统都很慢。共享池满的问题并不是立即发生的,需要一定的积累过程。所以数据库刚刚启动的时候,共享池是空的,
执行总是很快。数据库运行一段时间后,共享池满了,才会发现数据库很慢。大量不同的SQL会导致共享池问题:
比如:select user_name from webuser.user_info where user_id=:UserID;
与select user_name from webuser.user_info where user_id=1
上面两条SQL语句,第一条使用参数绑定,在共享池中会多次被命中,性能很高;而第二条,参数采用常量,很难被命中,每次都要重新解
析,并且会占用共享池的空间。
附2:对查询重写的分析
查询重写功能是指数据库引擎强制将所有SQL中的参数修改成参数绑定的格式。
例如,数据库强制将select user_name from webuser.user_info where user_id=1这条SQL
强制修改成select user_name from webuser.user_info where user_id=:UserID
查询重写能够有效避免共享池满的问题,但是会增加SQL的解析时间。
分享到:
相关推荐
工作小记:企业微信 嵌H5页面 用户权限获取匹配.doc
我的日常小计的源代码,最近帮助一名同学做一个简单的后台,决定把它写下来。对于mybatis以及spring相关,使用了mybatis,单元测试以及lombok,为了能够让读者有迹可循上传该项目源码
Oracle系统参数调整实操--小记.sql
环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed ...小记一下。以备以后参考。 boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。 全部编译是很痛苦的过程
vue2 项目 + webpack 打包工具,是一个非常经典的组合,但是在...小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js 文件,以及整个完整的 vue2+webpack5 整个的项目,因为上传的规定可以找我来拿
vue2 项目 + webpack 打包工具,是一个非常经典的组合,但是在...小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js 文件,以及整个完整的 vue2+webpack4 整个的项目,因为上传的规定可以找我来拿
os常用模块1. 创建文件夹2. 目录与路径拼接3. 遍历目录与子文件4. 过滤序列后缀5. copy文件6....1. 创建文件夹 import os 1. 创建文件夹 os.makedirs(new_dir) ...# 判读路径下是否存在文件夹,没有则创建 ...
小记,就简单写了 。问题:VUE开发时因为要访问后端的接口所以要配置请求转发,如果直接转发全部请求,那么VUE动态绑定的src也会转发到后端,因为图片在前端,所以会收到404 NOT FOUND的报错。 常规的请求转发 在vue...
作为初学者,整理学习文档是个好习惯,这篇小记是关于oracle权限操作,方案,序列,同义词,序列的基本语法
在偶然的机会听到了KDB,然后带着好奇和新鲜感体验了一把这个传说中和Oracle 相似度达到99%的数据库。 其中一部分的驱动力在于这个活动的奖品很丰厚,参加活动后可以拿到一个iwatch,确实是很划算的一个活动。 ...
【咬人草小记,阅读附答案】 咬人草小记阅读答案.docx
本篇经验笔记本来是打算在写山大智能车校内赛感悟的时候就要分享出来的,因为这个经验是在赛前给带队师弟们解决比赛用计时器问题的时候发现总结出来的,结果当时没控制住思路把那篇文章由技术类一下子写成观后感了,...
该文档是作者在利用JNA方式编译C/C++工程项目过程中遇到的一些问题及解决方法,仅供参考。
流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记....
TCP-IP小记
媳妇儿单位给个活,说让她对比两个表,查找其中一个表的某一列的内容是否在第二张表中存在媳妇儿问我有啥好用,简单的方法没,我第一时间想到的是用python解决,因为
很全面的,很实用的,看完提高不少,不管新手老手,都绝对有用
随笔小记.doc
python进行爬虫小记,主要用于python快速入门理解。
git使用小记----作者:谭耀武概述本文以PublicCMS为例对git的一些操作进行说明fork版地址:https://gitee.com/tywo45/P