界面出现错误信息如下:
原因:
Oracle数据库中一个数据文件的最大值(非lob)为32G,如果你的数据文件已经达到了32G,那么不管是插入数据还是建立索引,都会报错“无法通过128(在表空间xxxx中)扩展
解决方案:
官方给出以下几种方案:
1.为现有数据文件增加空间
2.允许当前的数据文件在需要时自动扩容,亦即当需要更大空间时,Oracle 将自动分配更多空间
(不建议使用数据文件所在磁盘的全部磁盘空间,这可能导致 Oracle 无法运行)
3.为当前表空间添加新的数据文件
4.高级操作:将占用磁盘空间最大的数据段移动至另一表空间或新建的表空间
下面介绍我使用的操作方法(官方文档也有说明):
以 Oracle 管理员身份登录 SQL*Plus
查看各表空间的信息
SELECT a.tablespace_name "table_spaceName",total
table_space_Total,free Table_space_free, (total-free) Table_space_used,
ROUND((total-free)/total,4)*100 "rate %" FROM (SELECT
tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY
tablespace_name ) a, (SELECT tablespace_name,SUM(bytes) total FROM
DBA_DATA_FILES GROUP BY tablespace_name) b WHERE
a.tablespace_name=b.tablespace_name;
查询各个表的位置
select name from v$datafile;
可以看到对应的数据文件已经达到32G了,既然WINDBLOBS01.DBF已经满了,那么就需要再新建一个WINDBLOBS02.DBF,方法如下1:添加新的数据文件
找到表名和目标数据文件后,执行以下任一操作:
1.添加新的数据文件:
ALTER TABLESPACE BLOBS ADD DATAFILE 'D:\PTC\WINDCHILL_11.0\OCU\ORADATA\WIND\WINDBLOBS02.DBF' SIZE 1024M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
2.为现有数据文件增加空间:
ALTER DATABASE DATAFILE '<datafile_name>' RESIZE <New_SIZE>M;
我使用的第一种操作,添加一个数据文件,初始为1个G,每次增加500M