質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

17365閲覧

OracleのCPU使用率をSQLで取得したい

aikoaikoaiko

総合スコア7

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/05/28 12:28

前提・実現したいこと

現在、あるSQLを実行した際のCPU上昇率を確認するため、毎秒のCPU利用率を取得したいと思っているところです。
しかし、DBサーバーは自社のものではないため、タスクマネージャーなどで確認できず、
SQLを使って取得するしかないと考えています。
ところが、ネット上で検索してもなかなか方法が見つからずに困っている状況です。

バージョン:Oracle 11g

試したこと

select metric_name, value, metric_unit from v$sysmetric where metric_name ='CPU Usage Per Sec';

CPU使用率らしきものは出てくるのですが、毎秒ではないようで、望んだものとは異なっています。

何か情報お持ちの方がいれば、回答をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

V$SYS_TIME_MODELがOracle内のCPU TIME を取得できそうですが、IDLE TIMEは含まれてはいないようですから、CPUの使用率は取得できそうにありません。

statspackやAWRにはreportにCPU TIMEが含まれているので、Oracleをインストールしたディレクトリィの一部 {ORACLE_HOME}/RDBMS 以下で 'cpu time' でgrep するといくつかhitするのでcpu timeを取得できる非公開の関数が見つかるかもしれません。サポート契約が有効ならオラクル社のサポート・センターに問合せてみては?

それをLOOPの中で DBMS_LOCK.SLEEPで1秒待って1秒毎に実行すれば良いはずです。

statspackのsnap shot を5分毎に取得するのが現実的な対応ではあります。負荷が大きいので1秒毎には無理でしょうけど。

追記

SELECT TC.OWNER || '.' || TC.TABLE_NAME || '.' || TC.COLUMN_NAME AS COLUMN_NAME
FROM DBA_TAB_COLUMNS TC
WHERE TC.COLUMN_NAME = 'CPU_TIME'
ORDER BY TC.OWNER, TC.TABLE_NAME, TC.COLUMN_NAME ;
もヒントになるかも?

投稿2018/05/28 21:30

編集2018/05/28 23:54
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

V$SERVICEMETRICやV$SERVICEMETRIC_HISTORYが目的のものかもしれません。
サービスメトリック
21.1.2 エンドツーエンド・アプリケーションのトレースで収集した統計の表示

特定のSQLに対してなら、SQLトレースにはCPU使用時間(秒)もありますけれど。
21.4 SQLトレース機能とTKPROFの使用方法

投稿2018/05/28 14:47

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問