Thursday, November 9, 2017
Mapping a resource intensive OS Process to DB Process
Run OS Command
ps -e -o pcpu,pid,user,tty,args|grep -i oracle|sort -n -k 1 -r|head
11.0 2847 oracle ? ora_dia0_mydb1
9.1 27211 oracle pts/7 /u02/app/oracle/product/11.2.0.4/dbhome_1/jdk/bin/java -server -Xmx384M -XX:MaxPermSize=400M -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -DORACLE_HOME=/u02/app/oracle/product/11.2.0.4/dbhome_1 -Doracle.home=/u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j -Doracle.oc4j.localhome=/u02/app/oracle/product/11.2.0.4/dbhome_1/emisdb05_noorstby/sysman -DEMSTATE=/u02/app/oracle/product/11.2.0.4/dbhome_1/emisdb05_noorstby -Doracle.j2ee.dont.use.memory.archive=true -Djava.protocol.handler.pkgs=HTTPClient -Doracle.security.jazn.config=/u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee/OC4J_DBConsole_emisdb05_noorstby/config/jazn.xml -Djava.security.policy=/u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee/OC4J_DBConsole_emisdb05_noorstby/config/java2.policy -Djavax.net.ssl.KeyStore=/u02/app/oracle/product/11.2.0.4/dbhome_1/sysman/config/OCMTrustedCerts.txt-Djava.security.properties=/u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee/home/config/jazn.security.props -DEMDROOT=/u02/app/oracle/product/11.2.0.4/dbhome_1/emisdb05_noorstby -Dsysman.md5password=true -Drepapi.oracle.home=/u02/app/oracle/product/11.2.0.4/dbhome_1 -Ddisable.checkForUpdate=true -Doracle.sysman.ccr.ocmSDK.websvc.keystore=/u02/app/oracle/product/11.2.0.4/dbhome_1/jlib/emocmclnt.ks -Dice.pilots.html4.ignoreNonGenericFonts=true -Djava.awt.headless=true -jar /u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee/home/oc4j.jar -config /u02/app/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee/OC4J_DBConsole_emisdb05_noorstby/config/server.xml
6.2 1635 oracle ? asm_lms0_+ASM1
1.9 2897 oracle ? ora_mmnl_mydb1
1.9 2138 oracle ? oraclemydb1 (LOCAL=NO)
1.6 2094 oracle ? oraclemydb1 (LOCAL=NO)
1.5 2861 oracle ? ora_lms2_mydb1
1.5 2857 oracle ? ora_lms1_mydb1
1.5 2853 oracle ? ora_lms0_mydb1
1.5 2833 oracle ? ora_vktm_mydb1
---------------------------------------------------------------------------
Run below sql command to identify db session
SELECT
'USERNAME : ' || s.username || CHR(10) ||
'SCHEMA : ' || s.schemaname || CHR(10) ||
'OSUSER : ' || s.osuser || CHR(10) ||
'PROGRAM : ' || s.program || CHR(10) ||
'SPID : ' || p.spid || CHR(10) ||
'SID : ' || s.sid || CHR(10) ||
'SERIAL# : ' || s.serial# || CHR(10) ||
'KILL STRING: ' || '''' || s.sid || ',' || s.serial# || '''' || CHR(10) ||
'MACHINE : ' || s.machine || CHR(10) ||
'TYPE : ' || s.type || CHR(10) ||
'TERMINAL : ' || s.terminal || CHR(10) ||
'SQL ID : ' || q.sql_id || CHR(10) ||
'SQL TEXT : ' || q.sql_text
FROM v$session s
,v$process p
,v$sql q
WHERE s.paddr = p.addr
AND p.spid = '&&PID_FROM_OS'
AND s.sql_id = q.sql_id(+);
The prior script prompts you for the operating system process ID. Here is the output for this
USERNAME :
SCHEMA : SYS
OSUSER : oracle
PROGRAM : oracle@mypc.oracle.com (DIA0)
SPID : 2847
SID : 11731
SERIAL# : 1
KILL STRING: '11731,1'
MACHINE : node1.oracle.com
TYPE : BACKGROUND
TERMINAL : UNKNOWN
SQL ID :
SQL TEXT :
-------------------------------------------------
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('&&sql_id')));
--------------------------------------------------
You can use Oracle’s oradebug utility to display top consuming SQL statements if you know the operating
system ID. For example, suppose that you have used a utility such as top or ps to identify a high CPUconsuming
operating system process, and from the name of the process you determine it’s a database
process. Now log in to SQL*Plus and use oradebug to display any SQL associated with the process. In this
example, the OS process ID is 7853:
SQL> oradebug setospid 7853;
Oracle pid: 18, Unix process pid: 7853, image: oracle@xengdb (TNS V1-V3)
---------------------------------------------
alter system kill session 'integer1, integer2 [,integer3]' [immediate];
$ kill -9 6254
---------------------------------------------
No comments:
Post a Comment