terça-feira, 1 de agosto de 2017

How to force a sql_id to use a plan_hash_value using SQL Baselines

Olá pessoal,

Hoje pela manhã um cliente me ligou dizendo que estava com uma carga anormal no banco de dados.

Após verificar, vi que o SQL ID b6hd1bvsg59wr era responsável por 80% da carga do banco.

A primeira coisa foi verificar se ocorreu alguma mudança no plano de execução e quando ocorreu:



Usando o SQL abaixo, verifiquei que o novo plano foi criado no dia 31/7 às 16:45hrs:


O tempo médio de execuçao do PLAN_HASH_VALUE 2669208802 é de 63 segundos:


Enquanto o plano antigo era de apenas 4s.

Como as estatísticas estavam atualizadas, minha idéia inicial foi utilizar um SQL PLAN BASELINE e fixar o melhor plano de execução até ter tempo de otimizar e analisar melhor o SQL em questão.

Para fazer isso, segue o script utilizado:

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

BEGIN
  DBMS_SQLTUNE.CREATE_SQLSET(
    sqlset_name => 'MySTS',
    description => 'SQL Tuning Set SQL I_ID b6hd1bvsg59wr');
END;
/

DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P)
    FROM TABLE(
       dbms_sqltune.select_workload_repository(begin_snap=>13089, end_snap=>13090,basic_filter=>'sql_id = ''b6hd1bvsg59wr''',attribute_list=>'ALL')
              ) p;
     DBMS_SQLTUNE.LOAD_SQLSET( sqlset_name=> 'MySTS', populate_cursor=>cur);
  CLOSE cur;
END;
/

DECLARE
my_plans pls_integer;
BEGIN
  my_plans := DBMS_SPM.LOAD_PLANS_FROM_SQLSET(
    sqlset_name => 'MySTS', 
    basic_filter=>'plan_hash_value = ''368739152'''
    );
END;

SELECT * FROM dba_sql_plan_baselines order by created desc;


Após isso é necessário fazer o FLUSH do plano antigo da shared pool em todos nós do RAC:

select inst_id,ADDRESS, HASH_VALUE from gV$SQLAREA where SQL_ID like 'b6hd1bvsg59wr%';

exec dbms_shared_pool.purge('0000001C39C45688, 4042434455','C');
exec dbms_shared_pool.purge('0000001D0F7769C0, 4042434455','C');


quarta-feira, 26 de julho de 2017

ENQ: JS - WDW OP

Olá pessoal,

Um cliente reclamou que alguns relatórios não haviam sido gerados na madrugada.

Ao verificar o banco, vi que nenhum sheduler job havia sido disparado durante a noite.

O banco estava com diversos eventos "ENQ: JS - WDW OP"

Achei no My Oracle Support a seguinte nota: Jobs are not being executed by DBMS_SCHEDULER, CJQ WAITING FOR 'ENQ: JS - WDW OP' (Doc ID 564957.1)

Porém fala que afeta apenas a versão 10g: "Oracle Database - Enterprise Edition - Version 10.2.0.1 to 10.2.0.3"

Resolvi seguir mesmo assim o procedimento: "Kill the CJQ0 process at the operating system level."

ps -aef |grep -i CJQ0
kill -9 PID

Problema resolvido :)

quinta-feira, 22 de junho de 2017

GUOB TECH DAY 2017 - LAD OTN TOUR - BRASIL - Cupom de Desconto

Aproveite o cupom de desconto de 15% sobre o valor da inscrição. 
Código do Cupom: EU_VOU_GUOB
Valido até 23/06 para as primeiras 30 inscrições pagas.

https://guobtechday2017.eventize.com.br/index.php?pagina=1



terça-feira, 13 de junho de 2017

Oracle Code São Paulo - 2017 - I'm speaking


   O Oracle Code é um evento gratuito para que desenvolvedores tenham acesso e aprendam sobre as últimas tecnologias, práticas e tendências de desenvolvimento. Assista a palestras e ouça novidades de especialistas e líderes do mercado em keynotes e sessões especializadas de conteúdo, e pratique o que há de mais inovador em workshops! Experimente a tecnologia de desenvolvimento na nuvem da Oracle no Code Lounge e participe de demonstrações e experimentações ao vivo.

Minha sessão será às 14:10hrs:


**Apesar de possuir o mesmo título de uma palestra que fiz no DBA BRASIL 1.0 e no GUOB de 2016, essa é a versão 2 e foi completamente reestruturada.


Inscreva-se: https://developer.oracle.com/code/sao-paulo

quinta-feira, 8 de junho de 2017

GUOB TECH DAY 2017: veja quem vai estar no evento. Inscreva ainda hoje. 05/08 em São Paulo



Serão 5 salas simultâneas, mais um Auditório, com algumas das maiores referências do planeta em diversas tecnologias Oracle, mais aquele belo Café e Networking que você respeita.

Arup Nanda, Mike Dietrich (Blog Upgrade), Craig Shallahamer (do OraPub), Alex Gorbachev (CTO da Pythian), Alex Zaballa (da Enkitec, tem umas certificações!!!), Wagner Bianchi (MySQL), Airton Lastori (MySQL), entre muitos outros estarão no maior GUOB Tech Day realizado até hoje.

Este também será o GUOB com a maior quantidade de Palestras feitas por brasileiros. Muitos palestrantes conhecidos na grade. Confere na agenda pois é muita gente.


Não perca tempo. Inscreva-se ainda hoje.


domingo, 14 de maio de 2017

DBA Brasil 2.0 – Review

Olá pessoal,

Participei do evento DBA Brasil 2.0, que ocorreu em São Paulo no dia 06 Maio de 2017.

Local do Evento:




A primeira pelestra que assisti foi com o Matheus Boesing "Oracle Database Backup Service: Backup de Banco de Dados On-Premise para Cloud"


A segunda foi com o Rodrigo de Araujo Jorge "Protegendo o seu BD Oracle com autenticação em 2 etapas"



A terceira foi com o Ricardo Rezende "Big Data: A nova onda"


Após o almoço palestrei sobre Oracle SQL Tuning


A úiltima do dia "Tibero 6, maximizando desempenho e eficiência através de arquitetura Hyper Thread" 


Encerramento:



Album de fotos do evento: https://www.facebook.com/pg/DBABrasil2.0/photos/

Download da minha palestra: https://www.slideshare.net/AlexZaballa1/oracle-sql-tuning-75754947













sexta-feira, 14 de abril de 2017

Collaborate 17 - Review

Olá pessoal,

Participei do evento Collaborate17, que ocorreu em Las Vegas de 02 à 06/04.

Hotel do Evento:


Credenciamento:




Domingo

 SQL Tunning workshop com Mauro Pagano e Dimas Chbane:



Segunda

Oracle Real Application Clusters 12c Release 2 Best Practices



Transforming Data Management with Oracle Database 12c Release 2





The Best Oracle Database 12c & 12cR2 New Features



Uma das melhores palestras do evento com o Mike Dietrich "Best Practice to Ensure Performance Stability after a Database Upgrade"






Cardinality Feedback: What is it? Friend or Foe?


Oracle ACE Dinner



Terça

Minha sessão foi a primeira da manhã "Moving your Oracle Databases to the Oracle Cloud"




Stop Guessing, Start Analyzing: New Analytic View Features in Oracle Database 12cR2


 Laugh Your Way To Understanding Oracle, Queuing Theory & Performance


Full Table Scan: Friend or Foe? (#IOUGeniusPerformance)


Uma das melhores palestras do evento, com Markus Michalewicz "Under the Hood of Oracle Real Application Clusters (RAC) 12c Release 2"



Quarta

RMAN in Oracle Database 12c - Top New Features


Adapting to Adaptive Plans on 12c



Tips and Best Practices for DBAs (#IOUGeniusPerformance)


OakTable World - Chasing the Optimizer



Quinta

Oracle Maximum Availability Architecture for the Cloud


Innovation, the Oracle Cloud, Big Data and the Internet of Things 


Sexta

Na sexta-feira estive em Dallas, no escritório da Enkitec



Abraço

Alex Zaballa

quarta-feira, 18 de janeiro de 2017

Statistics Preferences - Script

Tabelas:

Select * from DBA_TAB_STAT_PREFS;

SELECT 
  owner, table_name,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'INCREMENTAL') incremental,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'GRANULARITY') granularity,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'STALE_PERCENT') stale_percent,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'NO_INVALIDATE') no_invalidate,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'ESTIMATE_PERCENT') estimate_percent,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'CASCADE') cascade,
  DBMS_STATS.get_prefs(ownname=>owner,tabname=>table_name,pname=>'METHOD_OPT') method_opt
FROM dba_tables
WHERE owner like 'SAN%'
ORDER BY owner, table_name;


Schemas:

SELECT 
  username,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'INCREMENTAL') incremental,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'GRANULARITY') granularity,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'STALE_PERCENT') stale_percent,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'NO_INVALIDATE') no_invalidate,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'ESTIMATE_PERCENT') estimate_percent,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'CASCADE') cascade,
  DBMS_STATS.get_prefs(ownname=>USERNAME,pname=>'METHOD_OPT') method_opt
FROM dba_users
ORDER BY username;



Database:

SELECT 
  DBMS_STATS.get_prefs(pname=>'INCREMENTAL') incremental,
  DBMS_STATS.get_prefs(pname=>'GRANULARITY') granularity,
  DBMS_STATS.get_prefs(pname=>'STALE_PERCENT') publish,
  DBMS_STATS.get_prefs(pname=>'NO_INVALIDATE') no_invalidate,
  DBMS_STATS.get_prefs(pname=>'ESTIMATE_PERCENT') estimate_percent,
  DBMS_STATS.get_prefs(pname=>'CASCADE') cascade,
  DBMS_STATS.get_prefs(pname=>'METHOD_OPT') method_opt
FROM dual;


Diferença entre


SET_GLOBAL_PREFS Procedure


This procedure is used to set the global statistics preferences.



NLS_ENV - DBMS_SCHEDULER ou DBMS_JOB

Olá pessoal,

Hoje um cliente me chamou para relatar uma situação estranha na geração de arquivos via JOB.

Ele relatou que não estava mais gerando datas e valores no formato Brasil e sim no Americano.

Investigando, verifiquei que a coluna NLS_ENV da DBA_JOBS estava diferente.

Cheguei a seguinte nota do Metalink:

The Priority of NLS Parameters Explained (Where To Define NLS Parameters) (Doc ID 241047.1)

E ao "problema":

* DBMS_SCHEDULER or DBMS_JOB store the SESSION values of the SUBMITTING session for each job. This is visible in the NLS_ENV column of DBA_SCHEDULER_JOBS or DBA_JOBS


Abs
Alex Zaballa

sábado, 31 de dezembro de 2016

O meu ano de 2016 na comunidade Oracle

Olá pessoal,

Seguindo a tradição dos outros anos, segue um resumo do meu ano na comunidade Oracle.

Anos anteriores:

  O meu ano de 2015 na comunidade Oracle

O ano de 2016 já começo bem, fui entrevistado pela Oracle Magazine:


Eventos em que participei:

                Fevereiro:  RMOUG Training Days - 2016
                                RMOUG Training Days - 2016 - Fotos
                                Oracle ACE Program Dinner

                Abril: DBA Brasil 1.0

                Junho: Enkitec E4
                             Enkitec E4 - Fotos 
                        Oracle Open World Brasil - 2016
                           Entrevista - Oracle Open World Brasil - 2016

                Julho: GUOB TECH DAY 2016 - OTN TOUR LA

                Agosto: OTN TOUR LA - México
                           OTN TOUR LA - México - Fotos
                        OTN TOUR LA - Guatemala
                           OTN TOUR LA - Guatemala - Fotos
                        OTN TOUR LA - Costa Rica
                           OTN TOUR LA - Costa Rica - Fotos
                           OTN TOUR LA - Costa Rica - Entrevista                    

                Setembro:  Oracle Ace Briefing 2016
                                 Oracle Ace Briefing 2016 - Fotos
                                  Oracle Open World 2016
                                      Oracle Open World 2016 - Fotos

                Novembro: InteropMix 2016 - São Paulo


The Oracle ACE Program Newsletter:

       Fevereiro



       Março



       Maio



       Junho




      Agosto:



     Setembro:





Série de Artigos publicados no OTN  para preparação do OCM 12c:


Parte 1:

Parte 2:


Outros artigos publicados:



Obtive uma ótima pontuação para garantir minha continuidade como Oracle ACE Director:



Passei no OCM 12c:


Accenture Spotlight:



Accenture Operations Newsletter:



Ganhei o melhor presente:




Gostaria de agradecer ao Oracle ACE Programao Oracle OTN e a Enkitec pelas oportunidades.

  • Evento já programado para 2017:
               COLLABORATE 17 - IOUG

Um bom 2017.
Alex Zaballa