Pular para o conteúdo

Como listar os segmentos manuais de uma TABLESPACE no Oracle

Listar todos os segmentos de rollback, com o banco fora do ar

Se você perder todos os DATAFILEs de sua TABLESPACE de UNDO, e não tiver backup (em RMAN, é claro, pois Backup é em RMAN), você pode recuperar-se desligando a instância, alterando o parâmetro UNDO_MANAGEMENT para MANUAL, e em seguida iniciando a instância, colocando os DATAFILEs de UNDO em OFFLINE, e executando DROP na TABLESPACE de UNDO. Esta é a situação do Lab 26.3 de meu Treinamento Oracle Backup e Recovery, na Nerv.

Mas se o UNDO estava em uso no momento do desastre, o que é muito provável, você pode ter que utilizar o parâmetro “_offline_rollback_segments”, apontando os segmentos de UNDO que devem ser ignorados, ou o Oracle não permitirá que a TABLESPACE de UNDO seja removida.

Mas como saber quais os nomes dos segmentos? Estes nomes devem ser informados neste parâmetro.
Uma saída é consultar a DBA_ROLLBACK_SEGS, mas em algumas ocasiões isto não foi possível, pois o banco de dados não abria. Outra saída é listar todos os segmentos manuais (eles ficam na TABLESPACE SYSTEM), e colocar todos em OFFLINE, menos um, e tentar abrir o banco para conseguir remover a TABLESPACE de UNDO e criar outra.

E como listar todos os segmentos manuais, se o banco de dados não abre? No Linux, utilize o comando strings, como a demonstração abaixo.

[oracle@gg01 datafile]$ ls -lh
 total 34G
 -rw-r-----. 1 oracle oinstall 346M Apr  8 14:57 o1_mf_example_8obrm1yg_.dbf
 -rw-r-----. 1 oracle oinstall 5.5G Apr  8 14:57 o1_mf_soe_8obt42ld_.dbf
 -rw-r-----. 1 oracle oinstall 5.6G Apr  8 14:57 o1_mf_soe_8obt5jk3_.dbf
 -rw-r-----. 1 oracle oinstall 5.4G Apr  8 14:57 o1_mf_soe_8obt5pr8_.dbf
 -rw-r-----. 1 oracle oinstall 5.4G Apr  8 14:57 o1_mf_soe_8obt5ww3_.dbf
 -rw-r-----. 1 oracle oinstall 5.6G Apr  8 14:57 o1_mf_soe_8obt628r_.dbf
 -rw-r-----. 1 oracle oinstall 701M Apr  8 14:57 o1_mf_sysaux_8obrhrgf_.dbf
 -rw-r-----. 1 oracle oinstall 731M Apr  8 14:57 o1_mf_system_8obrhrcn_.dbf
 -rw-r-----. 1 oracle oinstall 3.6G Apr  8 14:58 o1_mf_temp_8obrlv0y_.tmp
 -rw-r-----. 1 oracle oinstall 501M Apr  8 14:57 o1_mf_undotbs1_8obrhrj1_.dbf
 -rw-r-----. 1 oracle oinstall 6.3M Apr  8 14:57 o1_mf_users_8obrhrkr_.dbf
 [oracle@gg01 datafile]$ strings o1_mf_system_8obrhrcn_.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u
 _SYSSMU10_3271578125
 _SYSSMU10_960603280
 _SYSSMU11_125382609
 _SYSSMU1_1240252155
 _SYSSMU12_2245433549
 _SYSSMU13_3242268464
 _SYSSMU1_3728092404
 _SYSSMU14_44821983
 _SYSSMU15_1872739176
 _SYSSMU16_1376564431
 _SYSSMU17_1839632768
 _SYSSMU18_3088942417
 _SYSSMU19_2867910983
 _SYSSMU20_948290921
 _SYSSMU2_111974964
 _SYSSMU2_2850105180
 _SYSSMU3_4004931649
 _SYSSMU3_4160240979
 _SYSSMU4_1126976075
 _SYSSMU4_348804819
 _SYSSMU5_2968973961
 _SYSSMU5_4011504098
 _SYSSMU6_2060978448
 _SYSSMU6_3654194381
 _SYSSMU7_4222772309
 _SYSSMU7_894058185
 _SYSSMU8_3612859353
 _SYSSMU8_87803851
 _SYSSMU9_2370500926
 _SYSSMU9_3945653786
 [oracle@gg01 datafile]$

Agora, é colocar estes nomes no parâmetro no PFILE, desta forma:

 _offline_rollback_segments=('_SYSSMU8_87803851','_SYSSMU9_2370500926','_SYSSMU9_3945653786')

Agora você consegue abrir o banco de dados, remover a TABLESPACE de UNDO, e adicionar uma nova. Nem precisaria remover a antiga para adicionar uma nova, mas você não quer esta TABLESPACE sem DATAFILEs em seu banco de dados.

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 5 / 5. Contagem de votos: 21

Sem votos ! Seja o primeiro a classificar !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress