![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在Oracle10gにてDB構築しているのですが、表領域サイズについてよくわからないので詳しい方がいらしたら教えてください。
以下の3つのテーブルを同一表領域内に入れたいと考え、表サイズの合計サイズ分の表領域を確保してそこにテーブルを作成しようとしたときに領域が足りずにエラーが発生します。
テーブルA 604,800KB
テーブルB 444,352KB
テーブルC 725,760KB
合計サイズ:1,774,912KB→確保サイズ:1,740MB
ブロックサイズ:16KB
しょうがないので少しずつ拡張して入るように調整したところ「1,750MB」確保したところ無事に作成することができました。
Enterprise Managerコンソールで使用量を確認したところ「1,744.063MB」となっていました。
約10MBほど多く領域が取られているのですが、この現象についてご存知の方がいらっしゃいましたらご教授願えませんでしょうか。
ちなみに他の領域についても同様に計算どおりのサイズになっておらず、増えているサイズはマチマチです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
STORAGE ( INITIAL 604800K ・・
の部分についてですが、
INITIALで指定した604800Kのエクステントが1個できていると思って見えるかもしれませんが、実際にはそうではないです。
(以前のディクショナリ管理ではそうだったのですが・・)
ローカル管理表領域のAUTOALLOCATEではORACLEにお任せです。
せっかくinitial値を指定しても、エクステントがたくさんできてしまいます。
合計では指定したinitialに近いサイズになりますが、ぴったりではありません。
ただ、initialの指定が無意味ということではなく、指定したinitial値に見合ったそれなりに大きめのサイズのエクステントを用意してくれますので、サイズ計算してinitial指定をする意味はあります。
dbaの権限にて以下を実行するとエクステントの状態がよくわかりますので確認してみて下さい。
col segment_name for a30
select segment_name,extent_id,bytes from
dba_extents where segment_name = '大文字表名';
確認したところおっしゃるとおりでした。
そうなると、表領域を確保するときにそれを見越したサイズにしないといけないのですね。
すごく勉強になりました。ありがとうございました。
No.1
- 回答日時:
takkunnet様私はOracle10gは触った事無いので、以前のバージョンの内容でお答え致します。
表領域のサイズについてですが、データベースに格納されているすべてのデータに対して、「データブロック」「エクステント」「セグメント」といった単位で「表領域」を構成しています。表領域には表や索引といったオブジェクトを格納します。そして、表や索引に使用可能な領域を割り当てます。この事から、実際はテーブルスペースより大きくなります。
また、上記の事が違うなら単にブロックサイズと実際のデータの配置の関係上フラグメンテーションの誤差ではないでしょうか。
この回答への補足
親切丁寧な回答ありがとうございます。
索引(プライマリキー、インデックス共)については別領域に割り当てております。
そういった場合でも何らかの情報が表定義の領域に入り込むものなのでしょうか?
ちなみにCreate文は
CREATE TABLE テーブルA (
項目1 VARCHAR2(10) NOT NULL,
項目2 CHAR(4) NOT NULL)
TABLESPACE 表領域 PCTFREE 10 PCTUSED 80
STORAGE ( INITIAL 604800K MINEXTENTS 1 );
こんな感じになっています。
あと、誤差とも考えてみたのですが、領域によると数十MBもの差が生じているので「誤差」にしては「あまりにも大きいな・・・ってのが私の見解でして。。。。
なにか他に要因があるのでは・・・?と考え質問させていただきました。
なにか他に考え付くことがありましたがどんな些細なことでも結構ですのでご意見を賜れればと存じます。
このたびはありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- その他(ブラウザ) bingチャットの内容(縦長)をスクリーンショットで保存する方法 3 2023/02/28 02:13
- docomo(ドコモ) ストレージの空き領域があんまりないみたいな 5 2023/01/31 18:54
- ノートパソコン パソコンを、アップグレードした後に出来た、Cドライブの後に出来た、このドライブは? 3 2023/04/03 17:10
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- UNIX・Linux ubuntuで デイスク/deb/loopというドライブが出るがこれは何? 4 2023/06/04 16:52
- 物理学 示すように,真空中の直交座標系を考える。y平面に平行な つ領域Iと領域Iがあり,軸上の領域Iと領域I 1 2023/06/25 14:46
- その他(パソコン・スマホ・電化製品) 生化学の問題です。 解説をお願いします。 (真核生物の遺伝子発現調節について) 翻訳の過程では様々な 2 2023/06/04 15:10
- C言語・C++・C# あまりわかりません。 複素数$c$を具体的に定めた複素写像写像$f_c(z)$に対して、原点を含む領 4 2022/10/25 09:17
- CPU・メモリ・マザーボード デスクトップPCのOS(C:)の空き領域がどんどん減ります。 9 2022/12/12 09:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
TruncateしたテーブルへのInser...
-
テーブルのSTORAGE句のサイズ設定
-
UNDO_RETENTION初期化パラメー...
-
表領域サイズについて
-
表領域の使用率がもうすぐ100%
-
Viewにインデックスは張れ...
-
SQLでスキーマ名(所有者名)の...
-
INDEXの無効化
-
datapumpの実行方法について
-
postgreSQLのint型は桁数指定が...
-
他の処理でselectさせないよう...
-
ACCESS 複数テーブル・複数フィ...
-
検索結果の列数を動的に変更したい
-
異なるスキーマからデータを抽...
-
CLOB型へのINSERT
-
count(1)とcount(*)の違い
-
accessでイベントを中止するよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
表領域の使用率がもうすぐ100%
-
テーブルのSTORAGE句のサイズ設定
-
oracle SYSTEM01.DBF が大きい
-
データベースの初期サイズ
-
INDEX 見積もりについて
-
Oracleはどの程度まで巨大なテ...
-
データ削除の方法
-
create table時のINITIALとMAXE...
-
TruncateしたテーブルへのInser...
-
UNDO_RETENTION初期化パラメー...
-
表領域の違うEXPORT IMPORT
-
表領域(users)の中身を整理したい
-
オーバーヘッドってなんですか?
-
データファイル情報について
-
ORACLEでの領域計算
-
CreateTable時のInitialエクス...
-
アーカイブログのサイズについて
おすすめ情報