Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • More info about /proc folder and its relation with processes. Linux/Unix
  • Caching sequence in Memory Oracle
  • How To Transfer Passwords Between Databases (ref note: 199582.1) Oracle
  • Space padding in korn shell Linux/Unix
  • OPENING A STANDBY DATABASE IN READ-ONLY MODE Oracle
  • changing kernel parameter in Oracle Enterpise Linux Linux/Unix
  • How to hide author name in WordPress BLOG PHP/MYSQL/Wordpress
  • For Search and replace unix command. Linux/Unix
  • note id 373303.1 Linux/Unix
  • Implementing Listener Security Oracle
  • Standby Database File Management in 10g with STANDBY_FILE_MANAGEMENT Oracle
  • segment_wise_space.sql segspace.sql Segment wise space usage (allocated and used) Oracle
  • The most important Tuning Notes Oracle
  • To check whether standby is recovering properly or not?? Oracle
  • Distributed Transaction Troubleshooting. Oracle

Find long Running Transaction

Posted on 28-Jul-2008 By Admin No Comments on Find long Running Transaction

+++++++++++++longtx_12HR.sh

#!/bin/sh

. /opt/app/oracle/oracle_env

NOTIFY_LIST=dbaoracle@1800flowers.com

$ORACLE_HOME/bin/sqlplus -s “/ as sysdba” @/opt/app/oracle/scripts/longtx_12HR.sql

if [ `cat /opt/app/oracle/scripts/log/long_transaction_list.lst | grep -i “*****ATLAS NOTIFICATION REQUIRED*****” | wc -l` -n

e 0 ]; then

mailx -s “LONG RUNNING TRANSACTION ON ATLAS `hostname` on `date` ” $NOTIFY_LIST < /opt/app/oracle/scripts/log/long_transactio
n_list.lst

fi

+++++++++++++longtx_12HR.sql

set lines 120 pages 300

set serveroutput on

exec dbms_output.enable(NULL);

set echo off

spool /opt/app/oracle/scripts/log/long_transaction_list.lst

declare

cursor c1 is

select a.sid, a.serial#, substr(a.machine,1,22) machine, substr(a.osuser,1,15) osuser,

substr(a.username,1,22) username, a.sql_hash_value, a.sql_address, a.prev_hash_value,

a.prev_sql_addr, round((sysdate – to_date(b.start_time, ‘MM/DD/YY HH24:MI:SS’)) * 24, 2 ) hours1,

a.status sess_status, b.status tx_status

from v$session a , v$transaction b

where a.SADDR = b.SES_ADDR

and (sysdate – to_date(b.start_time, ‘MM/DD/YY HH24:MI:SS’)) * 24 > 12

order by (sysdate – to_date(b.start_time, ‘MM/DD/YY HH24:MI:SS’)) * 24;

last_sqltext varchar2(4000);

count1 number := 0;

begin

for cur in c1 loop

if (c1%rowcount = 1) then

dbms_output.put_line(‘=============================================================================’);

dbms_output.put_line(‘ LONG RUNNING TRANSACTION REPORT ‘);

dbms_output.put_line(‘ List of tranactions running for more than 12 Hours ‘);

dbms_output.put_line(‘ Script: longtx_12HR.sql ‘);

dbms_output.put_line(‘=============================================================================’);

end if;

count1 := count1 + 1;

dbms_output.put_line(‘Transactin# ‘ || count1 || ‘ Running for last ‘ || cur.hours1 || ‘ hours’);

dbms_output.put_line(‘SID=’||cur.sid ||’ ‘|| ‘SERIAL#=’ || cur.serial# || ‘ ‘ || ‘MACHINE=’ || cur.machine );

dbms_output.put_line(‘OSUSER=’|| cur.osuser || ‘ USERNAME=’ || cur.username || ‘ SESSION_STATUS=’||cur.sess_status || ‘ ‘ |

| ‘TX_STATUS=’ || cur.tx_status );

begin

select substr(sql_text, 1, 255) into last_sqltext

from v$sql

where hash_value = cur.sql_hash_value

and address = cur.sql_address

and rownum = 1;

exception

when no_data_found then

begin

select substr(sql_text,1,255) into last_sqltext

from v$sql

where hash_value = cur.prev_hash_value

and address = cur.prev_sql_addr

and rownum = 1;

exception

when no_data_found then last_sqltext := null;

end;

end;

dbms_output.put_line(last_sqltext);

dbms_output.put_line(‘——————————————————-‘);

end loop;

if count1 != 0 then

dbms_output.put_line(‘*****ATLAS NOTIFICATION REQUIRED*****’);

end if;

end;

/

spool off

exit

Linux/Unix, shell

Post navigation

Previous Post: Check_recovery.sh program to run sqlplus and return its values remotely.
Next Post: checking connectivity between two servers

Related Posts

  • catall.sh Linux/Unix
  • scripts to take listener.log backup Linux/Unix
  • Process Map for CPU and Memory for OS processes Linux/Unix
  • create a folder in multiple places Linux/Unix
  • adding new line after specific pattern using sed Linux/Unix
  • kill all processes from specific user in solaris. Linux/Unix

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • AWS (2)
  • Azure (1)
  • Linux/Unix (149)
  • Oracle (387)
  • PHP/MYSQL/Wordpress (10)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (17)
  • rman-dataguard (26)
  • shell (149)
  • SQL scripts (336)
  • Uncategorized (0)
  • Videos (0)

Recent Posts

  • SQL Tracker by SID sqltrackerbysid.sql22-Apr-2025
  • How to connect to Oracle Database with Wallet with Python.21-Mar-2025
  • JSON/XML Types in Oracle18-Mar-2025
  • CPU Core related projections12-Mar-2025
  • Exadata Basics10-Dec-2024
  • Reading config file from other folder inside class24-Sep-2024
  • Python class import from different folders22-Sep-2024
  • Transfer SQL Profiles from One database to other database.05-Sep-2024
  • Load testing on Oracle 19C RAC with HammerDB18-Jan-2024
  • Add new columns in dataframe30-Sep-2023

Archives

  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • Drop database in Oracle 10g Oracle
  • Find execution plan from dba_hist_sql_plan for a specific SQL_ID and PLAN_HASH_VALUE fplan.sql Oracle
  • Rename Tablespace Oracle
  • Check Oracle installed products using one command Oracle
  • SQL_PROFILE – I explaination Oracle
  • find_log_switch.sql Find log switches in graphical manner Oracle
  • 751131.1 New Article Error 2819 While Requesting a Systemstate Dump Oracle
  • temp_use.sql diplays usage of temp ts Oracle

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme