2017-01-04 7 views
0

まあ、私はOracleに多くの経験がないと言わなければなりません。私の問題は次のとおりです。クエリを使用してシステム統計を表示する方法は?

Oracleデータベースを実行しているサーバーがあります。ときどき、ロードが遅くなりハングします。私は理由を知るために追跡する必要があります。しかし、私はこのサーバーに対する許可を持っていません。私はPDOを介してのみクエリを実行することができます。 、私は、このようななどCPUの負荷速度、メモリ、セッション、などのサーバに関するいくつかの情報を収集するためにクエリを使用し、約チャートを描くことができることを願っていますので、

$db = new PDOOCI\PDO("192.168.x.x:xxxx/something.something;charset=AL32UTF8", "username", "password"); 
$status = $db->prepare("SELECT * FROM table"); 
$status->execute(); 
$r = $status->fetchAll(); 
var_dump($r); 

:私は、クエリを実行する方法をここで

それはリアルタイムで。このようにして、私はそれが遅くなっていた1日の時間を知るかもしれません。

以下のクエリを試しましたが、何も返しません。

$status = $db->prepare("SELECT sql_text FROM v$session"); 
$status = $db->prepare("SELECT * FROM v$process"); 
$status = $db->prepare("select * from V$OSSTAT"); 

は、私は間違った方法によまたは

+2

DBAにAWRスナップショットレポートを実行させてください。 「ロードが遅くてハングする」ということはあまり意味がありません。 「select * from table」が遅いと言っていますか?テーブルはどれくらい大きいですか? – OldProgrammer

+0

テーブルから選択しない*は、どのように接続してデータを取得するかの例です。それは病院の大きなデータベースです。時折このデータベースに接続できず、Iamが原因を突き止めることができません。 – KaZaT

+2

"このデータベースに接続できません"とはどういう意味ですか?より具体的にお試しください。全体の本はoracle dbのパフォーマンスチューニングに書かれています。はい、それらの意見が参考になるかもしれません。 – OldProgrammer

答えて

0

これはかなり難しい問題である:(どうかわからない。これは、システムを遅くする原因となる可能性があり、データベース以外のものである可能性があります。それはあなたがサーバー上で持っているものによって異なりここ

は、あなたがこの非常に日に発売しているクエリに関する情報を収集できる方法のヒントです:。 使用V$SQLオラクル:データベースに何が起こったかを知るために毎晩、それを実行しますシステムビュー

SELECT * 
    FROM v$sql 
WHERE to_date(last_load_time,'YYYY-MM-DD/HH24:MI:SS') > trunc(sysdate) 

あなたが唯一の10個の最も高価なクエリをしたい場合は、注文は、その後、10個のトップ行取る:

SELECT * FROM (
    SELECT sql_text, cpu_time, elapsed_time, last_load_time 
     FROM v$sql 
    WHERE to_date(last_load_time,'YYYY-MM-DD/HH24:MI:SS') > trunc(sysdate) 
    ORDER BY cpu_time desc 
)WHERE ROWNUM <10 

注意してください:あなたはv$sessionまたは他のシステムビューに何も表示されないので、あなたが余分のためにあなたのDBAに依頼する必要があるかもしれませんデータベースに対する権限付与。例えばロールのようなものが必要な場合がありますSELECT_CATALOG_ROLEまたはそれに類するもの

関連する問題