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

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

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

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

Q&A

解決済

2回答

460閲覧

動的パフォーマンスビューにプロシージャやファンクションの実行履歴が格納されているビューは無いのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle

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

0グッド

0クリップ

投稿2017/08/29 12:16

動的パフォーマンスビューの中で、例えば、V$SQLには、実行されたSQLがセットされていますが、同じような感じで、プロシージャやファンクションがセットされている動的パフォーマンスビューは無いものでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

マニュアル上の動的パフォーマンスビューの一覧をざっとみてみましたが、そのようなものは無さそうですね。

監査機能を使えば取得出来るようです。

sql

1AUDIT EXECUTE PROCEDURE BY ACCESS ; 2 3SELECT obj_name, timestamp FROM DBA_AUDIT_TRAIL ;

ファンクション、プロシージャ、パッケージおよびトリガーの監査の概要

投稿2017/09/02 14:31

編集2017/09/02 14:47
SVC34

総合スコア1149

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

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

退会済みユーザー

退会済みユーザー

2017/10/07 03:39

SVC341様 なんと。。。 ありそうに思ったのですが、以外にないものですね。。。 ありがとうございました。
guest

0

静的データ・ディクショナリ・ビューですが、user_source
Oracle9i以降でしたら、Oracle Objectの取得を使うこともできます。

投稿2017/08/29 18:08

Orlofsky

総合スコア16415

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

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

退会済みユーザー

退会済みユーザー

2017/08/29 21:11

Orlofsky様 ご回答ありがとうございます。 うーん、これは登録されているパッケージやファンクションを見るものですよね。。。 実行履歴というか、サーバーに実行依頼が行われた、履歴。 つまり、V$SQLのような、発行履歴のようなものを見れるビューは無いものなのでしょうか?
Orlofsky

2017/08/31 19:16

V$SQLのような動的パフォーマンスビューはいつまでデータが残っている、といった保障はありません。 どうしても発行履歴が必要なら、ストアド・プログラムの中でDBMS_OUTPUT.PUT_LINE('PROGRAM_NAME ' || TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS'); でSPOOLしたり、別に履歴テーブルを用意して発行情報を書き込んだりします。
退会済みユーザー

退会済みユーザー

2017/09/02 05:16

現行システムにて、全プロシージャに履歴を入れるのは現実的ではないのです。 プロシージャの数は膨大なのです。 なんとか、システムに手を入れずに、動作したプロシージャやファンクションの履歴を見る方法は無いものでしょうか?
Orlofsky

2017/09/02 06:30 編集

何の為にやりたいのかわかりませんが、多少なりともパフォーマンスが悪くなるのに全プロシージャの履歴を取得する必要があるのでしょうか? 機能的にあるとしたらTRIGGERでしょう。SQL言語リファレンス マニュアルのCREATE TRIGGERをしらべてみては?サポート契約が有効でしたら、サポートセンターに質問するのもいいでしょう。
退会済みユーザー

退会済みユーザー

2017/09/02 07:04

いえ、全プロシージャの履歴ではありません。 ある特定の機能を動作させた時に動作するプロシージャを特定させたいのです。 そもそも、どのプロシージャが動作しているのかわからないので、ログを仕込んだり、トリガーを使うと言っても、どのプロシージャに履歴を入れたらいいのかわからないのです。 そういう状況なので。。。 サポート契約なんてありません。 もうこれはお手上げですかね。。。
Orlofsky

2017/09/02 11:55

>ある特定の機能を動作させた時に動作するプロシージャを特定させたいのです。 で実行されるSQLを調べてください。SQLが実行された直後ならV$SQL, V$SQL_BIND_CAPTUREなどに残っています。 http://replication.hatenablog.com/entry/2015/06/08/090000 オラクルはライセンスもサポート料も高いので他のDBに移行しているユーザーが多いです。それなりに能力がある技術者でないとOracleの仕事はなくなるでしょう。自分の能力に見合った仕事で、きちんと勉強できる職場かは考えましょう。わたしはオラクルサポート契約が有効で自分で直接サポートに問合せることができない仕事は断っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問