oracle

Oracle ORA-01653 が発生した時の対応方法

ORA-01653 発生原因

-- 以下エラーがでた時の状況です。

行1でエラーが発生しました。:
ORA-01653: 表SOONI.TBL27を拡張できません(128分、表領域TBS01)。

これは表領域がいっぱいになった時に発生するエラーです。実際に表領域の空きがなくなった事はこちらのSQLで確認できます。

エラー発生時の表領域使用状況確認
--- 表領域に空きがなくなった事が確認できます。
--- 
SQL> COLUMN TABLESPACE_NAME FORMAT A24
SQL> COLUMN 全サイズM FORMAT 9999999990
SQL> COLUMN 空サイズM FORMAT 9999999990.9
SQL> COLUMN 使用率 FORMAT 990.99
SQL> SELECT
  2  t.TABLESPACE_NAME
  3  ,ROUND(a.SPC /1024/1024,1) 全サイズM
  4  ,ROUND(f.SPC /1024/1024,1) 空サイズM
  5  ,decode(a.SPC-f.SPC,null,100,ROUND((a.SPC-f.SPC)/a.SPC * 100,2)) 使用率
  6  FROM
  7  DBA_TABLESPACES t
  8  left outer join
  9  (
 10    SELECT TABLESPACE_NAME,SUM(BYTES) SPC FROM SYS.DBA_DATA_FILES
 11    GROUP BY TABLESPACE_NAME
 12  ) a
 13  on t.TABLESPACE_NAME = a.TABLESPACE_NAME
 14  left outer join
 15  (
 16    SELECT TABLESPACE_NAME,SUM(BYTES) SPC FROM SYS.DBA_FREE_SPACE
 17    GROUP BY TABLESPACE_NAME ORDER BY TABLESPACE_NAME
 18  ) f
 19  on t.TABLESPACE_NAME = f.TABLESPACE_NAME
 20  order by a.SPC desc nulls last
 21  ;

TABLESPACE_NAME            全サイズM     空サイズM  使用率
------------------------ ----------- ------------- -------
TBS01                           6048           0.7   99.99
UNDOTBS1                        4590        3851.5   16.09
TBS02                           2048        1950.9    4.74
SYSTEM                          1854        1039.6   43.93
SYSAUX                          1300         193.4   85.13
USERS                              5           2.9   42.50
TEMP                                                100.00

7行が選択されました。

SQL>

表領域を拡張します

空き領域がなくなった事確認できたので、以前記載した記事の通り表領域を拡張します。

---
--- 今回いっぱいとなったTBS01表領域は以下のようなデータファイルで構成されていました。
--- 
  FILE_ID FILE_NAME                                          TABLESPACE_NAME      M_BYTE ONLINE_STA
---------- -------------------------------------------------- ---------------- ---------- ---------
         3 /usr/oracle/app/oradata/ORAU8/datafile/o1_mf_sysau SYSAUX                 1300 ONLINE
           x_hw3odl8j_.dbf

        10 /usr/oracle/app/oradata/ORAU8/datafile/TBS_SYSTEM_ SYSTEM                 1024 SYSTEM
           0.dbf

         1 /usr/oracle/app/oradata/ORAU8/datafile/o1_mf_syste SYSTEM                  830 SYSTEM
           m_hw3objqp_.dbf

         5 /usr/oracle/app/oradata/ORAU8/TBS01_A.dbf          TBS01                  1000 ONLINE
         7 /usr/oracle/app/oradata/ORAU8/TBS01_B.dbf          TBS01                  1000 ONLINE
         8 /usr/oracle/app/oradata/ORAU8/TBS01_C.dbf          TBS01                  2048 ONLINE
         9 /usr/oracle/app/oradata/ORAU8/TBS01_D.dbf          TBS01                  2000 ONLINE
         2 /usr/oracle/app/oradata/ORAU8/TBS02_A.dbf          TBS02                  2048 ONLINE
         4 /usr/oracle/app/oradata/ORAU8/datafile/o1_mf_undot UNDOTBS1               4590 ONLINE
           bs1_hw3og9fd_.dbf

         6 /usr/oracle/app/oradata/ORAU8/datafile/o1_mf_users USERS                     5 ONLINE
           _hw3ogbl3_.dbf


10行が選択されました。

SQL>
--
--
--- これを見るとこれまでも何度か拡張していますね、、
--- 今回もまた 2G ほど拡張します。
--- 
SQL> ALTER TABLESPACE TBS01 ADD DATAFILE '/usr/oracle/app/oradata/ORAU8/TBS01_E.dbf' SIZE 2G
  2  ;

表領域が変更されました。

--- もし「ORA-01031: 権限が不足しています。」とエラーが出た場合は
--- DBAロールを保持しているユーザ(systemとか)から以下system権限を付与しましょう。
--- grant ALTER TABLESPACE to sooni
--- 
SQL>
--- 
---  再度表領域の状況を確認したら以下の通り
--- 
TABLESPACE_NAME    全サイズM     空サイズM  使用率
---------------- ----------- ------------- -------
TBS01                   8096        2047.7   74.71
UNDOTBS1                4590        3851.5   16.09
TBS02                   2048        1950.9    4.74
SYSTEM                  1854        1039.6   43.93
SYSAUX                  1300         193.4   85.13
USERS                      5           2.9   42.50
TEMP                                        100.00

7行が選択されました。

SQL>
---
--- これでめでたく解決です
スポンサーリンク
コピペで使う