Preservando estatísticas ao transportar Tablespaces no Oracle
Este é um roteiro para transportar um tablespace sem ter que analisar novamente tabelas e índices. Isto naturalmente supõe que as estatísticas otimizadoras já tenham sido coletadas. O exemplo usa um schema chamado DEMO e um tablespace chamado TRANSTS.
1. Preserve as estatísticas:
exec DBMS_STATS.CREATE_STAT_TABLE ('DEMO','DEMOSTATS');
exec DBMS_STATS.EXPORT_SCHEMA_STATS ('DEMO','DEMOSTATS');
2. Transforme o tablespace em READ ONLY, como preparação para o transporte:
ALTER TABLESPACE transts READ ONLY;
3. Verifique se não há nenhuma dependência que venha a violar as restrições de transporte:
exec dbms_tts.transport_set_check('TRANSTS', TRUE);
SELECT * FROM transport_set_violations;
4. Exporte as definições de dicionário do tablespace:
exp TRANSPORT_TABLESPACE=y TABLESPACES=transts \ TRIGGERS=y
CONSTRAINTS=y GRANTS=y FILE=tts.dmp LOG=exptts.log
5. Faça um upload para um FTP ou copie os arquivos de dados e exporte o arquivo da origem para o destino;
6. Crie usuários no banco de dados alvo, caso eles ainda não tenham sido criados;
7. Ligue os tablespaces ao banco de dados alvo:
imp TRANSPORT_TABLESPACE=y \
DATAFILES=('/opt/oracle/data/TRANSTS_1.dbf') \
TABLESPACES=(transts) \
FILE=tts.dmp LOG=imptts.log
8. Marque o tablespace como READ WRITE. Dessa forma, RMAN reconhecerá sua existência. Caso seja necessário, é possível reverter o ajuste do tablespace para READ ONLY:
ALTER TABLESPACE transts READ WRITE;
9. Importe as estatísticas preservadas:
exec DBMS_STATS.IMPORT_SCHEMA_STATS ('DEMO','DEMOSTATS');
Por Edison Costa
edison@sqlmagazine.com.br
|
|
|
|