夜間バッチでORA-01653
OracleXEで構築したデータベースで、株価の分析をしたりなどして遊んでいたのですが
ある日のこと、夜間バッチがOracleエラーを吐いて落ちていました。
エラーコードはORA-01653。バッチログのメッセージには以下のように書かれていました。
ORA-01653:unable to extend table XXX by 1024 in tablespace YYY
日本語でいうと
ORA-01653:表XXXを拡張できません(1024分、表領域YYY)
なんらかの理由により表領域YYYの拡張に失敗したときに出るエラーです。
エラーが出たのはSYSTEM表領域でした、サイズ600MBのうち599MBが使用済みとなっていました。
エラーの原因となったのは通常のユーザテーブルへのデータINASERT。
まあ一般ユーザにSYSTEM表領域を割り当てるのはいかがなものかという感じですが、
個人的なデータベースですので。
で、600MBのデータファイルというのがSYSTEM表領域の初期設定なのでしょうね。
とりあえずディスクの容量的にはまったく問題なかったので、SYSTEMユーザでSQL plusを起動して
ALTER DATABASE DATAFILE '所在/system.dbf' RESIZE 2G
として、2ギガに拡張しておきました。これでひとまず大丈夫かな?
データファイルの所在はDBA_DATA_FILESから確認できます。
SELECT FILE_NAME||'('||TABLESPACE_NAME||')' AS "データファイル"
,ROUND(BYTES/1024/1024) AS SIZE_MB
,ROUND(BYTES/1024/1024/1024) AS SIZE_GB
FROM DBA_DATA_FILES
データファイル | SIZE_MB | SIZE_GB |
/oracle/oradata/XE/users.dbf(USERS) | 100 | 0 |
/oracle/oradata/XE/sysaux.dbf(SYSAUX) | 760 | 1 |
/oracle/oradata/XE/undotbs1.dbf(UNDOTBS1) | 900 | 1 |
/oracle/oradata/XE/system.dbf(SYSTEM) | 2048 | 2 |
仕事で出ると結構ビビる
遊びのDBだったので大丈夫でしたが、業務で見るとけっこう焦るエラーです。
幸いあまり出くわしたことがない。表領域に関するエラーだと、「一次表領域のエラー」が経験的には多かったですかね。