正如您所发现的那样,正如Alex Poole指出的那样,单个数据文件大小存在限制. Smallfiles限制为128GB,bigfiles限制为128TB,具体取决于您的块大小. (但您不希望更改块大小只是为了增加这些限制.)create tablespace命令中的大小限制仅在您希望进一步限制大小时才存在.
这可能有点令人困惑.您可能不关心管理文件并希望它“正常工作”.管理数据库存储总是令人讨厌,但这里有一些你可以做的事情:
>将表空间保持在最低限度.在一些罕见的情况下,将数据分区为许多小表空间是有帮助的.但是,这些罕见的好处通常会超过您管理所有这些对象所带来的痛苦.
>养成总是添加多个数据文件的习惯.如果您正在使用ASM(如果这是本地实例,我不建议这样做),那么在添加数据文件时几乎没有理由不去“疯狂”.即使你不使用ASM,你仍然应该有点疯狂.只要将原始大小设置为低,就不会接近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视为“无限制”是合理的.