株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vol.2
☆☆☆ おら!オラ! Oracle −どっぷり検証生活− ☆☆☆
2000.04.19
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
他ではなかなか得られない、マニュアルを読んでもわからない、
そういったOracleに関する技術情報をお届けするメルマガです。
実際に検証した結果も交えてお伝えしていきます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・フリーブロックに関する検証 その2
■QAコーナー・・・管理者のおさえるべきポイント
■お知らせ・・・○Oracle管理ツール ○セミナー案内
○連載情報 ○書籍格安販売
○QAについて
■編集者より
■■注意事項!!■■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、
等幅フォントをお使いただくことをお勧めします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<フリーブロックに関する検証 その2> ペンネーム ちゃむ
〜〜〜〜 読者からの質問 〜〜〜〜
読者の「きょん」さんからコアレスは自動発行されるのか?
Oracle のバージョンで動きは異なるのか?
という質問を受けました。今回の記事を読めば、理解していただけると思います。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
前回に引き続き、フリーブロックの検証をおこなう。コアレスをおこなうのは、
以下のタイミングである。
1.alter tablespace <テーブルスペース名> coalesce を発行したとき。
2.5分に一回smonが自動的に
(テーブルスペースのpctincrease 0以外を設定したテーブルスペース)
3.pctincrease 0に設定したかしないに関わらず、コアレスしないとエクス
テントを割り当てる空領域が足りないとき
前回は、1.に関して、このコマンドを実行したときのV$LOCKの動きなどを説
明した。今回は2.に関して検証を交えながら説明する。まずは、単純に、
pctincrease 0とpctincrease 0以外のときで5分以上時間を空けたときにコアレ
スするかしないかを確認してみる。
当然、検証を行う前にCREATE TABLEとDROP TABLE などをしてエクステント境界線
のあるフリーブロックを作っておく。つまり、フラグメントを発生させる。
結果は、やはりpctincrease 0のときは、コアレスしないが、pctincrease 0以外
のときはコアレスを行った。create tablespace,alter tablespace のdefault
storageで指定するpctincreaseは、2つの意味をもつ。一つ目は今検証した、コア
レスするかしないかを決めること。
二つ目は、create tableするとき、pctincreaseを指定しなかったらそのテーブル
を格納するtablespaceのpctincreaseをデフォルトで使用することである。
また、コアレスはあくまでも、表領域単位なので、TABLEでpctincreaseをいくつ
に指定したかに関わらず、表領域での、pctincreaseが0か0以外かで決まる。
では、次にsmonがコアレスする際に対象テーブルスペースを特定するために実行
するSQL文を見てみよう。以下は8.1の環境で取得したものである。
select f.file#, f.block#, f.ts#, f.length from fet$ f, ts$ t
where t.ts#=f.ts# and t.dflextpct!=0 and t.bitmapped=0
ちなみに、このsql文は、
SELECT SID,SQL_TEXT FROM V$SQL ,V$SESSION
WHERE ADDRESS = SQL_ADDRESS AND TYPE='BACKGROUND';
でBACKGROUNDで実行されているsql文を見ることができるので、やってみていた
だきたい。また、v$session_waitを見ることによって、300秒おきにつまり5分お
きにsmonが処理をしているというのを見ることができる。
下記のSID(セッションID)は上記でBACKGROUNDで実行さえれているSQL文のSIDと
一致する。
SID SEQ# EVENT P1TEXT P1
----------------------------------------
5 1457 smon timer sleep time 300
話をもとに戻して、コアレスする際に対象テーブルスペースを特定するためのS
QL文のwhere句のt.dflextpct!=0のところが、pctincrease 0以外のもので絞り込
んでいることをあらわす。
また、where句のt.bitmapped=0は、ts#テーブルの
項目であるが、実は、これは8.1からの新機能に関連する。create databaseを実
行するときにsql.bsq(oracle_home/rdbms/admin)が実行される。その中にこのts#
テーブルをつくるスクリプトがあるが、その中で、bitmappedは次のようなコメン
トがついている。/* If not bitmapped, 0 else unit size */
どうやら、ビットマップを使って表領域の管理をするようである。これでは、あ
まりよくわからないが、USER_TABLESPACESビューでEXTENT_MANAGEMENTという項目
はこのbitmappedをもとにdecode関数で次のように置きかえられている。
decode(ts.bitmapped, 0, 'DICTIONARY', 'LOCAL')
0なら'DICTIONARY'それ以外なら'LOCAL'。
これは、表領域が'DICTIONARY'か'LOCAL'かどちらのタイプかを表わす。
'DICTIONARY'は従来のテーブルスペースであり、'LOCAL'はローカルエクステン
トマネージメントのテーブルスペースである。つまり、従来どおりの表領域であ
れば、コアレスするが、8.1からの新機能であるローカルエクステントマネージメ
ントのテーブルスペースはコアレスはしないことを意味する。
なお、ローカルエクステントマネージメントは8.1からの新機能なので、それ以前の
バージョンではSQL文のwhere 句は where t.ts#=f.ts# and t.dflextpct!=0までである。
ローカルエクステントマネージメントに関しては、もう少し後で別に切り出して検証
を交えて説明する。
8.1ではローカルエクステントマネージメントか従来どおりかはcreate tablespace
をする際の指定で決まる。ORACLE 8.1のsqlマニュアルのcreate tablespace文のと
ころや8.1の概要Vol1 に説明があるので参考にしていただきたい。
「きょん」さんこれでにコアレスに関してだいたいわかりましたね。
あと、SMONの自動コアレス機能は、検証したところ Oracle7.1.6以降であれば行
われています。(それ以前は確認してません)
以上 茅ヶ崎にて
〜フリーブロックに関する検証 その2〜
by ちゃむ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ QAコーナー ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☆★Question★☆
>既にシステムは安定稼動しており、バックアップは自動で行なっている
>状況下で、管理者としてはあとは何をポイントに管理すればよいですか?
読者の方からいただいたご質問の中から、上記のご質問をとりあげます。
☆★Answer&Advice★☆
運用管理の目的は、当然のことですがシステムを安定稼動させるこ
とです。「安定稼動している」とは、システムのサービスを停止させ
ない、という当たり前のことから、レスポンスダウンを防ぐなどの
サービス品質の面まですべて含んでいます。
では安定稼動させるために行わなければならないことは
1. トラブル発生を(防げるものは)未然に防ぐ
2. それでもトラブルが発生した場合は速やかに対処・復旧する
という2点が重要になってきます。
1. トラブルを防ぐ
まず、監視しなければならないのはおっしゃるとおり領域管理です。どんなに
安定稼動しているシステムでも、増え続けるデータは存在する
と思います。そのとき、領域的な問題でデータの insertに失敗する原因だけ
でも以下のようなケースがあります。
a) テーブルの max extentに達して、エクステント拡張に失敗する
b) テーブルの max extentを unlimitedにして a)を回避したが、テーブルス
ペースの領域が無くなり、エクステント拡張に失敗する
c) テーブルスペースを autoextend指定して b)を回避したが、ハードディス
ク領域が足りなくて、データファイル拡張に失敗する
(さらに細かいデータファイル自体の大きさの制限等は、弊社著書 ORACLE8 プロ
フェッショナルテクニックP84、85 ソフトリサーチセンター 参照)
そのようなエラーを含むシステム的なエラーは、アラートログファイルに出力さ
れますので、アラートログは非常に重要な監視項目です。また、アラートログフ
ァイルにはalter tablespaceなどのデータベース構成の変更履歴も残ります。
領域管理はデータベースの中だけでなく、OS上でも必要になってきます。
先ほどのアラートログファイルの出力先も当然有限のディスクなので、領域管理
は必要ですし、アーカイブログの出力先の領域管理は、大変重要な監視項目です。
以上からお分かりのとおり、領域管理からは、逃げることができないでしょう。
あと、パフォーマンス的な側面からの管理を見ると、例えば (Bツリー)インデ
ックスは、update、delete、insertが行われると、構造的に木構造が歪んでいっ
てしまいます。
歪みが進むと物理リード量が増えるので、そのインデックスを使用している
SQL文のパフォーマンスが悪化してきます。
監視した上で定期的にインデックスを再作成(drop & create)または、rebuild
する必要があります。
データ数が増えたときに、また木構造が歪んだとき、物理リード数が増えます。
物理リードが増えると当然、メモリーに読み込む容量も増えていきます。です
から、領域管理に付随して、メモリーの監視も重要になってきます。
具体的には、ディスクから物理リードをしたときにラッチ(メモリー上のロック
のようなもの)の競合の割合が高くないか等を監視する必要があります。
2. トラブル発生時にすみやかに対処・復旧する
あらゆるトラブルを防ぐ手立てをしても、トラブルは発生します。
(例えば製品の不具合やハードウェア障害など)
その場合でも、対処・復旧への準備をしておくことが重要で、被害を最小限にと
どめなければいけません。トラブル発生を早く検知し、副次的なトラブルを併発
する可能性を減らすための仕組みや、データベースリカバリが必要となるような
最悪の状況でも、そのリカバリ処理を速やかに行うための手順が必要です。
トラブル発生時に対処・復旧するためには、バックアップは必須です。
今回の質問ではexportを使っているのか OSコマンドでデータファイルをバックア
ップしているのかわかりませんが、リストアーのリハーサルをしたことはありま
すか?
よく、お客様でバックアップをちゃんととっていても手順書がなかったり、手
順書があっても誤っていたり、誤っていなくても、他人が作ったもので実際やり
方がわからなくなってしまうことがよくあるようです。
また、DATなどのメディアの故障で結局リストアできなかったり、あるいは必要
なファイルをバックアップ対象にしなかったために、リストアができなかったり
するケースがあります。
必要なファイルをバックアップ対象からもらしてしまうのは、例えばデータフ
ァイルのバックアップを取って表領域が足りなくなって、データファイルを
alter tablespaceで追加したとしましょう。
そのとき追加したデータファイルもバックアップ対象にしなければなりませんが、
それをするバッチ等のプログラムに追加し忘れるようなケースも多いようです。
やはり、管理者であるなら、いざというときのために、リストアのリハーサル
を定期的に、そしてバックアップの対象が変わる(増える)ときには、やって
おくべきでしょう。(もし、おこなっていたら大変失礼しました。)
どんなに安定稼動しているシステムでも、監視は重要です。
データベースを知れば知るほど、本当に、監視の必要性を感じます。
宣伝になってしまいますが、弊社のパフォーマンスインサイトという製品は、
データベースに常駐してシステムをあらゆる角度から診断して評価レポートを
出力して、以上に書いたようなことを、(それ以外にも約400種類のヒント)
管理者にメール等で教えてくれます。
Performance Insightの詳細は以下にも説明がございます通り、
弊社HPにアクセスしていただくか、無料セミナーにぜひご参加ください。
↓↓↓↓↓↓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle 管理ツール▼━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール
の決定版。インサイトテクノロジーの技術者の知恵とノウハウがここに結集!
パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、
そして開発にも役立つ機能がいっぱいです。
詳しくは以下のURLをご覧ください。
http://www.insight-tec.com/jp/products/products.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ セミナー案内 ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<無料セミナーのご案内>
次回の無料セミナーは、4月28日に開催いたします。
特別セミナーとして、日経オープンシステムに連載された中から
「REDOログの仕組み」について、弊社のデータベース・コンサルタントが
わかりやすくご説明させていただきます。
http://www.insight-tec.com/jp/topics/semi_information.html
インサイトテクノロジーのホームページより申し込み受付中です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 連載情報 ▼━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<雑誌連載:体験的・DBAのお仕事(DB Magazine(翔泳社))>
Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております
連載記事です。Oracle関連業務に携わる方、是非ご一読ください。
http://www.insight-tec.com/jp/topics/magazine.html
上記のURLで各回のタイトルがご覧になれます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 書籍格安販売 ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<1割引&送料無料>
好評をいただいております既刊本「Oracle8 プロフェッショナルテクニック」
を弊社のHPよりお申し込みいただいた方に限り、1割引&送料無料でご提供いた
します。
専門書としては異例の速さで増刷が決定するほどの好評をいただいている
「Oracle8 プロフェッショナルテクニック」をお得に入手するチャンスです。
この機会をお見逃しなく!
http://www.insight-tec.com/jp/topics/books.html
ホームページより受付中です。お早めに!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ QAについて ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
QAへの回答もあり、ずいぶん長くなってしまいました。
あれもこれもきちんと説明したいと思うと、こうなってしまうんですね。
よりよいメルマガにするために、QAだけでなくご意見ご感想も大歓迎です。
是非皆様方のお知恵をお貸しください。 by UA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録・解除は以下のURLで行うことができます。
http://www.insight-tec.com/jp/em/mail_magazine.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com/jp
マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2000, Insight Technology Inc., All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━