ORA-01658: 无法为表空间 TS_DATA 中的段创建 INITIAL 范围

Posted

技术标签:

【中文标题】ORA-01658: 无法为表空间 TS_DATA 中的段创建 INITIAL 范围【英文标题】:ORA-01658: unable to create INITIAL extent for segment in tablespace TS_DATA 【发布时间】:2016-09-01 10:54:43 【问题描述】:

当我尝试在我的 User_DB 架构中创建一个表时,我收到一个错误 ORA-01658: unable to create INITIAL extent for segment in tablespace TS_DATA。我运行以下查询以获取所有 TABLESPACE_NAME:

SELECT * FROM DBA_DATA_FILES;

但是我真的不知道我使用的是哪个表空间以及如何扩展表空间来解决这个问题。

【问题讨论】:

你使用的表空间是TS_DATA,根据报错信息;关于扩展它,你最好联系你的 DBA 为什么我需要联系 dba ?难道我不能解决这个问题。因为我可以访问 dba 用户 【参考方案1】:

如错误消息所示,您正在使用TS_DATA 表空间。您可以通过扩大现有数据文件之一来扩展它:

ALTER DATABASE 
DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TS_DATA.DBF' 
RESIZE 3000M;

或者通过向表空间添加第二个数据文件:

ALTER TABLESPACE ts_data 
ADD DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TS_DATA2.DBF' 
SIZE 1000M;

或者只允许数据文件自动扩展:

ALTER DATABASE 
DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TS_DATA2.DBF'
AUTOEXTEND ON
MAXSIZE UNLIMITED; -- Or some reasonable cap

【讨论】:

感谢调整表空间大小后它对我有用! 还请注意,我在导出 (expdp) 时收到了需要更多空间的消息。如上所述更改后,我添加了一个不够的特定数量。所以我的 expdp 工作暂停了。当我再次更改为无限制(我是另一个窗口)时,它会在一分钟后自行继续并完成。【参考方案2】:

按照sql检查现有表空间数据文件和大小

select a.file_id,b.file_name,b.autoextensible,b.bytes/1024/1024,sum(a.bytes)/1024/1024
from dba_extents a , dba_data_files b
where a.file_id=b.file_id
group by a.file_id,b.file_name,autoextensible,b.bytes/1024/1024

然后运行下面的sql,会自动扩展数据文件大小。

ALTER DATABASE 
DATAFILE '/u01/app/oracle/oradata/XE/TS_DATA.dbf'
AUTOEXTEND ON
MAXSIZE UNLIMITED;

【讨论】:

以上是关于ORA-01658: 无法为表空间 TS_DATA 中的段创建 INITIAL 范围的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01658:无法为表空间XXX中的段创建initial区

ORA-01658: 无法为表空间 TEST_DATA3 中的段创建 INITIAL 区

ORA-01658: 无法为表空间 TEST_DATA3 中的段创建 INITIAL 区

向orale数据库导入数据的时候报 ORA-01658

oracle错误ora-01658的解决办法-扩容表空间

ora-1658: 无法为表空间中的段创建初始范围