oracle

Oracle 表領域の新規作成および拡張

現状の確認

DBA_DATA_FILESを参照し現状の確認します。

現状確認SQL
SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 M_BYTE,ONLINE_STATUS
FROM DBA_DATA_FILES
ORDER BY TABLESPACE_NAME,FILE_NAME
;
SQL> SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 M_BYTE,ONLINE_STATUS
  2  FROM DBA_DATA_FILES
  3  ORDER BY TABLESPACE_NAME,FILE_NAME
  4  ;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME      M_BYTE ONLINE_STA
---------- -------------------------------------------------- ---------------- ---------- ----------
         3 /u01/app/oracle/oradata/ORA19/sysaux01.dbf         SYSAUX                  620 ONLINE
         1 /u01/app/oracle/oradata/ORA19/system01.dbf         SYSTEM                  910 SYSTEM
         4 /u01/app/oracle/oradata/ORA19/undotbs01.dbf        UNDOTBS1                340 ONLINE
         7 /u01/app/oracle/oradata/ORA19/users01.dbf          USERS                     5 ONLINE

SQL>
SQL*Plus用
SET LIN 200
SET PAGES 50
COLUMN FILE_NAME FORMAT A50
COLUMN TABLESPACE_NAME FORMAT A16
COLUMN ONLINE_STATUS  FORMAT A10

CREATE TABLESPACE で表領域を新規作成する

エクステントの内部管理方式として、ディクショナリ管理/ローカル管理とありますがまず「ローカル管理」で問題なし。(ディクショナリ管理は下位互換のためにあるだけの模様)

CREATE TABLESPACE "TBS01"
NOLOGGING
DATAFILE '/u01/app/oracle/oradata/ORA19/TBS02_A.dbf' SIZE 2G
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO
;

LOGGING:表領域に対する変更をREDOログに出力する
NOLOGGING:表領域に対する変更をREDOログに出力しない

SQL> CREATE TABLESPACE "TBS01"
  2  NOLOGGING
  3  DATAFILE '/u01/app/oracle/oradata/ORA19/TBS02_A.dbf' SIZE 2G
  4  EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO
  5  ;

表領域が作成されました。

SQL>

ALTER TABLESPACEで既存表領域を拡張する

ORA-01653が発生し、既存表領域がいっぱいになった場合にこちらで拡張します。以下はSYSTEM表領域のサイズが随分ひっ迫してきていたのでデータファイルを割り当てて表領域を拡張しています。余計なお世話かもしれませんが、以下補足しておきます。

表領域の拡張(データファイルの追加)はSYSTEM表領域も非SYSTEM表領域も同じ方法となりますが、SYSTEM表領域に追加した「データファイルの削除」についてはおそらくできません。私はかつてSYSTEM表領域に対し誤ってデータファイルを追加したことがあり、削除を試みましたがその方法が見つかりませんでした。リサイズやデータファイル名の変更はできますが。

ALTER TABLESPACE SYSTEM ADD DATAFILE '/u01/app/oracle/oradata/ORA19/system02.dbf' SIZE 2000M
;

新規追加した表領域、拡張した表領域を確認する

SQL> SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 M_BYTE,ONLINE_STATUS
  2  FROM DBA_DATA_FILES
  3  ORDER BY TABLESPACE_NAME,FILE_NAME
  4  ;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME      M_BYTE ONLINE_STA
---------- -------------------------------------------------- ---------------- ---------- ----------
         3 /u01/app/oracle/oradata/ORA19/sysaux01.dbf         SYSAUX                  620 ONLINE
         1 /u01/app/oracle/oradata/ORA19/system01.dbf         SYSTEM                  910 SYSTEM
         2 /u01/app/oracle/oradata/ORA19/system02.dbf         SYSTEM                 2000 SYSTEM ←既存拡張
         5 /u01/app/oracle/oradata/ORA19/TBS02_A.dbf          TBS01                  2048 ONLINE ←新規追加
         4 /u01/app/oracle/oradata/ORA19/undotbs01.dbf        UNDOTBS1                340 ONLINE
         7 /u01/app/oracle/oradata/ORA19/users01.dbf          USERS                     5 ONLINE

6行が選択されました。

SQL>

表領域にはいくつかの種類がありそれぞれ役割が決まっています

スポンサーリンク