小记:不明原因的解决了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页面用户权限获取匹配 #### 一、背景与目的 在当前数字化转型的大背景下,企业越来越多地利用移动互联网技术来提升工作效率和服务质量。其中,企业微信作为一种重要的办公协作平台,在...
在本项目中,"我的日常小记:spring以及mybatis最终源码" 是一个记录了开发者个人编程经验的项目,主要涉及两个核心框架——Spring和MyBatis。这两个框架是Java开发领域中非常流行的技术栈,广泛应用于企业级后端...
环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed ...小记一下。以备以后参考。 boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。 全部编译是很痛苦的过程
Oracle系统参数调整实操--小记.sql
在解决问题的过程中,作者首先发现仅仅修改无线遥控模块的地址并不能使新模块与计时系统匹配。经过深入思考和网络搜索,作者意识到问题可能出在振荡频率不匹配上。PT2262和PT2272的振荡频率是由外部连接的电阻决定的...
vue2 项目 + webpack 打包工具,是一个非常经典的组合,但是在...小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js 文件,以及整个完整的 vue2+webpack5 整个的项目,因为上传的规定可以找我来拿
vue2 项目 + webpack 打包工具,是一个非常经典的组合,但是在...小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js 文件,以及整个完整的 vue2+webpack4 整个的项目,因为上传的规定可以找我来拿
遇到的困难包括虚拟机网络配置、主从同步延迟等,这些问题需要根据具体情况逐个排查和解决。 总的来说,MySQL主从配置是数据库管理中的重要技术,它能有效提高系统的可用性和性能。但在实施过程中,需要对MySQL的...
在Python编程中,`os`模块是一个非常重要的标准库,它提供了许多与操作系统交互的函数。这篇文章我们将深入探讨`os`模块的一些常用功能,包括创建文件夹、处理目录与路径、遍历目录与子文件、过滤序列后缀、以及复制...
例如,Oracle团队在面对SGA(System Global Area)问题时,忽视了UNDO表空间的重要性,导致性能提升不明显。 在Oracle的参数调优中,有几个关键点值得注意: 1. 隐含参数:发现了一个可能导致性能下降的隐含参数`_...
小记,就简单写了 。问题:VUE开发时因为要访问后端的接口所以要配置请求转发,如果直接转发全部请求,那么VUE动态绑定的src也会转发到后端,因为图片在前端,所以会收到404 NOT FOUND的报错。 常规的请求转发 在vue...
通过分析这些代码示例,开发者可以学习到实际项目开发中的最佳实践,理解如何解决特定问题,以及如何逐步完善和优化应用。此外,这也可以作为复习和巩固Android SDK相关API和技术的一个宝贵资源。在实际操作中,应...
7. **回溯**:回溯是一种试探性的解决问题方法,常用于解决组合优化问题,如八皇后问题、N皇后问题、迷宫问题等。 8. **排序**:排序算法是数据处理的核心,包括冒泡排序、选择排序、插入排序、快速排序、归并排序...
《RMAN使用小记》 Recovery Manager(RMAN)是Oracle数据库系统中用于数据恢复和备份的关键工具。本文将详细介绍RMAN的一些核心特性和使用方法,帮助读者理解和掌握RMAN的基本操作。 首先,了解RMAN的三个重要特性...
- 不再需要担心`0`与指针之间的类型不匹配问题。 - **示例**: ```cpp void foo(int* p) {} void bar(std::shared_ptr<int> p) {} int* p1 = nullptr; foo(nullptr); bar(nullptr); ``` #### 四、Range-...
这篇“sql loader用法小记”可能是博主对SQL Loader使用经验的总结和分享,虽然描述中没有具体信息,但从标签“源码”和“工具”可以推断,内容可能涉及到SQL Loader的基本操作、配置文件以及可能遇到的问题。...
- **个人成长**:通过不断试错和调整,作者在创业过程中实现了个人能力的提升,包括解决问题的能力、市场洞察力以及管理技能等。 ### 4. 未来规划 - **团队建设**:尽管早期尝试组建团队并未成功,但在未来仍然...
课程要求学生在解决问题时,不仅要善于运用所学知识,还要敢于打破常规,深入理解题意,进行有效的分析和思考。 教学过程: 1. 导入环节:教师通过提出问题,如“你喜欢数学吗?”和“你对解答数学题有信心吗?”来...
在Windows环境下部署Apache Tomcat服务器是一项常见的任务...遇到问题时,及时查看日志,分析错误信息,调整配置,通常能够解决问题。通过熟练掌握这些步骤和技巧,可以更高效地在Windows环境中部署和管理Tomcat项目。