Sql 在oracle中创建重复表时出错

Sql 在oracle中创建重复表时出错,sql,database,oracle,Sql,Database,Oracle,我想在oracle中使用以下sql命令创建表的副本: create table table_backup as select * from paper_search; 我遇到了这样的错误 [Err] ORA-01652: unable to extend temp segment by 8192 in tablespace 因为表格纸张的大小是20GB。我在谷歌上搜索并发现增加了oracle中的临时内存大小,但我不知道如何解决这个问题。我们非常感谢您的任何建议。您的临时表空间已满。扩展它,

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

create table table_backup as select * from paper_search;
我遇到了这样的错误

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

因为表格纸张的大小是20GB。我在谷歌上搜索并发现增加了oracle中的临时内存大小,但我不知道如何解决这个问题。我们非常感谢您的任何建议。

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

语法:

ALTER tablespace TEMP add datafile '<path>/temp1.dbf' size 1500M
ALTER tablespace TEMP add数据文件'/temp1.dbf'大小1500M

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

< P>如果您找不到足够的空间用于临时段(参见Orangecrush的答案),您可能需要考虑创建表并将其填充在单独的步骤中,例如

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

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


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

我不明白您为什么需要临时空间来进行插入。纸上搜索不是表格而是视图?可以发布吗?默认表空间(创建该表的TS)中有多少空闲空间?你有足够的空间放这张新桌子吗。您可以通过将
create table\u backup table space XXX作为select*from paper\u search
I don't undersannd来指定表空间。为什么在表备份的表空间中涉及临时段而不是普通段?使用标准插入,我们可以在目标选项卡空间中写入一些撤消信息、一些重做日志和主要信息。在哪里使用温度?或者为什么是临时段。我遗漏了一些东西…@FlorinGhita:我猜select的结果需要临时空间,然后才能“移动”到实际的表空间。也许
paper\u serach
确实是一个使用连接和分组方式(需要临时空间)@a\u horse\u和\u no\u名称的视图也许我不知道CTA的内部结构,但select*from paper\u搜索将从磁盘读取数据块并将其放入SGA(数据库缓冲区缓存),然后insert将在目标表的段中创建数据块,使用缓冲区缓存中的数据。没必要动什么东西。即使是更新,更不用说插入了。非常感谢您的建议,我的问题已经解决了:-)
insert into table_backup select * from paper_search where id between :1 and :2;