Insight Technology, Inc

インサイトテクノロジー

Japanese | English

株式会社インサイトテクノロジー 発行
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 メールマガジン登録/解除