quarta-feira, 5 de dezembro de 2007

Oracle - Rebuild de índices

1) Crie então uma nova tablespace ( ex: CEGAS_INDEX ) com um tamanho inicial de 5 Gb e incremento de 1 Gb.
Você pode criar pelo enterprise manager ou executar o sql abaixo (atualize o diretório onde será criada em seu servidor, onde está em vermelho)
CREATE SMALLFILE TABLESPACE CEGAS_INDEX
DATAFILE '
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBSPATIAL\CEGAS_INDEX.DBF'
SIZE 5000M
AUTOEXTEND ON NEXT 1000M
MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT
SPACE MANAGEMENT AUTO;

2) Execute o comando abaixo no PLSQL, logado com o usuário Cegas.

SELECT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD parameters (''WORK_TABLESPACE = CEGAS_INDEX'');'
FROM user_indexes where index_type = 'DOMAIN' ORDER BY INDEX_NAME

O comando para efetuar o rebuild em um índice espacial, movendo-o para a tablespace CEGAS_INDEX, é este abaixo:
ALTER INDEX INDEX_NAME REBUILD parameters ('WORK_TABLESPACE = CEGAS_INDEX');
Com o primeiro comando, você irá gerar o segundo para cada tabela espacial.
Copie o resultado do primeiro comando (todas as linhas), cole em um documento do bloco de notas e salve com o nome REBUILD_INDEX.SQL ( em c:\ )
Primeiro, crie um spool para registrar os resultados:
No SQL PLUS, digite:
spool c:\log_rebuild_index.txt
agora execute o arquivo sql:
@C:\rebuild_index.sql
dê um commit; quando abacar e depois finalize a gravação no spool:
spool off
Verifique o arquivo log_rebuild_index.txt criado no c: para ver se ocorreu algum erro.

Um comentário:

Banco de conhecimento disse...

set feedback off
set heading off
spool c:\rebuild.sql
select 'alter index '||index_name||' rebuild tablespace logix_indx;'
from user_indexes
spool off