1.Criar uma nova tablespace de UNDO com o tamanhos e caminho desejados, respeitando as regras
de negócio da empresa.
SQL> create undo tablespace UNDOTBS2
datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\UNDOTBS02.DBF' size 500M;
Tablespace created.
2. Atualizar o arquivo "init.ora" apartir do SPFILE caso esteja configurado e editar o parâmetro
"undo_tablespace=", usar:
SQL> create pfile='d:\oracle\product\10.2.0\db_1\dbs\pfileorcl2.ora'
from spfile='D:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\SPFILEORCL2.ORA';
File created.
Alterar os parâmetros abaixo:
UNDO_TABLESPACE=UNDOTBS2
UNDO_MANAGEMENT=MANUAL
Onde o nome informado no parâmetro UNDO_TABLESPACE será o da nova tablespace de UNDO.
Configurar o parâmetro UNDO_MANAGEMENT para MANUAL para que os segmentos de UNDO possam ser colocados em OFFLINE e editados após o "restart" do banco de dados, (ver passo 6).
3. Agendar uma janela de tempo para baixar o banco de dados, usar:
SQL> shutdown immediate;
4. Levantar o banco de dados, com o PFILE (ajustado no passo 2).
SQL> startup pfile='d:\oracle\product\10.2.0\db_1\dbs\pfileorcl2.ora'
5. Confirmar se a nova tablespace de UNDO está em uso:
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------- -------------- -----------------
undo_tablespace string UNDOTBS2
6. Verificar os status dos segmentos de UNDO e colocar os segmentos de UNDO antigos em OFFLINE.
Os segmentos de UNDO deverão ser criados na nova tablespace de UNDO.
SQL> select owner, segment_name, tablespace_name, status from dba_rollback_segs order by 3;
OWNER SEGMENT_NAME TABLESPACE_NAME STATUS
------ --------------- --------------- -------
PUBLIC _SYSSMU3$ UNDOTBS1 OFFLINE
PUBLIC _SYSSMU2$ UNDOTBS1 OFFLINE
PUBLIC _SYSSMU19$ UNDOTBS2 OFFLINE
...
...
...
Se os segmentos de UNDO antigos estiverem ONLINE, deve-se colocá-los em OFFILNE, usar:
SQL>alter rollback segment "_SYSSMU3$" offline;
SQL>alter rollback segment "_SYSSMU2$" offline;
...
...
...
Esse comando deverá ser executado para todos os segmentos de UNDO antigos que estejam apontando para a tablespace antida de UNDO.
7. Certifique-se que todos os segmentos antigos de UNDO estão em OFFLINE, para a remoção da
tablespace de UNDO antiga. Para a remoção da tablespace de UNDO antiga usar:
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
Tablespace dropped.
8. Recrie o arquivo de configuração SPFILE para atualizar os parâmetros alterados
(UNDO_TABLESPACE e UNDO_MANAGEMENT) porém antes altere o parâmetro
UNDO_MANAGEMENT para AUTO, conforme demonstrado abaixo:
UNDO_MANAGEMENT='AUTO'
UNDO_TABLESPACE='UNDOTBS2'
SQL> create spfile='d:\oracle\product\10.2.0\db_1\dbs\spfileorcl2.ora'
from pfile='D:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\PFILEORCL2.ORA';
File created.
9. Baixe o banco de dados (shutdown immediate) e "restart" o banco de dados utilizando o arquivo SPFILE.
SQL> startup;
Ao término da execução desses passos o banco de dados já estará utilizando a nova tablespace de UNDO.
Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com