(1) Todo o seu SGDB Oracle (Tabelas e índices)
EXEC DBMS_STATS.gather_database_stats;
Utilizando somente X % das linhas para definição
EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15);
Utilizando somente X % das linhas para definição e cascade nas estatisticas anteriores.
EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15, cascade => TRUE);
(2) Apenas um schema
EXEC DBMS_STATS.gather_schema_stats('SCOTT');
EXEC DBMS_STATS.gather_schema_stats('SCOTT', estimate_percent => 15);
EXEC DBMS_STATS.gather_schema_stats('SCOTT', estimate_percent => 15, cascade => TRUE);
(3) Apenas uma tabela do seu schema.
EXEC DBMS_STATS.gather_table_stats('SCOTT', 'EMPLOYEES');
EXEC DBMS_STATS.gather_table_stats('SCOTT', 'EMPLOYEES', estimate_percent => 15);
EXEC DBMS_STATS.gather_table_stats('SCOTT', 'EMPLOYEES', estimate_percent => 15, cascade => TRUE);
(4) Atualiação das estatisticas do dicionario de dados (data dictionary).
EXEC DBMS_STATS.gather_dictionary_stats;
(5) Somente os indices de um schema.
EXEC DBMS_STATS.gather_index_stats('SCOTT', 'EMPLOYEES_PK');
EXEC DBMS_STATS.gather_index_stats('SCOTT', 'EMPLOYEES_PK', estimate_percent => 15);
(6) Atualizar estatistica do System Stats
EXEC DBMS_STATS.gather_system_stats;
(7) Outras formas de atualizar estatística (legado)
ANALYZE TABLE employees COMPUTE STATISTICS;
ANALYZE INDEX employees_pk COMPUTE STATISTICS;
ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 100 ROWS;
ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 15 PERCENT;
EXEC DBMS_UTILITY.analyze_schema('SCOTT','COMPUTE');
EXEC DBMS_UTILITY.analyze_schema('SCOTT','ESTIMATE', estimate_rows => 100);
EXEC DBMS_UTILITY.analyze_schema('SCOTT','ESTIMATE', estimate_percent => 15);
EXEC DBMS_UTILITY.analyze_database('COMPUTE');
EXEC DBMS_UTILITY.analyze_database('ESTIMATE', estimate_rows => 100);
EXEC DBMS_UTILITY.analyze_database('ESTIMATE', estimate_percent => 15);
(8) Exemplo de criação de job para execução continua de análise.
SET SERVEROUTPUT ON
DECLARE
l_jobEst NUMBER;
BEGIN
DBMS_JOB.submit(l_jobEst,
'BEGIN DBMS_STATS.gather_schema_stats(''SCOTT''); END;',
SYSDATE,
'SYSDATE + 1');
COMMIT;
DBMS_OUTPUT.put_line('Job: ' || l_jobEst);
END;
/
EXEC DBMS_JOB.remove(X);
COMMIT;
quarta-feira, 18 de janeiro de 2012
segunda-feira, 19 de dezembro de 2011
Erro ORA-12899 em Import
Hoje tive participei da solução de um problema na execução do comando Imp.exe .No momento do import estávamos recebendo o seguinte erro.
ORA-12899: valor muito grande para a coluna "schema"."tabela"."coluna" (real: 105, máximo: 100).
Vale a pena observar a seguinte mensagem do log do import :
importação realizada nos conjuntos de caracteres WE8MSWIN1252 e NCHAR AL16UTF16
o servidor de importação usa o conjunto de caracteres AL32UTF8 (conversão de charset possível)
O nosso problema aconteceu pelo fato de o banco de origem ter um charset diferente do banco de destino.Qual a solução que tivemos ?No momento do export.exe devemos dizer o charset que queremos para garantir o import.
NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
fica a dica
ORA-12899: valor muito grande para a coluna "schema"."tabela"."coluna" (real: 105, máximo: 100).
Vale a pena observar a seguinte mensagem do log do import :
importação realizada nos conjuntos de caracteres WE8MSWIN1252 e NCHAR AL16UTF16
o servidor de importação usa o conjunto de caracteres AL32UTF8 (conversão de charset possível)
O nosso problema aconteceu pelo fato de o banco de origem ter um charset diferente do banco de destino.Qual a solução que tivemos ?No momento do export.exe devemos dizer o charset que queremos para garantir o import.
NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
fica a dica
quarta-feira, 12 de outubro de 2011
Configuração do modo ARCHIVELOG
Configuração do modo ARCHIVELOG
Para fazermos backups consistentes de um banco de dados Oracle aberto,precisamos que esta instancia esteja
no modo ARCHIVELOG ativado.Com isso conseguimos fazer o chamado BACKUP ON-LINE.
O Oracle armazena os dados do redo log de forma ciclica.Quando o ultimo arquivo do redo log ativo for
preenchido o processo LGWR (log Write) irá substituir o conteúdo do primeiro arquivo redo.
Se a instancia do banco de dados estiver em modo ARCHIVELOG , o processo ARC (archive) irá fazer uma cópia
redo log depois do processo LGWR terminar de gravar o redo log.
Para fazer uso do modo ARCHIVELOG algumas configurações devem ser feitas.Vamos listar a recomendadas :
(1) Configure o parametro db_recovery_file_dest
ex : log_archive_dest = 'c:\app\oracle\arch'
(2) Defina o parametro Log_arquive_dest_n (pelo menos 1 )
ex : log_archive_dest_1 = 'c:\app\oracle\arch'
log_archive_dest_2 = 'c:\app\oracle\arch\backup'
log_archive_dest_3 = 'c:\app\oracle\arch\backup\bkp'
(3) Ative o modo ARCHIVELOG
sql> shutdown immediate ;
sql> startup mount
sql> alter database archivelog ;
sql> alter database open ;
Assinar:
Postagens (Atom)