Oracle の表領域

  現状の確認



Oracle を学ぶにはやはり、直接 Oracle が無ければはじまりません。ここからは、Oracle がインストールされている事を前提に話を進めます。そして、Oracle がインストールされていても既存の環境では学習になりません。一番最初にするべき事はデータベースとしてデータを保存する為の大元である「表領域」を作成する必要があります。

表領域を作成する事はそんなに難しい事ではありません。「Enterprise Manager Console」 から容易に作成できますが、その前に現状を「Enterprise Manager Console」で確認します

Oracle がインストールされているマシンから、「スタンドアロン」で起動します。最初に、実行中のデータベースが表示されますが、ツリーを開こうとするとログインを求められます。ここでは、「SYSTEM」でログインします。接続後、「記憶域」から「表領域」を選択します

既に存在する表領域の一覧が表示されますが、まず「タイプ」TEMPORARYUNDO の表領域に注目して下さい。これらは、Oracle にとって特別な意味を持つ表領域です。特に、TEMPORARY タイプである TEMP 表領域はユーザ作成時に必要になります



  SQL で同等の情報を表示



以下のSQL を実行する事によって ほぼ同等の表領域の情報を取得できます

  
select 
	TABLESPACE_NAME 名前,
	CONTENTS タイプ,
	EXTENT_MANAGEMENT エクステント管理,
	round(FSIZE/1000000) "サイズ(M)",
	(FSIZE-FREESIZE)/1000000 "使用量(M)"
from
	DBA_TABLESPACES,
(
	select 
		V$TABLESPACE.NAME TNAME1,
		sum(BYTES) FSIZE
	from V$TABLESPACE,V$DATAFILE
	where
		V$TABLESPACE.TS# = V$DATAFILE.TS#
	group by V$TABLESPACE.NAME
) TSIZE,
(
	select 
		TABLESPACE_NAME AS TNAME2,
		sum(BYTES) AS FREESIZE 
	from DBA_FREE_SPACE
	group by TABLESPACE_NAME
) TFREE
where
	TABLESPACE_NAME = TNAME1 and
	TABLESPACE_NAME = TNAME2
  

ここで使用されているテクニックは、インラインビューというものです。



  Enterprise Manager Console で表領域作成

ツリー上の「表領域」を選択して右クリックでポップアップメニューを表示させて「作成」を選びます。すると、表領域作成用のダイアログが表示されるので、名前を入力します。すると、自動的にファイル名欄にも反映されます。それ以外のオプションはデフォルトのままで「作成」ボタンをクリックします

デフォルトでは、5メガの領域が作成されます。他の領域と状態を比べたい場合は、DBA_TABLESPACES ディクショナリビューを参照します。



  SQL で表領域を作成する

以下の SQL を実行して DBA_TABLESPACES で確認します

  
create tablespace TEST2
datafile 'D:\ORACLE\ORADATA\LIGHTBOX\TEST2.ORA'
size 5M
  

そうすると、SEGMENT_SPACE_MANAGEMENT だけが違う事に気がつきます。ですから、SQL で表領域を作成する場合は、実際は以下のようにして下さい。

  
create tablespace TEST2
datafile 'D:\ORACLE\ORADATA\LIGHTBOX\TEST2.ORA'
size 5M
segment space management AUTO
  

とりあえず、ここまでは表領域としての属性ですが、見逃してはいけないのが「データファイル」としての属性です。データファイルには、「自動拡張」するかしないかという属性が有り、DATAFILE 句 で指定するようになっています。「Enterprise Manager Console」 から作成した場合でも、なにもしなければ「自動拡張しない」となります。もし、自動拡張を有効にするには、ファイルの行を選択して「えんぴつアイコン」をクリックします。そして、記憶域タブを選択して AUTOEXTEND をチェックします

この際、増分値を指定しないと1データプロック(DB_BLOCK_SIZE、通常 8192)となるので 1メガ程を指定しておけば良いでしょう。

SQL としては、なにも指定しなければ 「自動拡張しない」 事になります。ですから、以下のように指定して下さい

  
create tablespace TEST2
datafile 'D:\ORACLE\ORADATA\LIGHTBOX\TEST2.ORA'
	size 5M
	autoextend on
	next 1M
	maxsize unlimited
segment space management AUTO
  

自動拡張を使用禁止にする場合は、NEXT およびMAXSIZE の値を 0 に設定します



  SQL で表領域を削除

実際は殆ど実行する事の無い処理ですが、初めての場合は失敗するかもしれません。Enterprise Manager Console で削除するのが確実ですが、SQL で処理する場合は OS 上のファイルも同時に削除するオプションを付けて実行するようにします。

このほうが後々混乱が生じるのを避ける事ができます(Enterprise Manager Console ではデフォルトです)

  
drop tablespace TEST2
including contents and datafiles
  



  ※ 表領域関連の 静的データディクショナリビューと動的パフォーマンスビュー

DBA_TABLESPACES
DBA_DATA_FILES
DBA_FREE_SPACE

V$TABLESPACE
V$DATAFILE










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