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.
Creating New Tablespaces
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;
Bigfile Tablespaces (Introduced in Oracle Ver. 10g)
A bigfile tablespace is a tablespace with a single, but very large (up to 4G blocks) datafile. Traditional smallfile 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;
Taking tablespaces Offline or Online
You can take an online tablespace offline
so that it is temporarily unavailable for general use. The rest of the database
remains open and available for users to access data. Conversely, you can bring
an offline tablespace online to make the schema objects within the tablespace
available to database users. The database must be open to alter the availability
of a tablespace.
To alter the availability of a tablespace,
use the ALTER TABLESPACE statement. You must have the ALTER TABLESPACE or MANAGE
TABLESPACE system privilege.
To Take a Tablespace Offline give the following command
SQL>alter tablespace
ica offline;
To again bring it back online give the following command.
SQL>alter tablespace
ica online;
To take individual datafile offline type the following
command
SQL>alter database
datafile ‘/u01/oracle/ica/ica_tbs01.dbf’ offline;
Again to bring it back online give the following command
SQL> alter database
datafile ‘/u01/oracle/ica/ica_tbs01.dbf’ online;
Note: You can’t take individual datafiles offline it the
database is running in NOARCHIVELOG mode. If the datafile has become corrupt or
missing when the database is running in NOARCHIVELOG mode then you can only drop
it by giving the following command
SQL>alter database
datafile ‘/u01/oracle/ica/ica_tbs01.dbf’
offline for drop;
offline for drop;
Making a Tablespace Read only.
Making a tablespace read-only prevents
write operations on the datafiles in the tablespace. The primary purpose of
read-only tablespaces is to eliminate the need to perform backup and recovery of
large, static portions of a database. Read-only tablespaces also provide a way
to protecting historical data so that users cannot modify it. Making a
tablespace read-only prevents updates on all tables in the tablespace,
regardless of a user's update privilege level.
To make a tablespace read only
SQL>alter tablespace
ica read only
Again to make it read write
SQL>alter tablespace
ica read write;
Renaming Tablespaces
Using the
RENAME TO
clause of the
ALTER TABLESPACE
,
you can rename a permanent or temporary tablespace. For example, the following
statement renames the
users
tablespace:ALTER TABLESPACE users RENAME TO usersts;
The following affect the operation of this
statement:
- The COMPATIBLE parameter must be set to 10.0 or higher.
- If the tablespace being renamed is the SYSTEM tablespace or the SYSAUX tablespace, then it will not be renamed and an error is raised.
- If any datafile in the tablespace is offline, or if the tablespace is offline, then the tablespace is not renamed and an error is raised.
Dropping Tablespaces
You can drop a tablespace and its contents (the segments contained in the tablespace) from the database if the tablespace and its contents are no longer required. You must have the
DROP
TABLESPACE
system privilege to drop a tablespace.Caution: Once a tablespace has been dropped, the data in the tablespace is not recoverable. Therefore, make sure that all data contained in a tablespace to be dropped will not be required in the future. Also, immediately before and after dropping a tablespace from a database, back up the database completely
To drop a tablespace give the following command.
SQL> drop tablespace ica;
This will drop the tablespace only if it is empty. If it is not empty and if you want to drop it anyhow then add the following keyword
SQL>drop tablespace ica including contents;
This will drop the tablespace even if it is not empty. But the datafiles will not be deleted you have to use operating system command to delete the files.
But If you include datafiles keyword then, the associated datafiles will also be deleted from the disk.
SQL>drop tablespace ica including contents and datafiles;
0 Commentaires