sql >> データベース >  >> RDS >> Oracle

長時間実行されるクエリについてOracleデータベースをチェックする方法

    これは、現在「アクティブ」であるSQLを示しています:-

    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
    /
    

    これはロックを示しています。物事が遅くなることもありますが、それはロックを待ってブロックされているためです:

    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
    /
    

    これは、長い操作(全表スキャンなど)を見つけるのに適しています。短時間の操作が多いため、何も表示されません。

    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. 階層データをコピーするときに親子関係を保持する

    2. MacOSXでのOracleSQLDeveloper入門

    3. SQL Server 2016:可用性グループの機能強化

    4. DevOpsがDBaaS(Database-as-a-Service)を使用してアプリケーション開発を最適化する方法