|
返信数:
10
-
ページ数:
1
-
最新投稿
:
2006/10/10 11:02
最新投稿者: seiten_sora
-
スレッド表示形式:
|
|
|
|
|
|
|
統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 14:33
|
|
Oracle8i Release8.1.7.2.0 OS:SunOS 5.8
上記の環境で統計情報をcrontabを使用して、 毎週日曜日に取得しています。
3・4週間に1回、統計情報の取得が途中で止まってしまいます。 途中で止まりかつ、Tomcatも道ズレで一緒に停止してしまいます。 正常に終了する時は、2分くらいで終了します。
統計情報を取得するために使っているコマンドは下記です。 exec dbms_stats.gather_table_stats(ownname=> 'XXX', tabname=> 'AAAA ', partname=> NULL);
アプリケーションの内容は、Apache・Tomcatを使用したJAVAです。 業務の勤怠管理、日報を書き込むシステムなので日曜日は 誰も使用していません。 Oracleの設定やサーバの設定を変更することも出来ます。
統計情報を取得するコマンドが怪しい気もします。
宜しくお願い致します。
|
|
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 15:26
tunodasann さんへの返信です。
|
|
こんにちは。
>3・4週間に1回、統計情報の取得が途中で止まってしまいます。 なにかエラーが出ていませんか? (ORA-1555とか、怪しいですね。)
|
|
投稿数:
9,980
登録日時:
00/10/25
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 15:34
tunodasann さんへの返信です。
|
|
>3・4週間に1回、統計情報の取得が途中で止まってしまいます。 >途中で止まりかつ、Tomcatも道ズレで一緒に停止してしまいます。 >正常に終了する時は、2分くらいで終了します。
エラーになるのではなく処理が止まってしまうのでしょうか? その場合止まったままの処理の復旧はどのようにしてやっていますか? alertログに何か情報は出ていませんか? cronログに何か情報は出ていませんか? Tomcatの方にも何かログは出ていませんか?
|
|
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 16:27
tunodasann さんへの返信です。
|
|
>>ででさん Cronログ 開始のログは残っていましたが、終了のログが在りませんでした。 エラーは記録されていません。 別途行っている、EXP処理の開始・終了ログは正常にありました。
ALERTログ 対象の時間前後には特にエラーは確認できませんでした。
Tomcatログにも、対象の時間前後にはエラーは確認できませんでした。
>>かよさん、 ORA-1555エラーはかなり怪しいかもしれません。 TABLEの容量は、300MB中192MBほど使用中。 TEMPの容量は、150MB中90MB使用しています。
>>menelausさん 私が動作させている >exec dbms_stats.gather_table_stats(ownname=> 'XXX', tabname=> 'AAAA >', partname=> NULL); は、Oracle Enterprise Managerで統計情報を取る時に出てくる コマンドをそのまま実行しているだけです^^; menelausさんのリンクを参考に試してみます。
あと、cronの起動方法は、 shスクリプトに、Oracleの環境変数を記述して、
sqlplus user/pass @/home/oracle/table_stats.sql と、書いてtable_stats.sqlの中身は、 exec dbms_stats.gather_table_stats(ownname=>・・・ exec dbms_stats.gather_table_stats(ownname=>・・・ 〜テーブルの数だけ繰り返し記述〜 quit;
です。
|
|
投稿数:
2,528
登録日時:
00/06/02
|
|
|
|
RE[1]:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 17:50
tunodasann さんへの返信です。
|
|
>sqlplus user/pass @/home/oracle/table_stats.sql >と、書いてtable_stats.sqlの中身は、 >exec dbms_stats.gather_table_stats(ownname=>・・・ >exec dbms_stats.gather_table_stats(ownname=>・・・ >〜テーブルの数だけ繰り返し記述〜 >quit;
全テーブルならばGATHER_SCHEMA_STATSだと一行で済みます。 ただしデフォルトはインデックス情報を取らないのでCASCADEが必須です。
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>'XXX',CASCADE=> TRUE);
|
|
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 17:58
tunodasann さんへの返信です。
|
|
>アプリケーションの内容は、Apache・Tomcatを使用したJAVAです。 >業務の勤怠管理、日報を書き込むシステムなので日曜日は >誰も使用していません。 >Oracleの設定やサーバの設定を変更することも出来ます。
なんとなく、何かがロックとかを取っていて、待ちになっている という感じを受けるのですが、そういうことは有り得ないのでしょうか。
また、一表ずつ統計情報を取得するスクリプトなのであれば、 どの表まで統計情報の取得が完了しているかを確認すると 何か傾向が見えるのはないでしょうか?
|
|
投稿数:
5,205
登録日時:
00/04/03
|
|
|
|
RE[1]:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 18:28
tunodasann さんへの返信です。
|
|
syslogにも何も情報がありませんでしょうか?
|
|
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/06 21:14
tunodasann さんへの返信です。
|
|
Alertログに、ORA-XXXXXのメッセージが出力されていませんか?
|
|
|
|
|
|
RE:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/10 10:46
tunodasann さんへの返信です。
|
|
・Alertログって、BACKGROUND_DUMP_DESTに書かれているパスの? ORA-XXXXX系は、無しでした。
/data/orcl/redo03.logファイルは、何で書かれているのか TeraPadで開くことが出来ません、どうやってみるのでしょう?
Thread recovery: start rolling forward thread 1 Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0 Mem# 0 errs 0: /data/orcl/redo03.log
・新たな情報としては、多くのユーザが一度に大量にログインすると 新たなセッションを取得できませんでしたエラーがTomcatから 返されるエラーが大昔からあったとの情報をゲットしました。 古いPCなので、メモリーも少ないのでその辺も原因なのかなとも思います。
・下記の情報が、載っていたのでチョット試してみたいと思います。
こうすると、指定したオーナー全てを統計情報をしてくれる。 EXEC DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>'MMJS',CASCADE=> TRUE);
こうすると、指定したオーナー全てを統計情報取得 + 20%のサンプルで統計 情報を採取 。 EXEC DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>'MMJS',CASCADE=> TRUE,ESTIMATE_PERCENT => 20);
|
|
投稿数:
1,369
登録日時:
03/11/18
|
|
|
|
RE[1]:統計情報を取得スクリプトがたま〜に失敗
投稿時刻:
2006/10/10 11:02
tunodasann さんへの返信です。
|
|
>・Alertログって、BACKGROUND_DUMP_DESTに書かれているパスの? >ORA-XXXXX系は、無しでした。 > >/data/orcl/redo03.logファイルは、何で書かれているのか >TeraPadで開くことが出来ません、どうやってみるのでしょう? > >Thread recovery: start rolling forward thread 1 >Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0 > Mem# 0 errs 0: /data/orcl/redo03.log >
redoログはエラーのログじゃないですよ
> >こうすると、指定したオーナー全てを統計情報をしてくれる。 >EXEC DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>'MMJS',CASCADE=> TRUE); > >こうすると、指定したオーナー全てを統計情報取得 + 20%のサンプルで統計 >情報を採取 。 >EXEC DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>'MMJS',CASCADE=> >TRUE,ESTIMATE_PERCENT => 20);
何も情報が無いと手探りで原因を探すしかないですね
ちなみに cronでなく そのシェルを手動で動かすと正常終了する事が前提ですよ ね?
もし 途中まで動作しているなら user_tables のlast_analyzed の日付が変わっ ているはずです
そこを見れば途中で終了なのかどうかの判断はつくと思います。
あとはシェルにはログ出力させたほうが良いですね
|
|
|
|