上一篇 / 下一篇 2009-07-20 16:15:19 / 个人分类:Oracle研究
查看( 107 ) / 评论( 0 ) / 评分( 0 / 0 )
在AIX 5.3平台下oracle 10.2.0.3测试环境中,经常发现某些oracle进程占用很大的CPU资源,但这些进程并不存在v$session中,具体发现脚本如下:
SQL>select spid, pid, program from v$process
where addr not in (select paddr from v$session)
SPID PID PROGRAM
------------ ------------------------------------------------
1962208 18 xxxxx@xxxx (TNS V1-V3)
2039826 49 xxxxx@xxxx (TNS V1-V3)
查看系统中发现该进程占用CPU比例很高,每个进程消耗CPU大约20%资源。
以下是该问题的具体分析:
SQL> alter session set events ' immediate trace name systemstate level 266'
或者
SQL>oradebug setospid 1962208
SQL>oradebug short_stack
查找对应的 PROCESS 18,具体信息如下:
Short stack dump: ksdxfstk+002c<-ksdxcb+04e4<-sspuser+0074<-000044BC<-ktsmg_register_tac+0074 <-kscnfy+01f4<-ksucrp+0574<-opiino+03d4<-opiodr+0adc<-opidrv+0474<-sou2o+0090
<-opimai_real+01ec<-main+0098<-__start+0098
Dump of memory from 0x070000009E5EF668 to 0x070000009E5EF870
................................
Repeat 29 times
----------------------------------------
SO: 70000009ea7aef8, type: 3, owner: 70000009e6322a0, flag: INIT/-/-/0x00
(call) sess: cur 0, rec 0, usr 0; depth: 0
----------------------------------------
SO: 7000000941eced0, type: 16, owner: 70000009e6322a0, flag: INIT/-/-/0x00
(osp req holder)
short stack分析:
start ->main->opimai_real->sou2o->opidrv->ipiodrv->opiino->ksucrp
->kscnfy->ktsmg_register_tac+0074->sspuser ..........
sspuser()功能是给oradebug 请求的代码路径,所以我们关注ktsmg_register_tac,通过metalink查询,发现BUG:6084108与我们所发现的问题非常相似,在10.2.0.4解决该bug。
附录:
其BUG:6084108具体问题描述:
PROBLEM:--------Intermittently, oracle process abnormally terminates due to ora-3115, thenconsumed one cpu 100%. There was no v$session info so could not get sessioninformation to track down the root cause.STACK TRACE:------------ktsmg_register_tac 0074 kscnfy ksucrp opiino opiodr opidrv sou2o opimai_realmain暂时解决办法,用操作系统命令kill -9 删除以上进程。
分享到:
相关推荐
这有助于我们识别占用CPU资源最多的程序。 2. **恶意软件检查**: 高CPU占用有时可能由病毒、木马或恶意软件引起。运行反病毒扫描并确保操作系统和所有软件的更新是最新的,可以防止这类问题。 3. **系统服务与...
2. **Oracle进程循环(Spins)**:当Oracle进程中的代码陷入无限循环时,这类挂起的会话在`V$SESSION`视图中显示为“ACTIVE”状态。即使尝试使用`ALTER SYSTEM KILL SESSION 'sid,serial#'`命令也无法完全终止会话,...
《Oracle Database 10g Performance Tuning》是Oracle数据库领域中的一个重要主题,它涉及了数据库在处理大量数据和复杂查询时如何实现最佳性能的技术和策略。Oracle 10g是Oracle公司推出的一个重要版本,其性能优化...
Oracle后台进程如DBWn(数据库写入器)、LGWR(日志写入器)等对内存的需求是动态变化的,这个工具可能用于定期检查这些进程的内存占用,以便及时发现异常。 "ora_cpu.pl"可能是另一个Perl脚本,专注于CPU使用率的...
SGA是所有Oracle进程共享的内存区域,包括数据缓冲区缓存、重做日志缓冲区、共享SQL区等。我们需要根据数据库的实际负载情况,合理配置SGA大小,避免内存不足导致频繁的磁盘I/O。PGA则主要用于存储每个会话的私有...
- **解释**: 显示消耗CPU最高的前十个Oracle进程。 - **注意事项**: 这些进程可能会影响整个系统的性能。 ##### 6.7 检查碎片程度高的表 - **命令**: `$ select owner, table_name, num_rows, blocks, pct_free, ...
- **目的**:检查是否存在Oracle核心转储文件,这可能是Oracle进程崩溃的迹象。 - **方法**:浏览指定的核心转储目录(如`/u01/app/oracle/crash`),查看是否存在新的核心转储文件。 **2.4 检查Oracle初始化文件中...
如果 CPU 占用很高,需要检查是否有 oracle 后台进程 CPU 占用高的情况。如果是 oracle 连接进程 CPU 占用高,可以转到“cpu 高度消耗问题”解决。如果 MEM 很低,SWAP 区 page out 很频繁,需要联系系统管理员检查...
- 检查扩展异常的对象:监控是否有对象占用了过多的空间,这可能是由于设计不当或数据异常造成的。 - 检查system表空间内容:作为数据库中最重要的表空间,其内部对象的状态需要特别关注。 - 检查对象的下一扩展...
在Unix环境中,可以使用`glance`、`topas`或`ps`命令找到占用资源高的进程,并通过查询`v$session`、`v$process`和`v$sqltext`视图,获取对应进程ID(PID)的SQL语句。这有助于识别和优化性能低效的SQL。 总之,...
8. **数据库性能诊断**:通过AWR报告,可以识别性能瓶颈,如CPU使用率过高、I/O延迟、等待事件等,并制定相应的解决策略。 9. **物理存储优化**:包括数据文件、控制文件、重做日志文件的布局,以及磁盘I/O子系统的...
通过分析V$sysstat中的CPU时间,可以找出占用过多CPU的会话并进行优化。 监控系统是确保数据库性能稳定的关键工具。Oracle提供了丰富的监控工具,如v$视图,可以用来追踪CPU、I/O、内存等资源的使用情况,以及会话...
值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: 从 NLS_TERRITORY 中获得 nls_date_language: 说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。...
通过调试器(如GDB)附加到运行中的进程,查看CPU占用高的函数或线程,理解代码执行逻辑,找出可能导致CPU过载的部分。 4. **工具应用**:在给定的标签中提到了"工具",这可能指的是专门用于性能分析的工具,如...
Oracle 数据库进程在 AIX 5L 上占用大量内存,主要包括共享全局区 (SGA) 和程序全局区 (PGA)。正确设置这些区域的大小对性能至关重要。 **固定内存** 固定内存技术可以改善 Oracle 的内存访问速度。通过将 SGA 固定...
以上只是Oracle数据库性能优化的一部分要点,实际操作中需要结合具体业务场景,进行全面的性能评估和调优。阅读"Oracle数据库性能优化.pdf"应该会提供更深入的指导和实例,帮助理解和应用这些知识。