Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Drop database in Oracle 10g Oracle
  • SAN Linux/Unix
  • How to set Processes Parameter Oracle
  • get_vmstat_solaris Oracle
  • Passing from Unix to PLSQL using bind variables Linux/Unix
  • Standby Database File Management in 10g with STANDBY_FILE_MANAGEMENT Oracle
  • crontab syntax Linux/Unix
  • Committing distributed transaction using commit force Oracle
  • To check whether standby is recovering properly or not?? Oracle
  • Transfer SQL Profiles from One database to other database. Oracle
  • create a folder in multiple places Linux/Unix
  • Find execution plan from dba_hist_sql_plan for a specific SQL_ID and PLAN_HASH_VALUE fplan.sql Oracle
  • tab.sql Oracle
  • shr1.sql for MTS or Shared server configuration Oracle
  • Good Doc 28-JUN-2006 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

  • How to sort list of files on basis of their sizes. Linux/Unix
  • Linux CPU info. Linux/Unix
  • Jai Shree Ram Linux/Unix
  • find_du.ksh to find # of files, their sizes in current folder and its subdolder Linux/Unix
  • replacing ^M character when passing files from Windows to Unix Linux/Unix
  • Follwoing korn shell is used to move files from source folder to destination folder and gzip it in destination folder. mv_iotto.ksh Linux/Unix

Leave a Reply Cancel reply

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

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Django (0)
  • GIT (1)
  • Linux/Unix (149)
  • MYSQL (5)
  • Oracle (403)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (1)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (18)
  • rman-dataguard (26)
  • shell (150)
  • SQL scripts (350)
  • SQL Server (6)
  • Uncategorized (5)
  • Videos (0)

Recent Posts

  • Key Management in Oracle: The Core Issue: Missing Master Key12-May-2026
  • SAT Mathematics 10 questions and answer at the end.30-Apr-2026
  • top 10 AI news today30-Apr-2026
  • runon_allpdbs_show_conname.sh23-Apr-2026
  • runon_allcdbs_find_pdbs.sql23-Apr-2026
  • Running PDB on single node in RAC09-Apr-2026
  • find_arc.sql09-Apr-2026
  • pvm_pre_change.sql08-Apr-2026
  • find_encr_wallet.sql08-Apr-2026
  • find_pdbs.sql08-Apr-2026

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • Giving Grant on v$DATABASE Oracle
  • ORACLE_SID in sqlplus Oracle
  • Export Oracle data and Compress at same time Oracle
  • oracle Dba site Oracle
  • copying/removing directory with all its subdirectory Linux/Unix
  • Find Multiple levels of object dependencies : depen.sql Oracle
  • replace alphabets using sed Linux/Unix
  • DBMS_UTILITY.ANALYZE_SCHEMA Oracle

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme