quinta-feira, 19 de maio de 2011

SQL Tunnig e Relatório ADDM

Ola Pessoal..

Irei dar uma dica sobre com o utilizar o ADDM para Criação de um relatório par análise do Banco de Dados e depois como podemos utilizar o SQL Tunnig Advisor para gerar recomendações de ajustes para o Banco.
Lembre-se mais informações é só consultar os documentos fornecidos pela Oracle.

Vamos lá ........


1-Verificar o DB time do banco de dados :

Quick Tip : O db time é um valor que o Oracle calcula para indicar o tempo cumulativo que é gasto no processamento das requisições feitas pelos usuários no banco de dados.

select sum(value) "DB time” from v$sess_time_model
where stat_name='DB time';

2-Execute o Script awrrpt.sql para informações dos Snapshots contidos no AWR que serão utilizados para criação do relatório do ADDM :

SQL>@?/rdbms/admin/awrrpt.sql

3-Executar o Script para Criacão e Geração do Relatório ADDM para gerar análises  sobre os Diagnosticos no Banco de Dados :

SQL>@?/rdbms/admin/addmrpt.sql

4-Criar uma tarefa com o SQLTUNE para as recomendação fornecida pelo ADDM :

DECLARE
l_sql_tune_task_id  VARCHAR2(100);
BEGIN
l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
begin_snap  =>'26',
end_snap => '64',
sql_id      => 'b6usrg82hwsa3',
scope=> DBMS_SQLTUNE.scope_comprehensive,
time_limit => 60,
task_name   => 'tarefa_AWR_tuning_task');
DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
END ;
/

5-Executar a Tarefa criada acima.

EXEC DBMS_SQLTUNE.execute_tuning_task(task_name =>'tarefa_AWR_tuning_task');

6- Verificar o Status da tarefa :

SELECT task_name, status FROM dba_advisor_log WHERE owner ='SYS';
tarefa_AWR_tuning_task    

7-Verificar Recomendações da tarefa criada pelo SQL TUNNIG Advisor :   

SELECT DBMS_SQLTUNE.report_tuning_task('tarefa_AWR_tuning_task')
AS recomendacao FROM dual;

8-Dropar a Tarefa.

BEGIN
DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'tarefa_AWR_tuning_task' );
END;
/

Excluir um Sql Tunning Set

Bom dia Pessoal ..

Não Acredito , Você criou um  Sql Tunning Set (Conjunto de Ajuste Sql) para análisar a performance dos Sql's no seu banco de dados e esqueceu como exclui-lo ...Bammmmmmmmmmm.
Não se desespere aqui vai mais uma dica rapída de sua companheira ......

O procedimento DROP_SQLSET  é utilizado para dropar um STS ( Sql Tunning Set ) que não será necessário.
Por exemplo

BEGIN
  DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'conj_sql_tunning' );
END;
/


Valeu ......

Fiquem com Deus ..

terça-feira, 17 de maio de 2011

Utilizando SQL Tunning Advisor com uma declaração Sql.

Ola Pessoal .....Belezinha..

Hoje irei dar uma dica rapída sobre o Assitente de Ajuste Sql ( SQL Tunning Advisor)
Ele é utilizado para ajudar os DBA`s a otimizar , e realizar ajustes nas querys do banco de dados  e surgiu com a versão 10g do Oracle.
Lembre-se sempre pesquizem o material da Oracle para Mais informações.
Eu utilizei o Oracle 11g como ambiente de teste.
Referencias:http://www.oracle-base.com/articles/10g/AutomaticSQLTuning10g.php


Mãos a Obra ....

1-Executar o script para Criacao da tabela de Planos.
SQL> @?/RDBMS\ADMIN\utlxplan.sql;
SQL> desc plan_table

2-Executar explain de determinada declaração:
SQL> SET TIMING ON -- Para verificarmos o tempo de execução
SQL>explain plan SET STATEMENT_ID=’ID’ for Select * From scott.emp ;
SQL> SET TIMING OFF

3-Visualize  as saida da tabela de planos com a o pacote dbms_xplan:
select * from TABLE(dbms_xplan.display);

4-Conceder privilégio para que um usuário possa utilizar o Advisor de Auste SQL

CONN sys/password AS SYSDBA
GRANT ADVISOR TO scott;
CONN scott/tiger

5-Criar uma tarefa para executar o Advisor

SQL> DECLARE
  l_sql  VARCHAR2(500);
  l_sql_tune_task_id  VARCHAR2(100);
  BEGIN
 l_sql := 'SELECT * FROM emp';
 l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
 sql_text=> l_sql,user_name => 'SCOTT',SCOPE =>   DBMS_SQLTUNE.scope_comprehensive,
 time_limit => 60,task_name => 'emp_tuning_task');
 DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
 END ; 
/
PL/SQL procedure successfully completed.

6-Com a tarefa de ajuste definida o próximo passo é executá-lo usando o procedimento EXECUTE_TUNING_TASK:

SQL> EXEC DBMS_SQLTUNE.execute_tuning_task(task_name =>'emp_tuning_task');
PL/SQL procedure successfully completed.

Quick Tip:Durante a fase de execução você pode querer fazer uma pausa e reiniciar a tarefa, cancelar ou reiniciar a tarefa de permitir que ele seja re-executado

a-Interromper e retomar uma tarefa de afinação
EXEC DBMS_SQLTUNE.interrupt_tuning_task (task_name => 'emp_tuning_task');
EXEC DBMS_SQLTUNE.resume_tuning_task (task_name => 'emp_tuning_task');

b-Cancelar uma tarefa
EXEC DBMS_SQLTUNE.cancel_tuning_task (task_name => 'emp_tuning_task');

c-Redefinir uma tarefa de ajuste que permite que ele seja re-executada.
EXEC DBMS_SQLTUNE.reset_tuning_task (task_name => 'emp_dept_tuning_task');

7-O status da tarefa de ajuste pode ser monitorado usando a visão DBA_ADVISOR_LOG:

SELECT task_name, status FROM dba_advisor_log WHERE owner ='SCOTT';

8-Depois que a tarefa de ajuste foi executado com êxito as recomendações podem ser exibidas usando a função REPORT_TUNING_TASK:

SET LONG 10000;
SET PAGESIZE 1000
SET LINESIZE 200
SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations FROM dual;
SET PAGESIZE 24
SQL> SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations
  2  FROM DUAL;

9-Após a sessão de ajuste a tarefa de ajuste pode ser eliminada utilizando o procedimento DROP_TUNING_TASK:
BEGIN
DBMS_SQLTUNE.drop_tuning_task (task_name => 'emp_tuning_task');
END;
/

Bom Valeu ......Fiquem com Deus .

quinta-feira, 5 de maio de 2011

Upgrade do Oracle 10.2.0.4 para 11g Release 11.1.6.0

Oi Pessoal ...Que saudades .....Esta vida corrida , mas beleza estamos juntos...

Hoje irei passar mais uma dica rapída para aqueles momentos em que esquecemos os passos necessários para realizar um Upgrade no Oracle.
Eu sempre repito essas frases "Pesquizem a documentação da Oracle ". A intenção aqui é relembrar passos rapídos em ocasiões que exigem agilidades.
O ambiente utilizado é o Red Hat Enterprise Linux 5 como o Oracle 10.2.0.4 instalado.

Vamos lá tirar poeira do cérebro.kkkkkkkkkkkkk

I-Pré Upgrade

1-Determinar o Caminho de atualizção (Qual versão Oracle será atualizado)

2-Escolha Um Método de Atualização:

Irei realizar o método Manual

3-Escolha um novo Diretório para a Nova Versão do Oracle e  Instale o Oracle 11G:

Quick Tip:Você não pode instalar o novo software para o mesmo diretório home do Oracle , a menos que você esteja instalando uma versão do Oracle Database 11g patchset.

4-Realizar Um Backup da base de Dados que será atualizada , caso queira fazer um Restore se as coisas derem errado.

a.  rman "target / nocatalog"
b. Issue the following RMAN commands:
RMAN> run
 {
allocate channel c1 type disk;
backup database format 'db_%u_%d_%s';
backup format 'log_t%t_s%s_p%p';
BACKUP CURRENT CONTROLFILE TO 'save_controlfile_location';
(archivelog all);
 }

Quick Tip: Se não utiliza  o Rman faça um Backup a Frio  com os comando do sistema operacional.

Quick Tip: Desenvolver um Plano de Testes para seu Upgrade , Não Use o ambiente de Produção.


5-Copie o script  utlu111i.sql que esta lolizado no ORACLE_HOME do 11G para o ORACLE_HOME 
do 10G e execute ele com previlégio sysdba na instancia do Oracle 10g.
Quick Tip:Este script ira lhe mostrar o que deverá ser atualizado no 10G antes da realização do upgrade .

SQL> SPOOL upgrade_info.log
SQL> @utlu111i.sql
SQL> SPOOL OFF

Após verificar a saída do script será necessário realizar algumas alterações recomendadas veja algumas destas ações abaixo:

A - Remova os Parâmetros Obsoletos e ajuste os parâmetros depreciados.

B- Assegure que o parâmetro COMPATIBLE esta apropriadamente configurado para Database 11.1.

C-Ajuste O valor dos parâmetros de configuração para no mínimo mostrado no pré configuração

D-Assegure que todos os caminhos foram especificados nos arquivos de Parâmetros.

6-Copie as configurações do arquivo ORACLE_HOME que esta sendo atualizado para o ORACLE_HOME do Oracle Database 11g Release 1: (Faça sempre um backup destes arquivos antes de qualquer alteração)

ex: Spfile , Init.ora,Orapwd , Listener.ora,TnsNames.Ora etc...

II-Upgrade

Quick Tip: Parem todos os processos Oracle.

7-Siga os seguintes passos:

a -Set seu ORACLE_SID corretamente.

b-O arquivo oratab deverá estar apontado para Oracle Database 11g Release  (11.1) home.

c- A seguinte variável de ambiente deve apontar para os diretórios do Oracle Database 11g Rel.1

ORACLE_HOME
PATH

d-Alguns Scripts Clients que utiliza o valor do Oracle_Home deve apontar para o novo ORACLE_HOME.

8-Logar No sistema:
Logue no sistema com o dono do diretório ORACLE_HOME Oracle Database 11g Release  (11.1)

9-No prompt , mude para o diretório ORACLE_HOME/rdbms/admin

10-Start O SQL*Plus

11-Conect a Instância como usuário com previlégio SYSDBA.

12-Start na Instancia o comando

SQL> STARTUP UPGRADE

a-Execute o script

SQL> SPOOL upgr.log
SQL> @catupgrd.sql
SQL>SPOOL OFF

13-Após a execução do script  reinicie a instância

SQL> STARTUP


III-Pos-Upgrade

14-Execute o script pré upgrade para verificar se tudo esta correto:

SQL> @utlu111s.sql

15-Caso queira atualizar os dados de baselines execute o seguinte script:

SQL> @rdbms/admin/catuppst.sql

16-Execute o Script abaixo para compilar os objetos inválidos do banco de dados.

a-SQL> @utlrp.sql

b-Verifique se todos os objetos estão validos :
SQL> SELECT count(*) FROM dba_invalid_objects;
SQL> SELECT distinct object_name FROM dba_invalid_objects;

17-Caso use o Enterprise Manager , vc tera qua atualiza-lo:

$ emca -upgrade db

18- Atualize o Catalogo ro RMAN :

% rman CATALOG rman/rman@orcl

RMAN> UPGRADE CATALOG

entre com o comando  UPGRADE CATALOG novamente para confirmar a atualização do Catálago.

RMAN> UPGRADE CATALOG

19-Verifique se esta tudo ok:

SQL> select comp_name , version , status from dba_registry;

Bom espero que ajude.

Referencias : http://download.oracle.com/docs/cd/B28359_01/server.111/b28300/toc.htm

Obrigado a todos.......

"A busca pelo conhecimento é o princípio da sabedoria"
Michelle Ramos