Managing Availability of Tablespaces in
Oracle
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.
We usually take tablespaces offline for maintenance
purposes.
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;
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;
Using the RENAME TO clause of the ALTER TABLESPACE,
you can rename a permanent or temporary tablespace. For example, the following
statement renames the user’s 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.
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;
Viewing Information aboutTablespaces and Datafiles
Renaming or Relocating Datafiles belonging to aSingle Tablespace
Procedure for Renaming and Relocating Datafiles in Multiple Tablespaces
Viewing Information aboutTablespaces and Datafiles
Oracle has
provided many Data dictionaries to view information about tablespaces and
datafiles. Some of them are:
To view
information about Tablespaces in a database give the following query
SQL> select * from
dba_tablespaces
SQL> select * from v$tablespace;
SQL> select * from v$tablespace;
To view
information about Datafiles
SQL> select * from
dba_data_files;
SQL> select * from v$datafile;
SQL> select * from v$datafile;
To view
information about Tempfiles
SQL> select * from
dba_temp_files;
SQL> select * from v$tempfile;
SQL> select * from v$tempfile;
To view
information about free space in datafiles
SQL> select * from
dba_free_space;
To view
information about free space in tempfiles
SQL> select * from
V$TEMP_SPACE_HEADER;
Renaming or Relocating Datafiles belonging to aSingle Tablespace
You can rename datafiles
to either change their names or relocate them.
To rename or
relocate datafiles belonging to a Single Tablespace do the following.
1.
Take the tablespace offline
2.
Rename or Relocate the datafiles using operating system command
3.
Give the ALTER TABLESPACE with RENAME DATAFILE option to change the filenames
within the Database.
4.
Bring the tablespace Online
For Example
suppose you have a tablespace users with the following datafiles
/u01/oracle/ica/usr01.dbf’
/u01/oracle/ica/usr02.dbf’
/u01/oracle/ica/usr02.dbf’
Now you want to
relocate /u01/oracle/ica/usr01.dbf’ to ‘/u02/oracle/ica/usr01.dbf’ and
want to rename ‘/u01/oracle/ica/usr02.dbf’ to
‘/u01/oracle/ica/users02.dbf’ then follow the given the steps
1.
Bring the tablespace offline
SQL> alter
tablespace users offline;
2.
Copy the file to new location using o/s command.
$ cp
/u01/oracle/ica/usr01.dbf /u02/oracle/ica/usr01.dbf’
Rename the file
‘/u01/oracle/ica/usr02.dbf’ to ‘/u01/oracle/ica/users02.dbf’ using o/s command.
$ mv
/u01/oracle/ica/usr02.dbf /u01/oracle/ica/users02.dbf
3.
Now start SQLPLUS and type the following command to rename and relocate these
files
SQL> alter tablespace users rename file ‘/u01/oracle/ica/usr01.dbf’,
‘/u01/oracle/ica/usr02.dbf’ to ‘/u02/oracle/ica/usr01.dbf’,
’/u01/oracle/ica/users02.dbf’;
4.
Now bring the tablespace Online
SQL> alter
tablespace users online;
Procedure for Renaming and Relocating Datafiles in Multiple Tablespaces
You can rename
and relocate datafiles in one or more tablespaces using the ALTER DATABASE
RENAME FILE statement. This method is the only choice if you want to rename or
relocate datafiles of several tablespaces in one operation. You must have the
ALTER DATABASE system privilege
To rename
datafiles in multiple tablespaces, follow these steps.
1.
Ensure that the database is mounted but closed.
2.
Copy the data files to be renamed to their new locations and new names, using
the operating system.
3.
Use ALTER DATABASE to rename the file pointers in the database control file.
For example, the
following statement renames the datafiles/u02/oracle/rbdb1/sort01.dbf and
/u02/oracle/rbdb1/user3.dbf to /u02/oracle/rbdb1/temp01.dbf and
/u02/oracle/rbdb1/users03.dbf, respectively:
ALTER DATABASE
RENAME FILE '/u02/oracle/rbdb1/sort01.dbf',
'/u02/oracle/rbdb1/user3.dbf'
TO '/u02/oracle/rbdb1/temp01.dbf',
'/u02/oracle/rbdb1/users03.dbf;
Always provide
complete filenames (including their paths) to properly identify the old and new
datafiles. In particular, specify the old datafile names exactly as they appear
in the DBA_DATA_FILES view.
4.
Back up the database. After making any structural changes to a database, always
perform an immediate and complete backup.
5.
Start the Database
Ref: http://www.oracle-dba-online.com
Comments
Post a Comment