Works > 逆引きSQL比較 > ORACLE > データベースの情報
ORACLE SQL ]  [ データベースの情報 ]  [ 手続き型言語 ]  [ その他 ] 
■データベースの情報(DBA・チューニング関連)

システム日付を表示するには? ▲TOP

データベースのバージョンを表示するには? ▲TOP

ユーザーの一覧を表示するには? ▲TOP

テーブルの一覧を表示するには? ▲TOP

テーブルの列の一覧を表示するには? ▲TOP

テーブルのINDEX列の一覧を表示するには? ▲TOP

ストアドのソースを表示するには? ▲TOP

ビューのSELECT文を表示するには? ▲TOP

任意の日付以降に作成したオブジェクトの一覧を表示するには? ▲TOP

セッション一覧(プロセス一覧) ▲TOP

ロックしているセッションと対象オブジェクトを確認するには? ▲TOP

SQLの実行計画(プラン)を知るには? ▲TOP

INDEXを使わせるには?(オプティマイザヒントを使用した実行計画の強制) ▲TOP

アクティブセッションが実行しているSQLは? ▲TOP
(少し修正しました)

オブジェクトを誰が、いつ作り、変更したか? ▲TOP

オブジェクトが、どのオブジェクトから呼ばれているか? ▲TOP
utldtree.sqlでSYSTEM表領域に追加したくない場合の代替方法です。

INDEX列の表示 ▲TOP

IIS(inetinfo.exe)が実行しているASPファイルはどれか? ▲TOP
IIS でWEBアプリケーションを運用している時、V$SESSION を見ると、"inetinfo.exe" というプログラム名で複数のセッションが起動しています。
この時、inetinfo.exeセッションが、どのASPファイルにアクセスしているか確認するには、 DBMS_APPLICATION_INFO パッケージを使用する必要があります。以下の方法で、モジュール名、 アクション名、クライアント情報を更新しておけば、V$SESSION の MODULE , ACTION , CLIENT_INFO を見ることで、どのセッションが、どのASPファイルを実行しているかがわかります。
どちらかと言うと、開発・デバッグ・トラブル時の切り分け用の小技と考えた方がよいかもしれません。
ASPからストアドを実行する方法については、 データベース接続あれこれ を参考にしてください(WSHですけど)。

大量データをループで更新中に何件まで更新したかを確認するには? ▲TOP
移行処理などで、何10万とか何100万オーダーの大量データを、全件なめて更新するような場合、 巨大なロールバックセグメントを作るなり、PL/SQLで小まめにコミットしながらループするなりの方法がありますが、 私はPL/SQL派です(プラットフォーム、サーバーの性能にもよりけり)。
この時、何件まで更新したかを確認するのにもいくつか方法があります。 因みに、dbms_output.put_line は、すべての処理が終わらないと出力されない上、表示サイズにも上限があるので、 この手の確認には向きません。  
 
・UTL_TILEでログファイルを出力
・ログテーブルを作成し、そのテーブルを更新
 
といった辺りが最も一般的だと思います。しかし、これはプログラムの作成・修正が面倒です。  
 
V$SQL_AREA の EXECUTIONS のカウントを数えるなんて方法もあるでしょう。 これは何も修正する必要はありませんが、更新DMLにバインド変数を使用していて、 V$SQL_AREA の SQL_TEXT が固定である必要があります。また、 EXECUTIONS は、フラッシュしない限り、それだけを初期化する事はできません。
 
以下の方法は、最低限の修正で、(ほぼ)確かな監視が可能です。ここでも 前述のDBMS_APPLICATION_INFO パッケージを使用します。
ループ中に CLIENT_INFO にカウントをセットしていけば、V$SESSION の MODULE , ACTION , CLIENT_INFO を見ることで、 今何件目まで更新しているかがるかがわかります。

AUTOTRACE と同じ表示形式でプランを見る(コレ、結構便利) ▲TOP
実行計画を見るときに、SET AUTOTRACE ON で表示されるのと同じ形式で表示する。
AUTOTRACE を使い慣れている人には、こっちの方が見やすいでしょう。
因みに、AUTOTRACE で表示を折り返さないようにするには、このスクリプトで行っているように、
col PLAN_PLUS_EXP format a80;
のレングスを変更すればよいです。

AUTOTRACE 時に折り返さないで表示する ▲TOP
上記にも書きましたが、よく聞かれるので別に書きます。
AUTOTRACE で表示を折り返さないようにするには、

col PLAN_PLUS_EXP format a80; (初期値)
 
のレングスを大きくすれば、長いオブジェクト名で、 ネストが深いプランでも折り返さないで表示できます。

カレントユーザーがどのような権限を持っているかを確認するには? ▲TOP
自分がどのようなROLEや権限を与えられているか確認します。

ロールバックセグメントを使用中のセッションを確認するには? ▲TOP
どのセッションがロールバックセグメントを使用しているか確認します。

オブジェクトの依存関係を知るには? ▲TOP
自分は何に依存にしているか、自分に依存にしているのは何かを確認します。
このページの先頭へ

ORACLE SQL ]  [ データベースの情報 ]  [ 手続き型言語 ]  [ その他 ] 
Works > 逆引きSQL比較 > ORACLE > データベースの情報