1:首先使用TOP命令传到占用CPU高的SPID号
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
3575 oracle 1 12 0 0K 0K run 748.6H 24.98% oracle
3571 oracle 1 22 0 0K 0K sleep 706.2H 22.84% oracle
2:使用DBA账户登录数据库,使用以下SQL语句查询:
SELECT * FROM V$PROCESS WHERE spid=3575;查询到SQL相关信息
3:根据以上查询到的信息使用以下SQL查询:
SELECT sid, program FROM V$SESSION S WHERE EXISTS(SELECT 1 FROM V$PROCESS WHERE spid=3575 AND ADDR = S.PADDR);
可以查询到具体那个客户端查询一直在不断占用ORACLE资源!
最后对这个查询进行处理!
4.根据SID查得SQLITPUB
select sql_textITPUB
from v$sqltext
where a.hashvalue=(select sql_hash_value
from v$session b
where b.SID='&sid')
0order by piece ASC;
根据lockwait字段可以查询当前正在等待的锁的相关信息:
select * from v$lock where kaddr in (select lockwait from v$session where sid= $sid);
(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value) 根据这两组字段, 可以查询到当前session正在执行的或最近一次执行的sql语句的详细信息:
select * from v$sqltext where address = &sql_address and hash_value = &sql_hash_value;
根据PID查SQL相关信息:
select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));
根据PID查SQL语句
SELECT a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text FROM v$session a,v$process b,v$sqltext c WHERE b.spid='&spid' AND b.addr=a.paddr AND a.sql_address=c.address(+) ORDER BY c.piece;
得到进程的sid号:
select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));
得到session的sqltext语句:
select sql_text from v$sqltext_with_newlines where hash_value in (select SQL_HASH_VALUE from v$session where paddr in (select addr from v$process where spid= '&pid')) order by piece;
分享到:
相关推荐
本文将深入解析如何诊断和处理Oracle进程CPU占用率过高的问题,以及如何查询相关的信息。 首先,要定位高CPU占用的进程,可以使用操作系统的监控工具,如在Unix或Linux系统中使用`top`命令。例如,输出显示了两个...
尽管给定的部分内容并未提供关于"Oracle高性能SQL调整"的具体信息,但从标题和描述中,我们可以推断出文档主要关注的是如何在Oracle数据库环境中优化SQL查询的性能。Oracle数据库是业界领先的关系型数据库管理系统之...
7. 资源管理:Oracle的资源管理器可以控制资源的分配,例如CPU资源和I/O资源,这有助于优化整个系统的性能,避免某个进程消耗过多资源而影响其他进程。 8. SQL Profile和SQL Plan Management:这些是Oracle 11g中...
在现代信息系统的高效运作中,数据库的性能优化至关重要,尤其是面对大规模数据集时。Oracle数据库作为企业级数据库解决方案的佼佼者,其SQL语句的并行处理能力成为了提升整体性能的关键技术之一。SQL语句的并行处理...
Oracle数据库SQL语句跟踪器,通常被称为SQL Monitor,是一种强大的工具,用于监控和分析数据库中的SQL语句执行情况。在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA...
- **并行查询**:在并行查询中,一个复杂的SQL语句被分解成多个较小的子任务,这些子任务可以由不同的进程同时执行。例如,在进行大表扫描时,可以将表分成多个分区,每个分区由一个独立的进程处理。 - **并行DDL...
运行在Windows上的Oracle开发库的oracle进程CPU使用率保持在99%,服务器和数据库均反应缓慢。 二、排查思路 可能造成CPU使用率高的情况有:大量排序、大量SQL解析、全表扫描、Oracle Bug等。因此希望找到...
SQL Monitor for Oracle,MySQL and DB2 是款免费的数据库跟踪工具,专门用来分析CPU使用率高的问题。 软件功能: 1. 监控SQL Server的进程和Job,查看当前执行的SQL/命令,并终止之。 2. 对象浏览器,跟 SQL Server...
Oracle 并行 SQL 是一项允许单个 SQL 语句通过多个线程或进程同时执行的技术。随着现代计算机中双核和四核处理器的广泛使用,即便是最简单的现代计算机在运行 Oracle 数据库时也将包含不止一个 CPU。尽管桌面和...
在上面的示例中,我们可以看到存在两个高 CPU 耗用的 Oracle 进程,它们分别消耗了 47.77%和 40.98% 的 CPU 资源。通过进一步的分析,我们可以找到问题的根源,并采取相应的措施来解决问题。 三、解决方法 解决 ...
CPU数量越多,Oracle会创建更多的LGWR进程,以异步方式写入redo信息,从而提高并发性和系统性能。 此外,`db_block_lru_latches`也是一个与CPU数量相关的参数,它控制了数据库块LRU链表的锁,以确保并行访问时的...
《SQLMonitor for Oracle:在XP环境下优化Oracle进程查询的利器》 SQLMonitor for Oracle是一款专为Oracle数据库系统设计的监控工具,尤其适用于Windows XP操作系统。它通过提供一系列强大的SQL命令,帮助DBA...
- **`v$process`**: 此视图包含Oracle进程的信息。 - **`v$session`**: 歆视图存储了所有会话的信息,包括用户、状态等。 - **`v$sqlarea`**: 此视图提供了执行过的SQL语句的统计信息。 此脚本通过连接这三个视图来...
在这种情况下,深入分析导致高CPU使用的Oracle进程或SQL语句显得至关重要。 在UNIX系统中,OSPID(Operating System Process Identifier)可以明确地标识每个服务器进程,而在Windows中,ORACLE.EXE进程的OSPID只是...
在Oracle数据库管理中,了解和掌握一些常用的监控SQL语句是至关重要的,这些语句能够帮助DBA(数据库管理员)实时了解数据库的运行状态、性能瓶颈以及资源使用情况。"oracle常用监控SQL语句集合"提供了这样的工具集...
开启跟踪后,Oracle将在数据库的PGA(进程全局区域)或TRACE文件中记录SQL语句和绑定变量。这些文件默认位于`ORACLE_HOME/admin/<sid>/udump`目录下,文件名通常以`<sid>_ora_<process_id>.trc`的形式命名。 SQL...
将Excel数据导入Oracle通常需要先将数据转换为CSV格式,然后使用SQL*Loader或外部表来加载数据。 3. **设置时间间隔型数据**: 在Oracle 9i中,时间间隔类型(INTERVAL)用于存储时间间隔,如年、月、日、小时等。...
- 此查询显示使用CPU最多的会话信息,包括SID、进程ID、状态、程序名称等。 - `c.statistic# = 12`: 统计指标号12对应于会话的CPU使用量。 **应用场景:** - 当发现数据库服务器CPU利用率异常高时,可以通过此...