无法在指定的表空间中为索引段分配所需块数的范围

vkr*_*ddy 1 sql oracle indexing alter

我试着按如下方式运行存储过程,

insert into process_state_archive select * from process_state 
where tstamp BETWEEN trunc(ADD_MONTHS(SYSDATE, -12)) AND trunc(ADD_MONTHS(SYSDATE, -3))
Run Code Online (Sandbox Code Playgroud)

得到以下错误:

Error report:
SQL Error: ORA-01654: Kan index WEBDEV.PROCESS_STAT_TSTAMP_ACTION niet uitbreiden met 8 in     tabelruimte USERS.
01654. 00000 -  "unable to extend index %s.%s by %s in tablespace %s"
*Cause:    Failed to allocate an extent of the required number of blocks for
       an index segment in the tablespace indicated.
*Action:   Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
       files to the tablespace indicated.
Run Code Online (Sandbox Code Playgroud)

但是昨天我能够毫无错误地运行程序.

任何人都可以告诉我上述错误的解决方案吗?

Ale*_*ole 6

您的USERS表空间已满.您可以通过丢弃某些东西(可能是旧对象)来释放一些空间 - 如果这是特定的开发环境,请查看您是否在回收站中累积旧对象并清除不再需要的任何东西.

如果你不能收费的任何空间,那么你需要做什么错误消息告诉你这样做,一个额外的数据文件添加到表空间,或增加现有数据文件的大小,假设你有足够的磁盘空间做所以.

该文档包含有关管理数据文件的部分,包括添加数据文件更改现有数据文件的大小.哪种行为适合取决于您的具体情况,您需要确定适合的尺寸.您可能还需要考虑为应用程序创建新的专用表空间而不是使用USERS表空间,但这又取决于您的具体情况和需求.