• ベストアンサー

perlプログラムから定期的にデータベースの調査をする方法

perlからSQL文を発行してoracleのテーブル毎のレコード件数を 調査して結果はテキストファイルに出すというプログラムを 考えました。 perlのプログラムを定期的に実行するのに windowsのタイムスケジューラーを使って行おう と思ったのですが、 windowsの時間がずれていると決まった時間に実行できない のではないか、というところで悩んでいます。 宜しければ、何か解決の為のヒントをいただけないでしょうか。

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

NTPで時計合わせをしたら良いかと思います。 しかしOracleがある環境なら、時計もADで管理されているような気がしますが・・・

nyapo4747
質問者

お礼

回答ありがとうございます。 NTPを調べて試してみたところ、 大幅にずれるようなことはなくなり解決しました。

関連するQ&A

  • Perl(cgi)ファイルからMySqlで管理しているデータベース制御に関して質問

    Perl(cgi)ファイルからテーブル内の一定の項目をDELETEしようとしています ランダムに選択させる値をハッシュに格納し読み込み、削除を試みています。 foreach $key (keys %hash) { # 取り出した値を$noに代入 $no = $hash{$key}; # SQL発行 $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名='$no'"); # SQL実行 $sql->execute; } 上記の方法で問題なく実行できているのですが、ご覧のようにハッシュに格納されている数だけSPQを実行しているため効率が悪い、と 担当者から指摘をうけました。 PHPであればSPQの実行あと、for文で『 レコード指定名='_no'』の部分だけをループさせることができたのですが Perlではうまくいきません。ご教授ください。よろしくお願いします。 ちなみにPerlをはじめとしてプログラムそのものを勉強し始めて1ヶ月の初心者です。

    • ベストアンサー
    • MySQL
  • Perlでexecuteをまとめて実行したい

    以前似たような質問をしたモノですが、 Perl(cgi)ファイルからテーブル内の一定の項目をDELETEしようとしています 具体的にいうと、多数あるチェックボックスにチェックされた項目のみを削除するプログラムで、チェックされた値はハッシュに格納し読み込み、削除をしています。 foreach $key (keys %hash) {   # 取り出した値を$noに代入   $no = $hash{$key};   # SQL発行   $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名='$no'");   # SQL実行   $sql->execute; } もしくは # ハッシュに入れた値をカウント $n = keys( %hash ); # プレースホルダを使用し削除の実行 $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名=?"); for($i=0; $i<$n; $i++) {    # SQL実行    $sql->execute(@hash{$i}); } 上記の方法でどちらも問題なく実行できているのですが、ご覧のようにハッシュに格納されている数だけ$sql->execute;を実行しているため効率が悪い、と担当者から指摘をうけました。 少しでもマシンの負担を軽くし、スムーズにするためにexecuteをまとめて実行することを求められています。 selectcol_arrayref などを使う方法などを検索できたのですが、具体的なサンプルがないとまだ分からない初心者で、上記のプログラムに当てはめる方法が分からないでいます。 ご教授のほどよろしくお願いします。

    • ベストアンサー
    • MySQL
  • DBのレコードサイズの調査方法について

    現在DBのレコードのサイズを調査しています。 例えばあるDBに100テーブルあるとしてその中で レコードのサイズが一番大きいテーブル名とそのテーブルの レコードサイズがいくつなのかを調査しております。 SQL等でレコードサイズを抽出することは出来るのでしょうか。 それとも全テーブルの定義情報から割り出すしかないのでしょうか。 調査対象のDBはPostgresSQL(ver 7.4)になります。 すみませんが宜しくおねがいします。

  • Perlでのプログラム実行方法

    使ってるOSはWindows XPです Perlで作ったプログラムはどうやって実行するのでしょうか? それと/の反対側の記号が表示されません。参考書はUnixをベースとしてるのでWindowsでは別の記号になるのでしょうか?

    • ベストアンサー
    • Perl
  • perlから他のプログラムを動かす方法

    Windows XP環境で作業をしています。 コマンドプロンプトで、次のように動かすプログラムがあったとき、 今のディレクトリ>command file1 file2 file3 これをperlから呼び出したい(perlで実行させたい)のですが、どのように書けばいいのでしょうか。 調べるとパスという言葉がよく出てくるのですが、パスという言葉の意味もよくわかっていません; わかる方がいらっしゃいましたら、是非教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • oracleのSQLパフォーマンスについて

    oracleのSQLパフォーマンスについて質問です。 当方、SQLは初めてで、ずぶの素人ですが、SQLパフォーマンスを改善することになりました。 質問の仕方も悪いとは思いますが、お力添えをいただきたいと思います。 【質問1】 DBのレコード件数は、SQLパフォーマンスにどう影響するでしょうか?以下例のようなことが知りたいです。 例1 INDEXのないテーブルに対しSQLを発行する場合、レコード件数の多いDBとレコード件数の少ないDBでは、レコード件数が少ない方が、パフォーマンスが良い? (前提として、検索対象DBは、レコード件数以外に差がないとする) 例2 WHERE句にINDEX項目を使用した場合、DBのレコード件数はパフォーマンスに影響しない (前提として、アクセスパスは適切で、検索対象をうまく絞り込むことができる) 例3 WHERE句にINDEX項目を使用したSQLをレコード件数の多いDBに発行する場合と、WHERE句にINDEX項目がないSQLをレコード件数の少ないDBに発行する場合では、どちらがパフォーマンスがよいのか (前提として検索対象DBは、レコード件数以外に差がないとする) 【質問2】 INDEXをDBに追加すると、INSERT、UPDATE、DELETEの際に、どのくらい影響するのでしょうか? 対象のDBは、5項目あり、400万件くらいのレコードがあります。また、複合項目(2項目)のプライマリキーと、単一INDEXがついており、新たに3項目の複合INDEXを追加しようとしています。 以上、よろしくお願いいたします。

  • テーブル名をカラムとして取得する方法

    テーブル名をカラムとして取得する方法はありますでしょうか? オラクル8とVB6でプログラムを組んでいます。 例 TABLE Aの内容 カラム1 1 2 3 TABLE B カラム1の内容 4 5 6 SQLは簡略化してかきます。下記のSQLを実行した場合、 select A.カラム1 from A union select b.カラム1 from b 1 2 3 4 5 6 を取得できます。 例えば、上記で、SQL実行後、 下記のような値を取得したいです。 1 ,Aのテーブルだよ 2 ,Aのテーブルだよ 3 ,Aのテーブルだよ 4 ,Bのテーブルだよ 5 ,Bのテーブルだよ 6 ,Bのテーブルだよ それぞれのテーブルの名前を別名で結果に格納したいのです。 何か方法はありますでしょうか? なければ、unionせずに、2回SQLを発行し、それぞれに、 プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

  • SQLの性能に関して

    SQLの初心者です。 質問がわかりずらかったら申し訳ありません。Oracleを使用してます。 多くのSQL文(約1000個)と、そのSQLでアクセスしたテーブルが保持しているレコード件数、さらに処理時間がかかれた資料があります。 取得できたレコード件数の資料はありません。 これらの資料を元に、SQLの性能は何に相関があるか(例えばjoinの数など)回帰分析を用いて調べようとしてます。 join数以外に、処理時間と何を比較すれば、相関が出そうですかね? また、変数を増やして重回帰分析も考えてます。 比較対象のアドバイスをお願いします。

  • DBロックを待ち続ける方法

    ロックがかかったテーブルに対して、 SELECT文を発行する際、ロックが解除されるまで 待ち続けるヒント句のようなものは SQL SERVERに存在するのでしょうか? (Oracleの「SELECT~FOR UPDATE文」に相当するものは  存在しないのでしょうか?) 使用しているDBはSQL SERVER 2000 です。

  • perlでファイルを分割するプログラム

    3Mを超える1つのテキストファイルに入っているデータある目印をもとに分割したいと思っています。分割ソフトをさがしたのですが見つけられませんでした(サイズで分割はありました)perlでテキスト処理ができると思い「テキスト処理とCGIのためのPerlプログラミング 伊藤 博康 (著) 」という本を借りてきたのですが、そのようなサンプルがなく1からperlを勉強する時間もないため、ここで質問させていただきました。ネット上にファイルを分割するperlのサンプルプログラムがありましたら教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう