株式会社インサイトテクノロジー 発行 http://www.insight-tec.com/jp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vol.5 ☆☆☆ おら!オラ! Oracle −どっぷり検証生活− ☆☆☆ 2000.05.17 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 他ではなかなか得られない、マニュアルを読んでもわからない、 そういったOracleに関する技術情報をお届けするメルマガです。 実際に検証した結果も交えてお伝えしていきます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━━━━◆ Oracle技術を高めたい人におすすめのセミナー◆━━━━┓ ★★ ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ★★ ★★ ┃Oracle8プロフェッショナルテクニック セミナー ┃ ★★ ★★ ┗━━━━━━━━━━━━━━━━━━━━━━━┛ ★★ ★★ご要望にお応えして開催決定!お知らせ&HPにて詳細ご案内中! ★★ ┗━http://www.insight-tec.com/jp/topics/semi_information1.html━┛ <<目次>> ■Oracle検証生活・・・フリーブロックに関する検証 その5 ■QAコーナー・・・1.ユーザのクオータについて 2.コアレスとAUTO EXTENDはどちらが優先? ■読者の方から寄せられた興味深い情報 ■お知らせ・・・★★要チェック!Oracleセミナー情報!! ○Oracle管理ツール ○連載情報 ○書籍格安販売 ○QAについて ■編集者より ■■注意事項!!■■ 本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、 等幅フォントをお使いただくことをお勧めします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <フリーブロックに関する検証 その5> ペンネーム ちゃむ 前回に引き続き、フリーブロックの領域をテーブルなどのオブジェクトが使用 するときの領域の割り当て方に迫ってみる。 1.minimum extentに関して 2.フリーブロックの断片をなるべく残さないような動き<次回以降説明> 3.フリーブロックをどのように使うかを表わしたフローチャート <次回以降説明> 1.の説明を引き続きおこなう。もし、minimum extentをcreate tablespace のときに指定しなかったらdefault 0になる。このときの動きを見ていこう。 db_block_size=2kの環境でテーブルスペースTESTをminimum extent指定なしで つくり、dummy1というテーブルを テーブルスペースTESTにINITIAL 2K(1ブロック)で作成し、以下の alter table文を100個実行してみる。 これは、指定したサイズだけエクステントをアロケーションさせるためのコマ ンドである。 alter table dummy1 allocate extent (size 2k); 1ブロックエクステント alter table dummy1 allocate extent (size 4k); 2ブロックエクステント alter table dummy1 allocate extent (size 6k); 3ブロックエクステント .............................................. alter table dummy1 allocate extent (size 196k); 98ブロックエクステント alter table dummy1 allocate extent (size 198k); 99ブロックエクステント alter table dummy1 allocate extent (size 200k); 100ブロックエクステント dba_extentsビューを検索してみると結果はどうであろうか? SEGMENT_NAME EXTENT_ID BLOCK_ID BLOCKS ----------------------------------------- DUMMY1 0 2 2 ←はじめのinitial extent DUMMY1 1 4 1 ←next 1ブロック DUMMY1 2 5 2 ←next 2ブロック DUMMY1 3 7 3 ←next 3ブロック DUMMY1 4 10 4 ←next 4ブロック DUMMY1 5 14 5 ←next 5ブロック DUMMY1 6 19 10 ←next 6ブロックなのに DUMMY1 7 29 10 DUMMY1 8 39 10 DUMMY1 9 49 10 DUMMY1 10 59 10 .......................................... DUMMY1 91 4269 95 DUMMY1 92 4364 95 DUMMY1 93 4459 95 DUMMY1 94 4554 95 DUMMY1 95 4649 95 DUMMY1 96 4744 100 DUMMY1 97 4844 100 DUMMY1 98 4944 100 ←next 98ブロックなのに DUMMY1 99 5044 100 ←next 99ブロックなのに DUMMY1 100 5144 100 ←next 100ブロック ここでまず注目してもらいたいのが、initialで2k(1ブロック)としていたのに、 2ブロックとられている。これは、セグメントヘッダーの領域が、テーブルに1 ブロック取られることを意味している。すべてのテーブルには、必ずセグメント ヘッダー1ブロックを取られるので、initialは必ず2ブロック以上は取られる。 その次のnextで1ブロックアロケーションさせたときにはちゃんと1ブロックだけ が割り当てられたこともあわせて確認していただきたい。 次に、6ブロックエクステントをアロケーションしたところに注目していただき たい。実際には10ブロック割り当てられている。それ以降も、5ブロック単位で 切り上げられて割り当てられている様子を確認できるだろう。 1〜5ブロックまでは指定したサイズでエクステントがアロケーションされるが、 6ブロック以上だと5ブロック単位で切り上げれることが読み取れるだろう。 これは、上記のalter tableのallocate extent だけでなく,insertした結果、エ クステントがいっぱいになり、次のエクステントを割り当てるとき(データが 増えてエクステントが発生するとき)にも、今回の結果と同様のアロケーション のされ方になる。 また、pctincreaseを指定したときにも5ブロック切り上げは、当てはまる。 但し、増分の計算方法の端数の切り上げと5ブロック単位の切り上げの順番に 注意していただきたい。(「その2」のQAの回答でもある) db_block_size=2kの環境 create table cre1 (col1 number) storage(initial 100k next 100k pctincrease 50 minextents 10); dba_extentsを参照 SEGMENT_NAME EXTENT_ID BLOCKS ------------------------------- CRE1 0 50 intial CRE1 1 50 next CRE1 2 75 50 *1.5= 75.0を5ブロック単位で切り上げ CRE1 3 115 75 *1.5= 112.5を5ブロック単位で切り上げ CRE1 4 170 113*1.5= 169.5を5ブロック単位で切り上げ CRE1 5 255 170*1.5= 255.0を5ブロック単位で切り上げ CRE1 6 385 255*1.5= 382.5を5ブロック単位で切り上げ CRE1 7 575 383*1.5= 574.5を5ブロック単位で切り上げ CRE1 8 865 575*1.5= 862.5を5ブロック単位で切り上げ CRE1 9 1295 863*1.5=1294.5を5ブロック単位で切り上げ 以上 茅ヶ崎にて 〜フリーブロックに関する検証 その4〜 by ちゃむ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ QAコーナー ▼━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ☆★Question1★☆ > ORACLE7.3および8.0で、OSはNTです。UNLIMITED TABLESPACEシステム > 権限が与えられているユーザがあります。ところがUSER_TS_QUOTASで見る > と結果は以下の通りでした。 > > TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS > ----------------------------------------------------- > USR 265011200 0 129400 0 > > 私の知る限りでは > 1)UNLIMITED TABLESPACEシステム権限が与えられているユーザは > CREATE USER時の指定に拘わらず、すべてのテーブルスペースに無制限の > クオータが割り当てられる。 > > 2)USER_TS_QUOTASで、BYTES、 BLOCKS が >0かつMAX_BYTES、 > MAX_BLOCKS =0というのは、そのユーザが該当のテーブルスペースに表 > などのオブジェクトを作ったあとに、QUOTAを0に変更された結果で、既に > あるオブジェクトは存在しつづけ、更新も可能。割り当て済みのエクステン > トに空き領域があればINSERTも、可。ただし、新たにエクステントの拡張が > 必要となるような更新は不可。 > > 1)と2)は矛盾する気がするのですが、どこかに認識の誤りが > あるのでしょうか? ☆★Answer&Advice★☆ 1)と2)ともに認識の誤りはありません。ただ一つだけ次の認識を加えて いただければと思います。 UNLIMITED TABLESPACEシステム権限が与えられると、CREATE USER時のQUOTA句 で明示的に与えたテーブルスペースの使用制限を、UNLIMITEDに上書きします。 また、UNLIMITED TABLESPACEシステム権限をREVOKE(取り消し)すると、 CREATE USER時のQUOTA句で明示的に与えたテーブルスペースの使用制限が再び 有効になります。これは、SELECT ANY TABLE権限と、明示的に与えたSELECTの オブジェクト権限の関係に似ていますね。但し、 DBA_TS_QUOTASからは、 UNLIMITED TABLESPACEシステム権限で与えても見ることができません。ここで 確認ができるのは、CREATE USERやALTER USER時に指定したQUOTA句の情報だけ です。 UNLIMITED TABLESPACE権限は他のシステム権限とは内部動作が少々異なります。 UNLIMITED TABLESPACE権限は、直接与えるよりも、事前定義済みロールの RESOURCEやDBAなどからユーザーに与えることが多いですね。 以下をご覧下さい。不思議なことに、dba_sys_privsからRESOURCEロールの システム権限を見ても、UNLIMITED TABLESPACE権限はありません。 (dba_sys_privsのGRANTEE(権限受領者)にはロールもユーザーも表示されます) select * from dba_sys_privs where grantee = 'RESOURCE'; GRANTEE PRIVILEGE ------------------------------ ---------------------------------------- RESOURCE CREATE CLUSTER RESOURCE CREATE INDEXTYPE RESOURCE CREATE OPERATOR RESOURCE CREATE PROCEDURE RESOURCE CREATE SEQUENCE RESOURCE CREATE TABLE RESOURCE CREATE TRIGGER RESOURCE CREATE TYPE でも、以下を見るとRESOURCEやDBAロールを与えたユーザーOSAMUには、UNLIMITED TABLESPACE権限が与えられています。このように、RESOURCEやDBAロールを与える とロールの一部としてではなく、ユーザーに対して明示的に与えられるよう動きを します。 select * from dba_sys_privs where grantee = 'OSAMU'; GRANTEE PRIVILEGE ------------------------------ ---------------------------------------- OSAMU UNLIMITED TABLESPACE また、UNLIMITED TABLESPACE権限をロールに与えるとどうなるでしょうか? 以下のようににUNLIMITED TABLESPACE権限はロールには与えることはできません。 ユーザーに対してのみ与えることができるのです。 GRANT UNLIMITED TABLESPACE TO ROLEMAN; ORA-01931: cannot grant UNLIMITED TABLESPACE to a role したがってUNLIMITED TABLESPACE権限が与えられているかどうかを見るときは、 dba_sys_privsでGRANTEEのユーザー名に着目して調べましょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ☆★Question2★☆ > コアレスすれば必要な空き領域が得られる場合ですが、 > PCT_INCREASEを0としてAUTO EXTENDの設定を > 入れたTABLESPACEの場合、エクステントを作成しようとすると > コアレスとAUTO EXTENDはどちらが優先されますか? ☆★Answer&Advice★☆ コアレスが優先されます。コアレスしても、必要な空領域が見つけられなかっ た場合のみAUTO EXTENDされます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ☆★読者の方からの興味深い情報★☆ > だいぶ前のプロジェクトの事なので,多少うろ覚えなのですが,SMONが > PCTINCREASE 0 のテーブルスペースをコアレスしない件を、サポートセンター > に聞いたら,バグとして報告されていて回避策はpctincrease > 0にして下 > さいとの回答でした。 > が,いつのまにか(7.2ぐらいのマニュアル?)から,それが仕様として記載 > されて,苦笑いをした覚えがあります。また,当初は2時間おきにチェック > すると書かれていたような気もします。で,どうしても強制的にコアレスを > したい場合,データファイルのサイズより大きいサイズをinitialに指定して > ダミーの表を作成するコマンドを発行してました。 > (当然,エラーにはなりますが,コアレスはされました) このような、裏話は、面白いですね。このような、体験談がありましたら教えて いただけると、この「めるまが」も盛り上がりますね。pctincrease=0以外のとき コアレスしないのがバグだったかどうかは、わたしにも検証できません。 これらのコアレス関係の話は、「フリーブロックをどのよう使うかを表わしたフ ローチャート」を、「その8」でホームページに掲載する予定なので、そのとき、 またお考え下さい。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ Oracle8 プロフェッショナルテクニック セミナー ▼━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 昨年開催され大好評を博した上記のセミナーが、皆様からのラブコールに お応えして再び開催されます。 「今回は新たにOracle DBAとして現場で活躍しようとしているような フレッシュな方を対象にベーシックな部分に力を入れたセミナーを開きたい」 という講師を務める小幡の言葉にもありますように、Oracle DBAをこれから 目指す方々にわかりやすい言葉で丁寧なセミナーを行います。 テキストとして使われるのは、同名の既刊本(HPにて発売中)。著者による 解説を加えて読み解くことができるので、さらに理解が深まるはずです。 「わたしもこの本を解説してもらってSKILL UPしたんですよ。」(うさぎ談: 月刊DB Magazine誌「DBAのお仕事」で活躍中!)という例もあるように、 有意義なセミナーになること間違いなし!この機会にぜひご参加ください。 お申し込みは以下のURLにて承っています。 http://www.insight-tec.com/jp/topics/semi_information1.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ Oracle 管理ツール▼━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール の決定版。インサイトテクノロジーの技術者の知恵とノウハウがここに結集! パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、 そして開発にも役立つ機能がいっぱいです。 詳しくは以下のURLをご覧ください。 http://www.insight-tec.com/jp/products/products.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ 連載情報 ▼━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <雑誌連載:体験的・DBAのお仕事(DB Magazine(翔泳社))> Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております 連載記事です。Oracle関連業務に携わる方、是非ご一読ください。 現在6月号が書店にて発売中です。 http://www.insight-tec.com/jp/topics/magazine.html 上記のURLで各回のタイトルがご覧になれます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ 書籍格安販売 ▼━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <1割引&送料無料> 好評をいただいております既刊本「Oracle8 プロフェッショナルテクニック」 を弊社のHPよりお申し込みいただいた方に限り、1割引&送料無料でご提供いた します。(先にご紹介した「Oracle8 プロフェッショナルテクニック」 セミナーに参加される方は、こちらでご購入された方がお得です。) 専門書としては異例の速さで増刷が決定するほどの好評をいただいている 「Oracle8 プロフェッショナルテクニック」をお得に入手するチャンスです。 この機会をお見逃しなく! http://www.insight-tec.com/jp/topics/books.html ホームページより受付中です。お早めに! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ 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. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
