Saturday, January 13, 2018

Managing Tablespaces : #2


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.

ALTER TABLESPACE tablespace
{ONLINE |OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]}

NORMAL:  All data blocks for all datafiles that form the tablespace are written from the SGA to the datafiles.  A tablespace that is offline NORMAL does not require any type of recovery when it is brought back online.

TEMPORARY:  A checkpoint is performed for all datafiles in the tablespace.  Any offline files may require media recovery.

IMMEDIATE:  A checkpoint is NOT performed.  Media recovery on the tablespace is required before it is brought back online to synchronize the database objects.

FOR RECOVER:  Used to place a tablespace in offline status to enable point-in-time recovery. The FOR RECOVER setting has been deprecated. The syntax is supported for backward compatibility
The SYSTEM tablespace cannot be taken offline.
We usually take tablespaces offline for maintenance purposes like below
  • Move a datafile without closing the database.
  • Recover an individual tablespace or datafile.
  • Offline tablespace backup – a tablespace can be backed up while online, but offline backup is faster.
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 ducat offline;

To again bring it back online give the following command.

SQL>alter tablespace ducat online;

To take individual datafile offline type the following command

SQL>alter database datafile ‘/u01/oracle/ducat/ducat_tbs01.dbf’ offline;

Again to bring it back online give the following command

SQL> alter database datafile ‘/u01/oracle/ducat/ducat_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/ducat/ducat_tbs01.dbf’ offline for drop;

Making a Tablespace Read /Read Write 

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 historducatl 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 ducat read only;

Again to make it read write

SQL>alter tablespace ducat 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:

SQL> 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 ducat;

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 ducat 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 ducat including contents and datafiles;

No comments:

Post a Comment