我最近需要将.dmp导入到我创建的新用户中。我还使用以下命令为用户创建了一个新的表空间:
create tablespace my_tablespace
datafile 'C:\My\Oracle\Install\DataFile01.dbf' size 10M
autoextend on
next 512K
maxsize unlimited;
导入正在运行时出错:
ORA-01652 Unable to extend my_tablespace segment by in tablespace
当我检查dba_data_files表中的数据文件时,我发现maxsize大约是34gb。因为我知道数据库的一般大小,所以在将多个数据文件添加到表空间后,我能够毫无问题地导入.dmp。
当我添加的第一个数据文件设置为自动增长到无限大小时,为什么我需要向表空间添加多个数据文件?为什么最大尺寸为34gb而不是无限制?是否有34gb的硬帽?
答案 0 :(得分:7)
正如您所发现的那样,正如Alex Poole指出的那样,单个数据文件大小存在限制。 Smallfiles限制为128GB,bigfiles限制为128TB,具体取决于您的块大小。 (但是您不想仅仅为了增加这些限制而更改块大小。)create tablespace
命令中的大小限制仅在您希望进一步限制大小时才会出现。
这可能有点令人困惑。您可能不关心管理文件并希望它“正常工作”。管理数据库存储总是令人讨厌,但这里有一些你可以做的事情:
MAX_FILES
限制,并且您没有处理像UNDO和TEMP这样的特殊表空间之一,添加更多文件不会受到惩罚。不要过于担心分配比硬盘包含的更多潜在空间。这会让一些DBA疯狂,但你必须权衡耗尽OS空间的可能性与一百个文件中空间不足的可能性。 (无论哪种情况,您的应用程序都会崩溃。)RESUMABLE_TIMEOUT
参数。然后SQL语句将被暂停,可能会生成警报,将在DBA_RESUMABLE
中列出,并会耐心等待更多空间。这在数据仓库中非常有用。为什么称它为“无限”?
我猜测关键字UNLIMITED
是一个历史错误。自at least version 7以来,Oracle的文件大小限制相同,也许更早。 Oracle 7于1992年发布,当时为1GB hard drive cost $1995。也许当时每个操作系统的文件大小限制都低于此。也许当时将128GB视为“无限制”是合理的。
答案 1 :(得分:0)
无限制的最大大小不足以执行此操作,而且您的可恢复超时也必须足够,如果您希望无限制,则可以将值设置为毫秒;
alter system set resumable_timeout=0;