如何利用高CPU查询oracle进程
1:第一次使用top命令到达CPU高SPID号码
PID用户名,大小,状态时间CPU命令
3575 Oracle 1120 0K 0k运行748.6h甲骨文24.98%
3571 Oracle 1220 0K 0k睡眠706.2h甲骨文22.84%
2:使用DBA帐户登录数据库,并使用下面的SQL语句查询:
SELECT * FROM V = 3575美元的过程中,该查询的SQL相关信息;
3:根据以上信息使用下面的SQL查询:
选择SID,从存在的会话$ s的程序(选择1从v $过程$在哪里);
可以发现,特定客户机查询一直在占用Oracle资源!
最后,这个查询被处理!
4。根据检查sqlitpub SID
复制代码代码如下所示:
选择sql_textitpub
从V sqltext美元
在a.hashvalue =(选择sql_hash_value)
从v会话B
在b.sid = SID)
一块0order ASC;
根据锁等待的领域,你可以查询一下锁,目前正在等待信息。
复制代码代码如下所示:
SELECT * FROM v$锁在kaddr在(选择锁等待从V $ SESSION在SID =);
(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value),基于这两个领域,我们可以查询的SQL语句正在执行的或由会议最近执行的细节。
SELECT * FROM V $ sqltext所在地址= sql_address和hash_value = sql_hash_value;
根据pid,查找sql相关信息:
复制代码代码如下所示:
选择ID,串行#,用户名,OSUser,机器,程序,过程,to_char(logon_time,'yyyy /毫米/ DD,hh24:MI:SS)。
基于pid查找sql语句
复制代码代码如下所示:
选择a.username,a.machine,学院,A.sid,a.serial #,a.status,c.piece,c.sql_text V $ SESSION,c.sql_text,c.piece,a.serial #。
获取进程的SID号:
复制代码代码如下所示:
选择ID,串行#,用户名,OSUser,机器,程序,过程,to_char(logon_time,'yyyy /毫米/ DD,hh24:MI:SS)。
得到的sqltext会议声明:
复制代码代码如下所示:
选择V sql_text美元sqltext_with_newlines hash_value在哪里(选择sql_hash_value V $ SESSION,,第二部分是正确的。