• ベストアンサー

長年放置しているOracleを…なんとかしたい

お世話になります。 お恥ずかしい話、パッチは定期的に当てているものの 長年(5年?)放置しているDBサーバがありまして 最近特に動きが遅くなって来たとの話になっております。 何から手を付けたらよいのかもよく分かりませんが "v$"や"DBA_"で始まるテーブルなどを見ると 断片化とかいろいろな状態を判別できるようなので 幾つかにselectをかけてみたのですがデータが入っておりませんでした。 動き始めてこの方、 統計情報をとった事がないせいかとも思いますが あまりanalyzeはかけない方がいいとも聞くので どうしたものかと困窮しております。 ▼以下の2点ご教示いただけますでしょうか? ・とりあえず統計情報を取得して、判断材料を集めるのがよいでしょうか? ・こういった状態のDBを、今後はきちんとメンテナンスするとして  どういったことを行ってゆけばよいでしょうか。  ※参考になりそうなURLもあれば幸いです。 宜しくお願いいたします。 

  • Oracle
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • joih
  • ベストアンサー率35% (37/105)
回答No.2

おさっしのとおり、断片化が原因と思います。 直感的に、ですが、indexのフラグメンテーションは性能がだいぶ劣化した記憶があります。 断片化についてはこのあたりが参考になります。 http://biz.rivus.jp/technote507131.html http://biz.rivus.jp/technote507020.html 今後は気が向いた時にTruncateしてデータを入れなおしてあげるときれいに整頓されますよ。

nono_taro
質問者

お礼

回答ありがとうございます。 やはり断片化が怪しいですか~ 統計情報を収集してどの表と索引を作り直すか検討してみたいと思います。 この度はありがとうございました。

その他の回答 (1)

回答No.1

ちょっとうろ覚えなもので明確な回答になりませんが断片化の情報はシステム表から取得出来ます。 断片化情報を表示するツールは探すと結構ありますのでそちらを探してみて下さい。 私は定期的にエクスポート、ユーザー再作成、インポートを行い断片化の解消を行っています。 参考になれば。

nono_taro
質問者

お礼

システム表の見方を参考書で見てみましたが やはり統計情報を取らないといけないようで こちらの環境では値が入ってない様子でした。 負荷がかかったりしそうですが 夜中に一回取得してみようと思います。 いろいろフリーのツールを試してみましたが 試した範囲では統計情報が必要だったり 常駐のプロセスが動いてみたりと 微妙なモノしか見つかりませんでした。 ここは諦めて自分で計算しようと思います。 どうもありがとうございました。

