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

実行されている実際のOracleSQLステートメントを確認する方法

    データディクショナリ側には、Schema Spy

    などの使用できるツールがたくさんあります。

    実行されているクエリを確認するには、ビューsys.v_$sqlおよびsys.v_$sqltextを確認してください。 sys.all_usersへのアクセスも必要になります

    パラメータを使用するクエリは、

    のようなエントリとともに一度表示されることに注意してください。
    and TABLETYPE=’:b16’
    

    ない他の人は次のように複数回表示されます:

    and TABLETYPE=’MT’
    

    これらのテーブルの実際の例は、上位20のdiskreadhogを見つけるための次のSQLです。これを変更するには、 WHERE rownum <=20を削除します。 そして多分ORDERBYモジュールを追加します 。このモジュールでは、クエリを実行しているソフトウェアに関する手がかりが得られることがよくあります(例:「TOAD9.0.1.8」、「JDBCシンクライアント」、「[email protected](TNS V1-V3)」など)。

    SELECT 
     module, 
     sql_text, 
     username, 
     disk_reads_per_exec, 
     buffer_gets, 
     disk_reads, 
     parse_calls, 
     sorts, 
     executions, 
     rows_processed, 
     hit_ratio, 
     first_load_time, 
     sharable_mem, 
     persistent_mem, 
     runtime_mem, 
     cpu_time, 
     elapsed_time, 
     address, 
     hash_value 
    FROM 
      (SELECT
       module, 
       sql_text , 
       u.username , 
       round((s.disk_reads/decode(s.executions,0,1, s.executions)),2)  disk_reads_per_exec, 
       s.disk_reads , 
       s.buffer_gets , 
       s.parse_calls , 
       s.sorts , 
       s.executions , 
       s.rows_processed , 
       100 - round(100 *  s.disk_reads/greatest(s.buffer_gets,1),2) hit_ratio, 
       s.first_load_time , 
       sharable_mem , 
       persistent_mem , 
       runtime_mem, 
       cpu_time, 
       elapsed_time, 
       address, 
       hash_value 
      FROM
       sys.v_$sql s, 
       sys.all_users u 
      WHERE
       s.parsing_user_id=u.user_id 
       and UPPER(u.username) not in ('SYS','SYSTEM') 
      ORDER BY
       4 desc) 
    WHERE
     rownum <= 20;
    

    クエリが長い場合は、v_$sqltextをクエリする必要があることに注意してください。これにより、クエリ全体が保存されます。 ADDRESSとHASH_VALUEを調べて、すべての部分を取得する必要があります。例:

    SELECT
     *
    FROM
     sys.v_$sqltext
    WHERE
     address = 'C0000000372B3C28'
     and hash_value = '1272580459'
    ORDER BY 
     address, hash_value, command_type, piece
    ;
    


    1. MySQLで同等のgenerate_series()

    2. SQL標準委員会のPostgreSQLエージェント

    3. 更新されたAzureSQLデータベース層オプション

    4. MySQLデータベースとテーブルを修復する方法