Saludos,
Como ya sabemos los tablespaces son parte de la estructura lógica de la base de datos que puede tener 1 o mas datafiles. Los datafiles son parte de la estructura física de la base de datos que puede estar asignado a 1 tablespace.
Hasta antes de la versión 10g solo existía 1 tipo de Tablespaces conocidó como SmallFile. El nuevo tipo de Tablespaces incluido desde la versión 10g es BigFile.
TABLESPACES SMALLFILE.- Tablespaces tradicional por defecto de Oracle y podrá tener uno o varios Datafile. El Datafile su tamaño será limitado por el parámetro db_block_size(2k, 4k, 8k, 16k y 32k) que se define al crear la base de datos.
TABLESPACES BIGFILE.- Este tipo de tablespace aparece de la versión de la 10g y presentan la ventaja de tener datafiles de mayor tamaño de hasta 128Tb(Dependera sistema de archivos) pero con la restricción que el tablespace solo puede tener 1 datafile.
Habiendo dicho esto cual seria la ventaja entre SMALLFILE y BIGFILE?
SmallFile fue la primera versión para los Tablespaces y se recomienda su uso para sistemas de archivos que manejan tamaños limitados.
BigFile fue introducido desde la versión 10g y solo puede contener un solo datafile que puede tener un gran tamaño.
Por ejemplo si tenemos una base de datos db_block_size de 8k y necesitamos un tablespace de de tamaño de 1Tb usando SmallFile vamos a tener que asignar 32 datfiles de 32Gb para poder alcanzar la capacidad de 1Tb mientras que con BigFile solo necesitamos agregar 1 solo de 1Tb el cual puede seguir aumentando de tamaño.
Tablespaces SmallFile
CREATE TABLESPACE TS_SMALLFILE DATAFILE
'/u01/app/dbfiles/orcl/ts_smallfile01.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile02.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile03.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile04.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile05.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile06.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile07.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile08.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile09.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile10.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile11.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile12.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile13.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile14.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile15.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile16.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile17.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile18.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile19.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile20.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile21.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile22.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile23.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile24.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile25.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile26.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile27.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile28.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile29.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile30.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile31.dbf' SIZE 32G,
'/u01/app/dbfiles/orcl/ts_smallfile32.dbf' SIZE 32G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Tablespaces BigFile
CREATE BIGFILE TABLESPACE TS_BIGFILE DATAFILE
'/u01/app/dbfiles/orcl/ts_bigfile.dbf' SIZE 1024G AUTOEXTEND ON NEXT 100M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Si bien es cierto ambos van a tener la capacidad de crecer pero para la gestión de un DBA va hacer mas fácil gestionar tablespace con 1 solo datafile que con muchos datafile. Está bastante claro que los Tablespaces Bigfile ayudan en la transparencia de los datos, ya que cada Tablespaces tiene solo un archivo de datos, por lo que parece muy claro dónde pueden estar nuestros datos. Además, la base de datos se vuelve más fácil de administrar, ya que tiene que administrar una menor cantidad de archivos de datos. Entonces, si cree que tiene espacio de base de datos para administrar, simplemente hágalo
No existe limitantes para el uso de tablas, índices u otro objeto de base que haga uso de Tablespace.
Limitaciones y consideraciones Tablespaces BigFile:
- Los tablespaces Bigfile deben crearse administrados localmente y con administración automática del espacio de segmento. Éstas son las especificaciones predeterminadas. Oracle devolverá un error si se especifica DEXTENT MANAGEMENT DICTIONARY o SEGMENT SPACE MANAGEMENT MANUAL. Pero hay dos excepciones cuando los segmentos de tablespaces de bigfile se administran manualmente:
- Undo tablespace administrado localmente
- Espacio de tabla temporal
- Los tablespaces Bigfile deben dividirse para que las operaciones en paralelo no se vean afectadas negativamente. Oracle espera que los tablespaces de bigfile se utilice con Automatic Storage Management (ASM) u otros administradores de volúmenes lógicos que admitan la creación de bandas o RAID.
- Los tablespaces Bigfile no deben usarse en plataformas con restricciones, lo que limitaría la capacidad del tablespaces.
- Evite el uso de tablespaces de archivos grandes si es posible que no haya espacio libre disponible en un grupo de discos y la única forma de ampliar un tablespaces es agregar un nuevo archivo de datos en un grupo de discos diferente.
Referencias
https://docs.oracle.com/cd/E18283_01/server.112/e17120/tspaces002.htm
https://docs.oracle.com/database/121/VLDBG/GUID-7B764F63-C4B4-4D30-9E96-2D6D73CB4122.htm