一、问题背景
程序执行出错,提示:
IPCrossConnection数据处理失败: java.sql.BatchUpdateException: ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS1' 中)
二、查询表空间信息
SELECT * FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'UNDOTBS1';
SELECT * FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'UNDOTBS1';
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS LOST_WRITE_PROTECT
1 /opt/oracle/oradata/CSGZTDBDG/datafile/o1_mf_undotbs1_k98g46ro_.dbf 4 UNDOTBS1 34359721984 4194302 AVAILABLE 4 YES 34359721984 4194302 640 34358624256 4194168 ONLINE OFF
2 /opt/oracle/oradata/CSGZTDBDG/datafile/o1_mf_undotbs1_01.dbf 201 UNDOTBS1 33554432000 4096000 AVAILABLE 201 YES 33554432000 4096000 64000 33553383424 4095872 ONLINE OFF
3 /opt/oracle/oradata/CSGZTDBDG/datafile/newtemp_0920_.dbf 202 UNDOTBS1 209715200 25600 AVAILABLE 202 NO 0 0 0 208666624 25472 ONLINE OFF
4 /opt/oracle/oradata/CSGZTDBDG/datafile/newtemp2_0920_.dbf 203 UNDOTBS1 209715200 25600 AVAILABLE 203 NO 0 0 0 208666624 25472 ONLINE OFF
5 /opt/oracle/oradata/CSGZTDBDG/datafile/newtemp3_0920_.dbf 204 UNDOTBS1 209715200 25600 AVAILABLE 204 NO 0 0 0 208666624 25472 ONLINE OFF
6 /data_mpathc/oradata/CSGZTDBDG/datafile/UNDOTBS1_152.dbf 216 UNDOTBS1 34359721984 4194302 AVAILABLE 216 YES 34359721984 4194302 262144 34358624256 4194168 ONLINE OFF
7 /data_mpathc/oradata/CSGZTDBDG/datafile/UNDOTBS1_153.dbf 221 UNDOTBS1 32212254720 3932160 AVAILABLE 221 NO 0 0 0 32211206144 3932032 ONLINE OFF
FILE_NAME: 数据文件的文件名,包含文件路径。
FILE_ID: 数据文件在数据库中的唯一标识符。
TABLESPACE_NAME: 表空间的名称。
BYTES: 数据文件的大小,以字节为单位。
BLOCKS: 数据文件包含的块数。一个块通常是8KB。
STATUS: 数据文件的当前状态,这里显示为AVAILABLE,表示该数据文件可用。
RELATIVE_FNO: 相对文件编号。
AUTOEXTENSIBLE: 是否允许数据文件自动扩展,YES表示允许,NO表示不允许。
MAXBYTES: 数据文件允许的最大大小,以字节为单位。
MAXBLOCKS: 数据文件允许的最大块数。
INCREMENT_BY: 当数据文件自动扩展时,每次扩展的大小,以块为单位。
USER_BYTES: 表空间中用户数据使用的大小,以字节为单位。
USER_BLOCKS: 表空间中用户数据使用的块数。
ONLINE_STATUS: 表空间的当前状态,ONLINE表示表空间在线,可用。
LOST_WRITE_PROTECT: 数据文件是否丢失了写入保护,OFF表示没有丢失写入保护。
分析:
UNDOTBS1表空间包含7个数据文件。
数据文件大小各不相同,最大的两个文件分别是/opt/oracle/oradata/CSGZTDBDG/datafile/o1_mf_undotbs1_k98g46ro_.dbf和/data_mpathc/oradata/CSGZTDBDG/datafile/UNDOTBS1_152.dbf,大小均为34359721984字节。
补充说明:
UNDOTBS1 表空间通常用来存放回滚段,用于事务的回滚操作。
newtemp开头的文件可能是临时表空间的组成部分,用于存放临时数据。
数据库管理员可以根据实际情况调整表空间的大小、自动扩展设置等参数。
二、增加表空间并检查
ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/data_mpathc/oradata/CSGZTDBDG/datafile/UNDOTBS1_157.dbf' SIZE 32768M ;
增加表空间并自动扩展
ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/data_mpathc/oradata/CSGZTDBDG/datafile/UNDOTBS1_157.dbf' SIZE 32768M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
查看是否存在表空间限制:
SELECT * FROM DBA_TS_QUOTAS WHERE TABLESPACE_NAME = 'UNDOTBS1';
若存在限制,则进行修改:
ALTER TABLESPACE UNDOTBS1 MAXSIZE UNLIMITED;
查看该表总表空间大小:
###单位以MB显示
SELECT SUM(bytes) / 1024 / 1024 AS "Total Tablespace Size (MB)"
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS1';
###单位以GB显示
SELECT SUM(bytes) / 1024 / 1024 / 1024 AS "Total Tablespace Size (GB)"
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS1';