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

セッションのOracleCPU使用率をパーセンテージで表示

    簡単に言うと、1つのクエリでそれを行うことはできません。有用な情報を取得するには、有用なデータを収集するためのPL/SQLを作成する必要があります。

    Oracleには「累積時間」統計があります。これは、エンジンが継続的な使用状況を追跡していることを意味します。分析の開始時間と終了時間を定義する必要があります。

    V $ SYS_TIME_MODEL

    から「DBCPU」を照会できます。
    select value into t_db_cpu_i
    from sys.V_$SYS_TIME_MODEL
    where stat_name = 'DB CPU' ;  /* start time */ 
    ...
    select value into t_db_cpu_f
    from sys.V_$SYS_TIME_MODEL
    where stat_name = 'DB CPU' ; /* end time */
    

    #1 CPUまたは#8 CPUしかない場合、CPU統計は影響を受けます。したがって、エンジンが使用しているCPUの数を特定する必要があります。

    V$PARAMETERから「cpu_count」をクエリしてこの値を取得できます。

    select value into t_cpus
    from sys.v_$parameter
    where name='cpu_count' ;
    

    次に、それは非常に簡単です:

    最大合計時間は秒*CPUの数になるため、#1 CPUしかない場合、最大合計時間は「60」になりますが、#2 CPUがある場合、最大合計時間は「120」になります..#3 CPU 「180」などになります...

    したがって、sysdateを使用して分析期間の開始時間と終了時間を取得します。

    t_start := sysdate ;
    t_end := sysdate ;
    

    そして今、あなたは以下を計算します:

    seconds_elapsed := (t_end - t_start)*24*60*60 ;
    total_time := seconds_elapsed * t_cpus ; 
    used_cpu := t_db_cpu_f - t_db_cpu_i ;
    secs_cpu := seconds_elapsed/1000000 ;
    avgcpu := (secs_cpu/total_time)*100 ;
    

    そしてそれだけです、「avgcpu」はあなたが探している価値です。




    1. Pl/pgsql関数のCOPYステートメントを使用して診断を取得する

    2. MySQLでそれぞれ特定の値を持つ行のグループを選択します

    3. それと連結された文字列を使用してMysqlでid(autoincremented)を作成するにはどうすればよいですか? phpのみを使用

    4. グループ関数では参照はサポートされていません