• ベストアンサー

SQL*PLUSで 定期的にSQLを発行させるには?

SQL*PLUS を使って、10秒間隔などのように定期的にSQLを発行し、その結果をSPOOLでファイルに出力して、後で確認したいと考えています。 (今回は特にV$SESSIONの情報から、ACTIVE/INACTIVE のセッションのステータス情報をログとして保存したいと考えています) どなたかそのようなことは可能かご存知ですか?可能であれば、ぜひやり方を教えてください。 [環境] Windows 2000 Oracle 9iR2 よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • yutopapa
  • ベストアンサー率47% (139/295)
回答No.1

PL/SQLでDBMS_LOCK.SLEEP()関数を使えば出来ると思います。 DBMS_LOCK.SLEEP(10); で十秒待ちますので、SELECT * FROM V$SESSION;の間に挟んでやれば良いでしょう。

snail110
質問者

お礼

お礼が遅くなってすみません。 教えていただいた方法でできました! ご回答有難うございました。

関連するQ&A

  • SQL Plus での処理が重い

    お世話になります。 オラクル初心者です。よろしくお願い致します。 SQL Plusですが、オラクルをインストール直後は普通の速度だったのですが、 その日の内に急激に重くなりました。再起動を何度か行うとたまにですが、 通常の速度になります。 select文でcountするだけでも数分かかってしまいます。(通常時だと数秒です) なにが原因なのかアドバイスを頂ければと思います。 環境 oracle9.0.1.0.0

  • SQL*Plus:SPOOLコマンドでのSQL出力

    Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。 SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。 何か方法はないでしょうか? よろしくお願いします。

  • SQL_Plusでのログ採取について

    実現が可能か教えて頂けますでしょうか。 ネットワーク上にOracle(8i)が稼動している端末が100台程あり、 それを1つのPC(Win2000)からSQL_Plusにて接続を行い検索等を行っています。 その1つのPCには複数の人が、同じOracleユーザーを使用し 任意のデータベースへログインしています。 100台のOracleの設定・環境を変更せずに、 何とかPC1台のみの変更で、いつ・誰が・どこへ接続したかというログを 取得したいと考えているのですが、可能でしょうか? もし可能であれば、簡単にできる方法をご教授頂けないでしょうか。

  • SQL*PLUSで列幅変更したい。

    こんにちわ。 いまORACLE9iを使用している者です。 SQL*PLUSで, つぎのようなSELECT文を発行しました。 「SELECT HOGEKBN AS ほげほげ区分 FROM HOGE_TABLE」 「HOGEKBN」は1桁のデータなので, 実行結果に列名である"ほげほげ区分"が表示されません。 これを表示したいと思い, 「 SELECT HOGEKBN AS ほげほげ区分 FROM HOGE_TABLE COLUMN ほげほげ区分 FORMAT A20 」 としたところ, COLUMN~の行で, "ORA-00933: SQLコマンドが正しく終了されていません。" というエラーメッセージが出てしまいます。 SQL*PLUSで列幅指定するにはどうすれば良いでしょうか? 教えてください。よろしくお願いします。

  • SQL*Plusの実行結果にSQL文も残したいです

    SQL*Plusをスクリプトファイルを使って実行した際、実行SQLの出力はできないものでしょうか? 以下のようにスクリプトファイルを使ってSQL*Plusを実行し、その結果をログファイルへ 残しています。この時ログファイルには、実行結果は出力されるのですが、実行SQLは 出力されないようです。なんとかして実行SQLと、実行結果を作業ログとして残したいと 考えているのですが、何かよい方法はないものでしょうか? [ama@rh01 test]$ sqlplus scott/tiger@orcl @test01.sql > test01.log ■環境 Red Hat Linux 4 Oracle10g ■以下test01.sqlの中身です。 ---ここから-------------- create table ex01 ( c1 number, c2 varchar2(10), c3 varchar2(40) ); insert into ex01(c1,c2,c3) values(1,'AA1','BBB1'); select * from ex01; update ex01 set c2='aa1' where c1 =1; select * from ex01; exit; ---ここまで-------------- ■以下ログファイルの中身です。 ---ここから------------------ [ama@rh01 test]$ cat test01.log 省略 With the Partitioning, OLAP and Data Mining options に接続されました。                       ←ここにcreate文を出力したいです。 表が作成されました。                       ←ここにinsert文を出力したいです。 1行が作成されました。                       ←ここにselect文を出力したいです。 C1       C2   C3 ---------- ---------- ---------------------------------------- 1        AA1   BBB1                       ←ここにupdate文を出力したいです。 1行が更新されました。                       ←ここにselect文を出力したいです。 C1      C2 C3 ---------- ---------- ---------------------------------------- 1 aa1 BBB1 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。 [ama@rh01 test]$ -------------------ここまで--------------- どなたか良いアドバイスいただけたらと思います。 どうぞよろしくお願いします。

  • SQL*PLUSでの分秒までの表示の仕方

    お世話になっております。 Oracle SQL*PLUSでデータを打ち込んでいるところなのですが、 表示の仕方で分からないところがあるので、 どなたか教えていただけないでしょうか? date型で指定して日付カラムを作ったところに TO_DATE('2009-01-02 10:00:10','YYYY-MM-DD HH24:MI:SS'), と入力したのですが、select文でデータを検索したところ DATE -------- 09-01-02 と返ってきました。これを分、秒まで表示させるには どうしたらよいでしょうか?? よろしくお願いいたします。

  • シェルスクリプトからSQL文発行

    こんにちは 今シェルスクリプトを作成し、oracleに対して、SQL文を発行したいのですが、ユーザーパスワードを入れた時点で処理が止まります シェルスクリプトからoracleに対して、DROP TABLEを行いたいのですが、この処理は可能ですか? 可能であれば、実行した際のログも保持し、エラーがあった場合の処理を行いたいです。 ご存知の方いらっしゃいましたらご教授お願いいたします 現在のソース: sqlplus ユーザー名/パスワード # ここまではうまくいきますが、ここで処理がとまります drop table テーブル名

  • SQL文の実行速度の確認方法

    Oracle SQL*Plusにて、SQL文の開始から値取得までの実行速度の確認をしたいと考えております。 秒単位だけでもOKですので、どなたか確認方法について教えて頂きたくお願いします。

  • PL/SQLの変数内容出力について

    PL/SQLでの開発にあたり、もし良い方法がありましたら教えて下さい。 例外やORACLEエラー発生時、EXCEPTION処理としてUTL_FILEパッケージを使用したログ出力を行っています。 この際に、その処理の中で使用している全ての変数の内容を出力したいのですが、例えばV$テーブル等で、変数の内容を保持しているようなものは無いでしょうか? 一変数ずつ出力していると大変なので、例えばセッション情報を引数にして、そのセッションで使用されている変数内容を全て出力するようなログ関数を作りたいのです。 以上、よろしくお願いします。

  • Oracleで流したSQLのログを取得できますか?

    ASP+Oracle9iで作られたシステムがあります。 Oracleの設定などは前任者がしており、まともな引継ぎを受けないまま私が維持運用員となりました。 現在DBからあるレコードが消えてしまい(最初から作られてない可能性もあり)、顧客からクレームがついています。 状況から考えて怪しいプログラムを調査したのですが、原因不明でした。 そこで、Oracleの方で今まで流れたSQLをログとして保存していれば手がかりがつかめるのではないかと思い、情報を探しているのですが見つからないので教えて頂きたいのです。 私はOracleの知識(管理面について)が殆どなく、Oracleを使うことはできるが、Oracleの設定がどういう状況になっているか調べることもできず、資料もありません。 1.そもそもOracleにSQLをログとして保存する機能があるのか? 2.あるとすれば、保存機能が有効になっているか、保存したファイルがどこにあるかをどこで確認できるか? 以上の点についてご存知の方、どうぞ回答よろしくお願いします。