- Crear un nuevo tablespace
- Mover todo lo que pertenezca al tablespace al nuevo tablespace.
- Borramos el antiguo tablespace
- Renombrar el tablespace como el antiguo tablespace
- modificar el tamaño del tablespace si es necesario
Necesitamos crear un nuevo tablespace el cual será quien almacene los datos del antiguo tablespace, el cual se encuentra dañado o con x problema.
Para hacer esto debemos ejecutar lo siguiente:
CREATE TABLESPACE OPTIONAL DATAFILE 'optional_IDX.dbf' SIZE 500M ONLINE;
create tablespace: Crea un nuevo tablespace dentro de la bd.
optional: Nombre del nuevo tablespace.
datafile: Nombre del archivo lógico que almacenará el tablespace.
size:Tamaño maximo del tablespace
online:Activa y accesible en la bd.
Realizado esto tendremos nuestro nuevo tablespace para trabajar.
Para realizar esto generamos un script para luego exportar el resultado a un archivo .sql el cual ejecutaremos para mover nuestros datos de un tablespace al nuevo tablespace.
select 'ALTER TABLE owner_name.' || table_name || ' MOVE TABLESPACE optional;' from dba_tables
where tablespace_name ='tablespace_name' and owner='owner_name';
Con esto obtenemos un listado de todos los datos que tengamos en nuestro tablespace.
Tambien podemos exportar los indices si es que existen.
SELECT 'ALTER INDEX '||OWNER_name||'.'|| INDEX_NAME|| ' REBUILD TABLESPACE OPTIONAL;' FROM DBA_INDEXES WHERE OWNER='owner_name';
drop tablespace tablespace_name;
ALTER tablespace optional rename to tablespace_name;
Con esto renombramos el tablespace que creamos y lo dejamos con el nombre del antiguo tablespace o con el nombre que necesitamos.
Para modificar el tamaño:
ALTER DATABASE DATAFILE 'xxxx.dbf' RESIZE 50M;
Para modificar el nombre:
Debemos dejar el tablespace offline:
ALTER TABLESPACE tablespace_name OFFLINE NORMAL;
Para renombrar el archivo primero debemos modificarlo accediendo por el SO a la carpeta donde se ubica el archivo del tablespace y cambiar el nombre, luego modificar el nombre en la bd.
ALTER TABLESPACE tablespace_name RENAME DATAFILE 'tablespace_name.dbf' TO 'new_tablespace_name.dbf';
Activar el tablespace para el acceso
ALTER TABLESPACE tablespace_name ONLINE;
No hay comentarios:
Publicar un comentario