2

我想在 oracle 中使用以下 sql 命令创建表的副本:

create table table_backup as select * from paper_search;

我遇到了这样的错误

 [Err] ORA-01652: unable to extend temp segment by 8192 in tablespace

由于 table paper_search 的大小为 20GB。我用谷歌搜索,发现在 oracle 中增加了 TEMP 内存大小,但我不知道如何解决这个问题,任何建议都将受到高度赞赏。

4

2 回答 2

1

您的临时表空间已满。扩展它,然后创建表。

句法:

ALTER tablespace TEMP add datafile '<path>/temp1.dbf' size 1500M

根据需要更改路径、名称和大小。

于 2013-02-05T07:27:33.353 回答
1

如果您无法为您的临时段找到足够的空间(请参阅 Orangecrush 的答案),您可能需要考虑创建表并分步填充它 - 例如

create table table_backup as select * from paper_search where 1=0;

然后

insert into table_backup select * from paper_search where id between :1 and :2;

在具有合适 id 范围的循环中,在每批之间提交(这样您就不需要那么多临时空间)。

这只是一个粗略的解决方案,根据您的要求可能不可行(例如,在批处理作业运行时是否应考虑表上的并发插入/更新/删除)。

于 2013-02-05T07:33:46.207 回答