Recently, I worked on two cases that could be solved using bigfile tablespaces.
Bigfile tablespaces have been around for ages but are typically not the default. If you use the CREATE TABLESPACE command and don’t specify a tablespace type, you will probably get a smallfile tablespace.
In a smallfile tablespace in an 8k block size database, each data file can only be 32 GB. For a huge tablespace – double-digit TB – you end up with many files. In a bigfile tablespace, there is only one data file, but it can grow up to 32 TB. Further, Oracle Autonomous Database comes with bigfile tablespaces.
Frustrated over the problems with smallfile tablespaces, I wanted to understand the reluctance to use bigfile tablespace.
I asked around: Why are you not using bigfile tablespaces?
The Answers
They Take a Long Time to Back Up
True, unless you use multisection backups. If so, multiple channels can work on the same data file and you should not see performance bottlenecks on bigfile tablespaces.
It’s very simple to perform multisection backups. Simply add the section size clause to the RMAN backup command.
RMAN> backup database ... section size 30G ...
Recovering a Bigfile Data File Is a Pain
If you accidentally delete a bigfile data file, it is very time-consuming to restore it. It could be huge – potentially 32 TB. In contrast, if you delete a smallfile data file, it is much smaller – maximum 32 GB.
How often do you accidentally delete a data file? OK – some of us might know a horror story from back in the days – but it is very rare.
Should it happen, you can switch to your standby database while restoring the data file.
Plus, if you use Oracle Automatic Storage Management (ASM), you can’t accidentally delete a data file. If a data file is in use by a database, you can’t delete the file in asmcmd.
Incompatibility With File System
I know at least one operating system, which, in older versions, had a maximum limit of files of 16 TB. This is no longer a problem in modern operating systems. Nor is it a problem if you use ASM.
Someone even claimed it was the case in certain tape systems, although I couldn’t verify it.
It’s Always Been Like This
In the old days, I understand why you would want to use smallfile tablespaces. But not anymore. The downsides don’t exist anymore.
But, it’s hard to migrate to bigfile tablespaces!
No, it is not.
In recent versions of Oracle Database, you can move tables into a new tablespace without downtime. The same applies to indexes which you can rebuild into a new tablespace. It’s all online operations. No downtime, no interruptions!
LOB segments might be a little more tricky. DBMS_REDEFINITION could be a solution.
Some of these options require additional licenses. Always check the license guide before you start to use a new feature.
Still, I do understand that for existing databases, you don’t want to migrate. But for new tablespaces and new databases, I’d always go with bigfile tablespaces.
Let Me Know
I don’t see a reason for using smallfile tablespaces anymore.
But I’m curious. Why are you not using bigfile tablespaces? Please leave a comment with your reason or concern.
By the way – usually, an Oracle Database can hold only a certain amount of data files. When you start to go into Petabytes, you’ll need bigfile tablespaces.
Updates to Blog Post
The More Data Files, the Longer Switchover Time
Ludovico Caldara, the Data Guard PM, pointed out on LinkedIn, that the more data files you have, the longer a Data Guard switchover takes.
Contention When File Expands
dbroots left a comment referencing this MOS note: Alter Tablespace Resize on Bigfile Tablespace Causes Sessions to Hang with ‘Enq: TX – contention’ and ‘Buffer busy waits’ (Doc ID 2089689.1).
For very busy systems, you might see a short wait event while the data file expands in a bigfile tablespace. If it becomes too big a problem, you need to expand your data file in off-peak periods.
Further Reading
- Blog post, Connor McDonald, The smaller the database, the more important BIGFILE is

