Managing Tablespaces and Datafiles
Using multiple tablespaces provides
several Advantages
- Separate
user data from data dictionary data to reduce contention among dictionary
objects and schema objects for the same datafiles.
- Separate
data of one application from the data of another to prevent multiple
applications from being affected if a tablespace must be taken offline.
- Store
different the datafiles of different tablespaces on different disk drives
to reduce I/O contention.
- Take
individual tablespaces offline while others remain online, providing
better overall availability.
You can create Locally Managed or Dictionary
Managed Tablespaces. In prior versions of Oracle only Dictionary managed
Tablespaces were available but from Oracle ver. 8i you can also
create Locally Managed tablespaces. The advantages of locally managed
tablespaces are
Locally managed tablespaces track all extent
information in the tablespace itself by using bitmaps, resulting in the
following benefits:
- Concurrency
and speed of space operations is improved, because space allocations and
deallocations modify locally managed resources (bitmaps stored in header
files) rather than requiring centrally managed resources such as enqueues
- Performance
is improved, because recursive operations that are sometimes required
during dictionary-managed space allocation are eliminated
To create a locally managed tablespace give the
following command
SQL> CREATE TABLESPACE ica_lmts DATAFILE
'/u02/oracle/ica/ica01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
AUTOALLOCATE causes the tablespace to be system
managed with a minimum extent size of 64K.
The alternative to AUTOALLOCATE is
UNIFORM. which specifies that the tablespace is managed with extents
of uniform size. You can specify that size in the SIZE clause of UNIFORM. If
you omit SIZE, then the default size is 1M. The following example creates
a Locally managed tablespace with uniform extent size of 256K
SQL> CREATE TABLESPACE ica_lmt DATAFILE
'/u02/oracle/ica/ica01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
To Create Dictionary Managed Tablespace
SQL> CREATE TABLESPACE ica_lmt DATAFILE
'/u02/oracle/ica/ica01.dbf' SIZE 50M EXTENT MANAGEMENT DICTIONARY;
A bigfile tablespace is a tablespace with
a single, but very large (up to 4G blocks) datafile. Traditional small file
tablespaces, in contrast, can contain multiple datafiles, but the files cannot
be as large. Bigfile tablespaces can reduce the number of datafiles
needed for a database.
To create a bigfile tablespace give the
following command
SQL> CREATE BIGFILE TABLESPACE ica_bigtbs DATAFILE
'/u02/oracle/ica/bigtbs01.dbf' SIZE 50G;
To Extend the Size of a
tablespace
Option 1
You can
extend the size of a tablespace by increasing the size of an existing datafile
by typing the following command
SQL>
alter database ica datafile ‘/u01/oracle/data/icatbs01.dbf’ resize 100M;
This will
increase the size from 50M to 100M
Option 2
You can also
extend the size of a tablespace by adding a new datafile to a tablespace. This
is useful if the size of existing datafile is reached o/s file size limit or
the drive where the file is existing does not have free space. To add a new
datafile to an existing tablespace give the following command.
SQL> alter
tablespace add datafile ‘/u02/oracle/ica/icatbs02.dbf’ size 50M;
Option 3
You can also use
auto extend feature of datafile. In this, Oracle will automatically increase
the size of a datafile whenever space is required. You can specify by how much
size the file should increase and Maximum size to which it should extend.
To make a
existing datafile auto extendable give the following command
SQL> alter
database datafile ‘/u01/oracle/ica/icatbs01.dbf’ auto extend ON next 5M maxsize
500M;
You can also make
a datafile auto extendable while creating a new tablespace itself by giving the
following command.
SQL> create
tablespace ica datafile ‘/u01/oracle/ica/icatbs01.dbf’ size 50M auto extend ON
next 5M maxsize 500M;
To decrease the size of a tablespace
You can decrease
the size of tablespace by decreasing the datafile associated with it. You
decrease a datafile only up to size of empty space in it. To decrease the size
of a datafile give the following command
SQL> alter
database datafile ‘/u01/oracle/ica/icatbs01.dbf’ resize 30M;
Coalescing Tablespaces
A free extent in
a dictionary-managed tablespace is made up of a collection of contiguous free
blocks. When allocating new extents to a tablespace segment, the database uses
the free extent closest in size to the required extent. In some cases, when
segments are dropped, their extents are deallocated and marked as free, but
adjacent free extents are not immediately recombined into larger free extents.
The result is fragmentation that makes allocation of larger extents more
difficult.
You should often
use the ALTER TABLESPACE ... COALESCE statement to manually coalesce any
adjacent free extents. To Coalesce a tablespace give the following command
SQL> alter
tablespace ica coalesce;
Ref: http://www.oracle-dba-online.com
Comments
Post a Comment