sql >> Databasteknik >  >> RDS >> Oracle

Hur man kontrollerar Oracle-databasen för långvariga frågor

Den här visar SQL som för närvarande är "AKTIV":-

select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/

Detta visar lås. Ibland går det långsamt, men det är för att det är blockerat i väntan på ett lås:

select
  object_name, 
  object_type, 
  session_id, 
  type,         -- Type or system/user lock
  lmode,        -- lock mode in which session holds lock
  request, 
  block, 
  ctime         -- Time since current mode was granted
from
  v$locked_object, all_objects, v$lock
where
  v$locked_object.object_id = all_objects.object_id AND
  v$lock.id1 = all_objects.object_id AND
  v$lock.sid = v$locked_object.session_id
order by
  session_id, ctime desc, object_name
/

Det här är bra för att hitta långa operationer (t.ex. genomsökningar av hela tabellen). Om det är på grund av många korta operationer kommer ingenting att dyka upp.

COLUMN percent FORMAT 999.99 

SELECT sid, to_char(start_time,'hh24:mi:ss') stime, 
message,( sofar/totalwork)* 100 percent 
FROM v$session_longops
WHERE sofar/totalwork < 1
/


  1. GREATEST() Funktion i Oracle

  2. problem med python manage.py migrate -> Ingen modul med namnet psycopg2

  3. Fixa hål/luckor i siffror som genereras av Postgres-sekvensen

  4. Postgresql ändra kolumntyp från int till UUID