関連するQ&A

  • PostgreSQLのanalyzeとは

    PostgreSQLのanalyzeについてですが。 [TABLE]の統計情報を再取得する為に  analyze TABLE; と実行した場合。 該当のテーブルへの影響というのは全く無いものなのでしょうか。 (同じタイミングでアクセスしたselectが遅延してしまう等)

  • ASPでoracleの接続について教えてください。

    環境は、Windows2003 Server IIS6.0 ORALCE 10G です。 ASPでORALCEのテーブルを参照するためのテストのため サンプルのASPを動かそうとしているのですがページ エラーとなってしまいます。ちなみにORACLEユーザー は、DBA権限、OS認証済みです。 サンプルソースは以下の通りです。 <% Option Explicit Dim ss, db, rs, fd Dim strSQL Dim varStart, varEnd, varInterval varStart = Timer ' 読み込み開始時間記録 ' 接続先情報を指定します。 Const strDatabase = "ORCL" ' データベース名(サービス名) Const strUserID = "A" ' ユーザID Const strPassword = "A" ' パスワード ' 抽出するレコードを指定します。 strSQL = "SELECT * FROM EMP" Set ss = CreateObject("OracleInProcServer.XOraSession") Set db = ss.OpenDatabase(strDatabase, strUserID & "/" & strPassword, 0) Set rs = db.DbCreateDynaset(strSQL, 0) %> セキュリティーの問題とか関係してくるのでしょうか?

  • Oracle 8i に入っている値が、おかしい(指定した値ではない)

    お世話になります。 現在、Oracle8i を使っています。会社で、社員情報メンテナンス表を作っているんです。社員番号を主キーとして扱っています。 そのテーブルを Java を使って扱っているんですが、この社員番号を検索して、帰ってくる値が、登録(INSERT 文) の時の値と違います。全く違うんではなく、見た目は一緒ですけど、コンピュータで扱うと違うという返事が返ってきます。 具体的にいうと、1 で登録した番号を、SELECT 文で返ってきた値を Java で 1 と同じか?と聞いてみると、違うとコンピュータが返します。僕のプログラムがおかしいのか?と思い、家に返って ほかのDB を使って、試したところちゃんとできました。 Java のプログラムを使って、DB からかえってきた値をコンソール画面に表示したら、ちゃんと「 1 」と表示されます。しかし、その値が、「 1 」と等しいか? Javaで調べるプログラムを作ってみると、違うという答えが返ってきます。 誰かわかる方は、ご返事ください。よろしくお願いします。

  • VACUUM ANALYZE の頻度について

    表題の件について質問させてください。 環境は PostgreSQL8.2.1 pgpoolにてDB2台で運用しております。 現在、とあるECサイトの運用などに携わっております。 1日平均が2~3千件の注文があり、注文情報を格納してるテーブルが150万件くらいになっています。 元々の作りが全てその注文テーブルに色々な情報を持たせてしまっており、更新頻度も結構高いです。 その状態で、現在は3時間に1回VACUUM ANALYZEをかけているのですが、その影響かはわからないのですが、セッション数(pg_stat_activityの件数)が正常運用時の3倍程度になる事が、ここ最近頻発しており、サイト全体の処理速度に影響しております。 1.VACUUM ANALYZEは、ロックがかからずにSELECT,UPDATE,INSERTなどが出来ると認識しておりますが、実行中に更新がかかっても問題ないという認識はあっておりますでしょうか? ロックがかかったまま、セッションに残ってしまっているのは別の原因という事であっていますでしょうか? 2.VACUUM ANALYZEの頻度として、3時間に1回という頻度は多いのでしょうか? やはり、pg_stat_activityで監視をしていると、VACUUM ANALYZEの処理に時間がかかって、セッション数が多くなり、処理速度にかなり影響をあたえているのでは無いかと言う気がしてなりません。 以上、2点について、何かご教授頂ければ幸いです。 宜しくお願い致します。

  • dB-SOFT株式会社様の現在の所在について教えてください

     皆様今晩は、初めまして。表題の件について、何か情報をお持ちの方がおられましたら教えて頂けると有難いです。  現在、ホームページ作成にdB-SOFT様の「HOTALL 2001 改訂版」と言うのを使っています。昨年末、パソコンを修理(ハードディスク交換)に出して先日戻って来ました。HOTALLも再度インストールしました。このソフトはアップデートパッチが必要なのですが、dB-SOFT様のホームページにアクセスしてみると、何故か消えている?状態です。他の検索サイトで「dB-SOFT」,「HOTALL」等で検索してみましたが、全てリンク切れになっています。付属マニュアルのサポートへ電話してみたのですが「現在使われておりません...」とのアナウンス。このdB-SOFT様って現在でもあるんでしょうか?合併とか何かで今はもう無くなってしまったんでしょうか?dB-SOFT様に関して何か情報をお持ちの方がおられましたら教えていただけないでしょうか。または、何処かのサイトにdB-SOFT様についてのなんらかの情報があるのであれば、サイト先を教えていただけないでしょうか。  長文になり申し訳御座いません。何卒宜しくお願い致します。

  • 多すぎる情報を断片化なく扱うにはどうすれば良いと思

    多すぎる情報を断片化なく扱うにはどうすれば良いと思いますか? MicrosoftとGoogleの世界の知の叡智が集まっても、フォルダ管理からタグ管理に変わったに過ぎません。 中にはもう分類を諦めて、全てを検索で済ませる横着者まで現れています。 私もタグ管理をしてみましたが、タグが複雑化してきて、最適化しようと思うとタグ管理では上手くいきませんでした。 どうすれば、1日3万件ほどの新規統計、開発データを管理出来るようになるのか教えてください。1ヶ月で90万件、1年間で1080万件のデータを断片化なく扱いたいです。断片化がない最適化された状態とは、データを取り忘れるということがないことを言います。 今は、漢字、カタカナ、英語、略称表記で切り抜けていますが、略称が多かったり、略称の英語が長かったりして、死にそうというか死んでます。

  • コストベース・オプティマイザについて。

    オプティマイザには、  1)ルールベース・オプティマイザ(RBO)  2)コストベース・オプティマイザ(CBO) があります。 RBO は、決められたアクセスパスの優先順位に従って 実行計画を選択することが分かりました。 CBO は、最適なアクセスパスを選択する為に、 オプティマイザ統計を取得し、実行計画のコストを 見積もることが分かりました。 ★このオプティマイザ統計に関して、質問があります。  オプティマイザ統計は、ANALYZE や DBMS_STATS パッケージを  使用することで取得する統計情報ということが分かりました。  しかし、統計情報を取得することでどのように実行計画が  改善されるのか、この部分のイメージが掴めません。 ================================================================ 例えば、表の統計情報を取得すると、以下のようになりました。 SQL> select NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT 2 ,AVG_ROW_LEN 3 from user_tables where table_name='EMP'; NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN ---------- ------ ------------ --------- ---------- -----------   15 5 0 0 0 35 ================================================================  それぞれのカラムの意味は以下であることが分かりました。   《上記のカラムの説明》   NUM_ROWS   = 行数   BLOCKS    = 使用ブロック数   EMPTY_BLOCKS = 未使用ブロック数   AVG_SPACE  = 空き領域の平均サイズ(bytes)   CHAIN_CNT   = 行連鎖・行移行の行数   AVG_ROW_LEN = 行の平均長(bytes)    上記の統計情報を取得することで、どのように実行計画を定めているのでしょうか。  統計情報を取得することで、どのような意味があるのでしょうか。  宜しければ、教えて頂きたいと思います。

  • DB初心者です。

    DB初心者です。 現在、システムのDBで「TERADATA」を使用しています。 データ整理という名目で、不要なテーブルやデータを削除したりしたいと思っています。 (システム稼働中で行う作業) 中には数百GB級の不要テーブルもあり、システムが稼働中の中、 気軽にDROPまたはDELETEをしていいものなのか迷っています。 (しかし、この不要テーブルはどこからも参照されません) 別なところでは、 巨大な不要テーブルを削除したら、 統計情報が変わってしまい、ローディングなどが異様に遅くなったとの話も聞いています。 システムとは関係なく、DB内での影響はあるのでしょうか?

  • AIX機へのOracleインストール中にArrayIndexOutOfBoundsExceptionでOUIが落ちる

    こんにちは。 oracleのインストールにおいて、タイトルのようなjavaExceptionが発生して、OUIが落ちてしまい困っています。 【環境】 OS:IBM AIX 5L 5.3 (メンテナンスレベル、パッチ等はOracleインストール要件を満たしています) ※LANGはJa_JP、文字コードはShift_JISだと思われます。 Oracle:Oracle Database 10g for AIX-Based Systems(64bit) 【前提】 OSのHARDWARE_BIDMODEは当然64です。 JDKはIBM 32-bit SDK for AIXを使用しています。 oinstall,dbaグループおよびoracleユーザは作成済。 oracleユーザに対してJAVA_HOME,PATH等は設定済。 Oracleコンポーネントインストールディレクトリ(ORACLE_BASE)は /opt/oracleを用意し、オーナーをOracleに変更済。 データベースファイル用ディレクトリは、/xxxx/oradataを用意し、 オーナーをOracleに変更済。 【エラー内容】 上記前提のもとに、DVDからrunInstallerを起動するとOUIが立ち上がるので、必要情報(Oracleホームやインベントリ証明等)を設定し、 「インストール」を押下して開始した直後に、「内部エラー」が発生しました、となりOUIが落ちてしまいます。 ログから拾ったエラー内容は以下になります。 ・stderrの内容 Exception java.lang.ArrayIndexOutOfBoundsException: 8192 occurred.. java.lang.ArrayIndexOutOfBoundsException: 8192 at com.ibm.nio.cs.DBA_Encoder.encodeArrayLoop(DBA_Encoder.java(Compiled Code)) at com.ibm.nio.cs.DBA_Encoder.encodeLoop(DBA_Encoder.java(Compiled Code)) at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java(Compiled Code)) at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java(Compiled Code)) at sun.nio.cs.StreamEncoder.write(StreamEncoder.java(Compiled Code)) at java.io.OutputStreamWriter.write(OutputStreamWriter.java:211) at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:126) at java.io.BufferedWriter.write(BufferedWriter.java:221) at java.io.PrintWriter.write(PrintWriter.java:241) at java.io.PrintWriter.write(PrintWriter.java:258) at java.io.PrintWriter.print(PrintWriter.java:389) at java.io.PrintWriter.println(PrintWriter.java:526) at oracle.sysman.oii.oiix.OiixFileOps.copyFileAsText(OiixFileOps.java:1630) at oracle.sysman.oii.oiij.OiijFastCopyPhase.copyFilesToScratch(OiijFastCopyPhas e.java:1454) ~以下略~ ・インストールログの内容 ~略~ INFO: ファイル'oracle.server_EE_1.xml'の情報に基づいて高速コピーを実行中です。 INFO: ファイル'setperms1.sh'の情報に基づいて高速コピーを実行中です。 SEVERE: プログラムの異常終了。内部エラーが発生しました。 ~略~ となっております。 JavaExceptionの内容が意味不明で(なんで配列の未指定部分を読みに行ってのエラーなのか)、究明が進んでおりません。 もし何らかの情報をお持ちの方がおりましたら、何卒回答をよろしくお願い致します。

  • 長年放置されていたJADE

    こんにちわ。 私自身がJADEに乗ってるわけではないのですが、友人が、友人のおじさんが乗っていたJADEに乗ろうとしています。 現在友人は教習所に通ってる最中です。 そこで長年眠ってたJADEを乗れるようにしたいという話が出てまして、私自身はCB400SFに乗っているのでJADEについて詳しくわかりません。 バイクは・・・・ 91年式のJADEで、約10年程放置(保管)されていたとのことです。 保管状態は、ガレージ(屋根付き)保管で、良好だと思われます。 外装に目立った錆びや腐食はありません。 走行距離は、約20000kmで、まだまだ行けると思います。 タイヤは腐食していたり、チェーンがダメな状態なので、それらは交換の予定です。 がしかし、それ以外のこと(つまり内部)のことがイマイチわかりません・・・。 ダメもとでキーをONにしてみましたが、全く反応がない状態で、バッテリーは交換せざるを得ないと思います。 チェーンも錆びてるし、弛んでるので要交換かと思っています。 JADE以外のほとんどのバイクに言えることですが、長年乗っていなかったバイクを復活させるには、まずは何をすべきなのでしょうか?? ・キャブのOH ・プラグ交換 などなどでしょうか??