ニュース&ブログ
RDS for Oracle 表領域あれこれ!!
この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。
投稿日:2014/10/22
みなさん、こんにちは、またはこんばんは。今回はRDS(Oracle)での表領域の作成に関する記事です。意外とRDSで表領域の作成ってどうやるの?データファイルの指定は必要?など、細かい事が気になりますので、この記事でまとめようと思います。
1.表領域の作成方法
まずは簡単な表領域「hogehoge」を作成してみます。RDSへログインして、コマンドを実行。SQL> create tablespace hogehoge;
表領域が作成されました。
SQL> select
2 tablespace_name,
3 bytes/1024/1024 MB
4 from
5 dba_data_files
6 where
7 tablespace_name = 'HOGEHOGE';
TABLESPACE MB
---------- ----------
HOGEHOGE 100
表領域の属性に関する調査です。以下のようなSQLで調べました。
select TABLESPACE_NAME,LOGGING,EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT,BIGFILE
from dba_tablespaces where tablespace_name ='HOGEHOGE';
そうすると、以下の事が分かりました。
図1:表領域属性

SQL> select
2 tablespace_name,
3 bytes/1024/1024 MB,
4 AUTOEXTENSIBLE,
5 INCREMENT_BY*8/1024 MB
6 from
7 dba_data_files
8 where
9 tablespace_name = 'HOGEHOGE';
TABLESPACE MB AUTOEX MB
---------- ---------- ------ ----------
HOGEHOGE 100 YES 100
2.自動拡張を増分値10MBで作成する
増分値が100MBと言う事で、少し大きすぎる気がしましたので、増分値は10MBと、なだらかに拡張をしてくれる、表領域「hogehoge2」を作成してみます。SQL> create tablespace hogehoge2 datafile autoextend on next 10M;
表領域が作成されました。
SQL> select
2 tablespace_name,
3 bytes/1024/1024 MB,
4 AUTOEXTENSIBLE,
5 INCREMENT_BY*8/1024 MB
6 from
7 dba_data_files
8 where
9 tablespace_name = 'HOGEHOGE2';
TABLESPACE MB AUTOEX MB
---------- ---------- ------ ----------
HOGEHOGE2 100 YES 10
SQL>
3.hogehoge2のサイズを変更する
さて、次は、表領域のサイズを変更してみます。自動拡張ONになっているので、あまりサイズ変更をしないかも知れませんが、表領域の自動拡張の増分値が小さい場合、
パフォーマンスに影響を与える事もありますので、手順は押さえておきたいと思います。
SQL> alter tablespace hogehoge2 resize 200M;
表領域が変更されました。
ちなみに、何もデータが入っていなければ、縮小も自由にできるようです。
SQL> alter tablespace hogehoge2 resize 50M;
表領域が変更されました。
SQL> alter tablespace hogehoge2 autoextend on next 20M;
表領域が変更されました。
SQL> select
2 tablespace_name,
3 bytes/1024/1024 MB,
4 AUTOEXTENSIBLE,
5 INCREMENT_BY*8/1024 MB
6 from
7 dba_data_files
8 where
9 tablespace_name = 'HOGEHOGE2';
TABLESPACE MB AUTOEX MB
---------- ---------- ------ ----------
HOGEHOGE2 50 YES 20
SQL>
4.表領域のUNIFORM SIZEを指定する
表領域は断片化します。これはいろいろな原因がありますが、断片化は起こります。この表領域の断片化を恐れるお客様からたまに、「表領域をUNIFORM SIZE指定して作ってくれ」とお願いをされることがあります。UNIFORM SIZEを指定すれば基本的に表領域の断片化は発生しませんが、その代わりに、オブジェクトの断片化が発生しやすくなります。等と、あまり複雑な事は考えず、表領域hogehoge3をUNIFORM SIZEを1MBに指定して作成したいと思います。
SQL> create tablespace hogehoge3 uniform size 1M datafile autoextend on next 10M;
表領域が作成されました。
SQL> select
2 TABLESPACE_NAME,
3 ALLOCATION_TYPE,
4 NEXT_EXTENT/1024/1024 MB
5 from
6 dba_tablespaces
7 where
8 tablespace_name = 'HOGEHOGE3';
TABLESPACE ALLOCATION_TYPE MB
---------- ------------------ ----------
HOGEHOGE3 UNIFORM 1
SQL>
最後に
今回はRDSの表領域について色々とやってみました。皆さんの明るいRDSライフの一助になれば幸いです。それではまた今度!!