スポンサードリンク
表領域拡張手順(データファイル追加)
本項では、データファイルを追加し表領域を拡張する方法について解説します。
テーブルやインデックスなど初期設計想定を超えるくらいの大量作成が行われた場合に表領域が不足する事態に遭遇します。このような事態は、OracleDatabaseのサービス提供用領域である非SYSTEM領域では頻繁に発生しますが、SYSTEM領域でも稀にこのような事態に遭遇するケース(※詳細は、「SYSTEM表領域が増加する理由」と「SYSAUX表領域が増加する理由」を参照)があります。
|
このような事態の対処方法として、データファイルを追加して表領域を拡張する方法が一般的です。データファイル追加は、表領域をオフラインにすることなくオンラインで拡張が可能です。
以下に実行例をします。
(1)データファイル追加前の確認
表領域の使用率とデータファイルのサイズを確認します。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜表領域使用率確認〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
SQL> set pages 1000
SQL> set line 100 SQL> column tablespace_name format a20
SQL> select a.TABLESPACE_NAME
, min(a.BYTES)/1024/1024 "現サイズ(MB)"
, round(min(a.BYTES)/(1024*1024) - sum(b.BYTES)/ (1024*1024),2) "使用量(MB)"
, round((min(a.BYTES)/(1024*1024) - sum(b.BYTES)/(1024*1024))/ (min(a.BYTES)/1024/1024)*100,2) "使用率(%)"
, round(sum(b.BYTES)/(1024*1024),2) "空き容量(MB)"
from dba_data_files a, dba_free_space b
where a.FILE_ID = b.FILE_ID
group by a.TABLESPACE_NAME;
TABLESPACE_NAME 現サイズ(MB) 使用量(MB) 使用率(%) 空き容量(MB)
-------------------- ------------ ---------- ---------- ------------
SYSAUX 660 623.38 94.45 36.63
UNDOTBS1 25 18.5 74 6.5
USERS 100 2.81 2.81 97.19
SYSTEM 60 352.56 97.93 7.44
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜データファイルサイズ確認〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
SQL>
SQL> column tablespace_name format a15
SQL> column file_name format a50
SQL> select tablespace_name,file_name,bytes from dba_data_files;
TABLESPACE_NAME FILE_NAME BYTES
--------------- -------------------------------------------------- ----------
USERS C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF 104857600
UNDOTBS1 C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF 26214400
SYSAUX C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF 692060160
SYSTEM C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF 377487360
SQL>
|
(2)データファイル追加
USERS表領域に自動拡張ONのデータファイル(USERS99.DBF)を10MBで追加してます。
SQL> ALTER TABLESPACE USERS ADD DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USER
S99.DBF' size 10M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE unlimited;
表領域が変更されました。
SQL>
|
(3)データファイル追加前の確認 データファイルを追加後、表領域が拡張しており、かつデータファイルも追加されていることを確認する。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜表領域使用率確認〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
SQL> set pages 1000
SQL> set line 100 SQL> column tablespace_name format a20
SQL> select a.TABLESPACE_NAME
, min(a.BYTES)/1024/1024 "現サイズ(MB)"
, round(min(a.BYTES)/(1024*1024) - sum(b.BYTES)/ (1024*1024),2) "使用量(MB)"
, round((min(a.BYTES)/(1024*1024) - sum(b.BYTES)/(1024*1024))/ (min(a.BYTES)/1024/1024)*100,2) "使用率(%)"
, round(sum(b.BYTES)/(1024*1024),2) "空き容量(MB)"
from dba_data_files a, dba_free_space b
where a.FILE_ID = b.FILE_ID
group by a.TABLESPACE_NAME;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜データファイルサイズ確認〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
SQL>
SQL> column tablespace_name format a15
SQL> column file_name format a50
SQL> select tablespace_name,file_name,bytes from dba_data_files;
SQL>
|
◎-表領域の概要と管理
◎-UNDO表領域(UNDO TABLESPACE)とは?
◎-一時表領域(TEMPORARY TABLESPACE)とは?
◎-Oracle表領域の作成(CREATE TABLESPACE)
◎-Oracle表領域の変更(ALTER TABLESPACE)
◎-Oracle表領域の削除(DROP TABLESPACE)
◎-SYSTEM表領域が増加する理由
◎-SYSAUX表領域が増加する理由
◎-表領域の使用率と空き領域確認方法
◎-表領域の物理データファイル確認方法
◎-表領域拡張手順(データファイル追加)
◎-表領域縮小可能サイズ確認手順
◎-表領域縮小手順(resize)
|
スポンサードリンク
|