domingo, 27 de abril de 2014

12c - Statistics During Loads

No Oracle Database 12c, foi introduzida uma nova feature, Online Statistics Gathering for Bulk Loads.

O banco de dados irá coletar estatísticas automaticamente das tabelas durante os seguintes tipos de operações bulk load:

  • CREATE TABLE AS SELECT

  • INSERT INTO ... SELECT into an empty table using a direct path insert

Por padrão, parallel inserts usam direct path insert. Podemos forçar o direct path insert usando o hint  / * + APPEND * /.

Lembrando que ao coletar as estatísticas, o banco de dados não irá gerar histograms e nem coletar estatísticas para índices existentes. Para isso é necessário utilizar o DBMS_STATS.

Para a criação de índices, desde a versão 10G o Oracle automaticamente coleta as estatísticas do índice após a sua criação.

Para voltar a ter o comportamento anterior à release 12c e não coletar as estatísticas, podemos utilizar o hint NO_GATHER_OPTIMIZER_STATISTICS.




SQL> create table tabela_teste
(
coluna1 number,
coluna2 number
);
Table created.

SQL> begin
for i in 1..1000
loop
insert into tabela_teste values(i, i);
end loop;

commit;
end;
/
PL/SQL procedure successfully completed.

SQL> select count(*) from tabela_teste;
COUNT(*)
----------
1000


Podemos verificar que não existem estatísticas, pois foi um insert normal:

SQL> select table_name, num_rows, last_analyzed from user_tables where table_name='TABELA_TESTE';

TABLE_NAME                     NUM_ROWS   LAST_ANALYZED
------------------------------ ---------- -------------
TABELA_TESTE


Agora utilizando CTAS:

SQL> create table tabela_teste2 as select * from tabela_teste;
Table created.

SQL> select table_name, num_rows, last_analyzed from user_tables where table_name='TABELA_TESTE2';

TABLE_NAME                     NUM_ROWS   LAST_ANALYZED
------------------------------ ---------- -------------
TABELA_TESTE2                  1000       16-APR-14




Utilizando direct path insert:

SQL> create table tabela_teste3
(
  coluna1 number,
  coluna2 number
);
Table created.
 
SQL> insert /*+ APPEND */ into tabela_teste3 select object_id,object_id from user_objects where rownum < 30;
25 rows created.
 
SQL> select table_name, num_rows, last_analyzed from user_tables where table_name='TABELA_TESTE3';
 
TABLE_NAME                           NUM_ROWS         LAST_ANALYZED
------------------------------       ----------        -------------
TABELA_TESTE3                               25         16-APR-14 10:20:00
 
 

Quando a tabela não está vazia, as estatísticas não são atualizadas:

SQL> insert /*+ APPEND */ into tabela_teste3 select object_id,object_id from user_objects where rownum < 30;
25 rows created.

SQL> select table_name, num_rows, last_analyzed from user_tables where table_name='TABELA_TESTE3';

TABLE_NAME                     NUM_ROWS   LAST_ANALYZED
------------------------------ ---------- -------------
TABELA_TESTE3 25               16-APR-14  10:20:00


Verificando o plano de execução:

SQL> explain plan for
create table tabela_teste4 as select * from tabela_teste;

Explained.

SQL> select * from table(dbms_xplan.display(null, null, 'BASIC'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 1183779688

------------------------------------------------------------------
| Id | Operation | Name |
------------------------------------------------------------------
| 0 | CREATE TABLE STATEMENT | |
| 1 | LOAD AS SELECT | TABELA_TESTE2 |
| 2 | OPTIMIZER STATISTICS GATHERING | |
| 3 | TABLE ACCESS FULL | TABELA_TESTE |
------------------------------------------------------------------

10 rows selected.



Obtendo informações sobre a coleta automática de estatísticas:

SQL> select table_name, column_name, num_distinct, notes from user_tab_col_statistics where table_name = ('TABELA_TESTE3');

TABLE_NAME           COLUMN_NAME          NUM_DISTINCT NOTES
-------------------- -------------------- ------------ ------------------------------
TABELA_TESTE3        COLUNA1              25            STATS_ON_LOAD
TABELA_TESTE3        COLUNA2              25            STATS_ON_LOAD


Para restrições na coleta automática, consultar a referência abaixo.


Referências:



Abraço,


Alex Zaballa

sábado, 19 de abril de 2014

12c - Last Successful Login Time in SQL*Plus

No Oracle Database 12c, foi introduzida uma nova funcionalidade no utilitário SQL*Plus, o Last Successful Login Time in SQL*Plus.

SQL*Plus do Oracle Database 12c adicionou uma informação na tela login, agora por default, é mostrada a última data e hora de login do usuário.


[oracle@oracle01]$ sqlplus scott/tiger
 
SQL*Plus: Release 12.1.0.1.0 Production on Thu Mar 27 16:23:55 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Last Successful login time: Wed Mar 26 2014 16:02:23 +01:00
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
 

Essa informação também pode ser obtida na view DBA_USERS:

SQL> select username,last_login
from dba_users
where username = 'SCOTT';

USERNAME        LAST_LOGIN
--------------- -------------------------
SCOTT           27.03.2014 16:23:56




Para inibir isso, basta utilizar a opção nologintime:

[oracle@oracle01 tmp]$ sqlplus -nologintime scott/tiger

SQL*Plus: Release 12.1.0.1.0 Production on Thu Mar 27 16:26:40 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL>



Referências:


Abraço

Alex Zaballa

quarta-feira, 16 de abril de 2014

Sql*Plus no Mac OS

http://ronr.blogspot.com/2013/02/oracle-client-11gr2-11203-for-apple-mac.html

segunda-feira, 7 de abril de 2014

Collaborate 14 - Review

Esta semana, estive participando do evento Collaborate 14  que ocorreu em Las Vegas de 07/04 à 11/04.

As opções para inscrição no evento, eram pelo OAUG, IOUG e Quest. Como não encontrei nenhuma diferença, acabei fazendo minha inscrição pelo OAUG. 
Um dia antes do evento, fiquei sabendo que deveria ter feito pelo IOUG, devido as pre-conferences oferecidas pelo IOUG e somente disponíveis para quem estava inscrito por esse user group. 
Felizmente isso não foi um grande problema, pois consegui alterar para o IOUG no credenciamento e consegui participar do Rac Attack 12c.


Chegada no aeroporto de Las Vegas:



Como o hotel do evento estava lotado, fiquei hospedado no "The Mirage", que fica em frete:


The Venetian (Hotel onde ocorre o evento):


No domingo à noite (06/04), fui a um PUB chamado Public House no Venetian com o pessoal do Rac Attack:



Segunda-Feira

Credenciamento:




No primeiro dia (segunda-feira) participei o Rac Attack 12c:




Oracle ACE Dinner :



Terça-Feira

Na terça-feira, meu dia iniciou com o Tom Kyte, falando sobre o in-memory:


A segunda foi sobre o Oracle Database 12c em ambientes Cloud e Big Data:


A terceira foi sobre Data Guard 12c:


A quarta foi novamente com o Tom Kyte falando sobre 24 novas funcionalidades presentes no 12c:




A quinta foi com o Leighton Nelson, falando sobre 10 features para DBAS no EM12c:


A sexta foi com a DbaKevlar sobre ASH e AWR:


A sétima foi um encontro do  Oracle RAC SIG:



Quarta-Feira

Na quarta-feira, comecei meu dia vendo a apresentação do Gustavo Rene Antunez:


A segunda, foi um Keynote da Oracle:



A terceira foi sobre patchs no Exadata:


A quarta sobre Hadoop, NoSQL e RDBMS:


A quinta foi com o Frits Hoogland:



A sexta foi um Keynote da IBM:



E a sétima sobre SSD:



Quinta-Feira

Na quinta-feira, meu dia começou com Dan Hotka, falando sobre algumas New Features do DB12c:


A segunda foi com Gustavo Rene Antunez, falando sobre Exadata:


A terceira foi uma sessão da OakTable com Kyle Haile sobre Agile Data :



A quarta foi sobre Flex ASM e Flex Cluster:



A quinta foi novamente uma sessão da OakTable, agora com Graham Wood falando sobre Real-World Peformance:



A sexta foi sobre New Features de Tuning no 12c:


Uma passada no estande da Pythian:


Sexta-Feira

Na sexta, meu dia iniciou com o Rene falando sobre o que existe de novo no RMAN 12c:

 

A segunda, foi com o Bobby Curtis falando sobre EM12c e Database 12c:



A terceira foi sobre RAC 12c + Multitenant:



Kay Yu:


E a última foi com o Arup Nanda:



E assim terminou minha participação no Collaborate 14.




Abraço
Alex Zaballa

terça-feira, 1 de abril de 2014

Criando um PDB com os Samples Schemas

http://horia-berca-oracledba.blogspot.com/2013/08/create-pdb-with-sample-schemas-in-db12c.html

sexta-feira, 28 de março de 2014

OraWorld



 OraWorld é uma equipe comprometida com a Oracle através da criação de artigos em Espanhol, Inglês, Português e Russo; da realização de webinars e realização de cursos Oracle On Demand.
Alex Zaballa:

Alex possui mais de 14 anos de experiência com tecnologias Oracle, é DBA sênior em Luanda e trabalha para o Ministério das Finanças de Angola. Iniciou sua carreira como desenvolvedor Oracle, participando do desenvolvimento de um software ERP desde a definição até a implantação. Alex é Oracle ACE e também um membro do seleto grupo de profissionais altamente qualificados em todo o mundo que têm a credencial OCM -Oracle Certified Master. Entre suas especialidades incluem projeto e implementação de alta escalabilidade, alta disponibilidade e ajuste de desempenho.

Twitter: @alexzaballa
blog: http://alexzaballa.blogspot.com/




Deiby Gómez:

Deiby Gómez é um DBA Expert, com experiência em Oracle Exadata Database Machine e soluções de alta disponibilidade. Participa com freqüência em diferentes eventos Oracle na Guatemala, entre eles: OTN LAD Tour, Java Day, First Symposium of Oracle e se faz presente em muitas universidades. É palestrante em conferências e Oracle ACE desde 2013.Deiby é o primeiro da Guatemala a publicar artigos Oracle LAD.

Twitter: @hdeiby
facebook: https://www.facebook.com/HDeiby





Yenugula Venkata Ravikumar:

Yenugula Venkata RaviKumar é um DBA com mais de 15 anos de experiência. É especialista em ambientes de alta disponibilidade em banco de dados (RACData Guard, entre outros), performance e tuning, migrações, backup e recover,Oracle Exadata x2/x3/x4 e especialista em sistemas operacionais como AIXHP-UX e Linux. 

Yenugula tem participado como palestrante em diversos eventos da Oracle na Índia, onde reside atualmente. Obteve seu titulo de Oracle Certified Master(OCM) da Oracle Corporation em 2009 e foi funcionário Oracle vários anos.

Twitter: @yvrk1973






Nassyam Basha:

Nassyam Basha é um administrador de banco de dados, Pós-graduado e Mestrado em Aplicações Informáticas da Universidade de Madras. Começou a programar com dBase e FoxPro e participou em vários projetos com FoxPro e Oracle. Possui conhecimentos das versões  8i/9i/10g/11g/12c do banco de dados Oracle e possui a certificação Oracle 11g Certified Professional. Nassyam  tem  um bom conhecimento em tecnologias Oracle, tais como Data Guard, RMAN, RAC, OEM, Grid Control11.1/12.1, Exadata e performance e tuning, também é Co-autor do Livro Administration Guide Oracle 11gR2 Data Guard publicado pela Packt .

Twitter: @nassyambasha
facebook: https://www.facebook.com/nassyambasha






David Siqueira:

David Siqueira : DBA desde 2001, atuando no mercado de São Paulo, Brasil. Trabalhou em grandes empresas de consultoria sempre com o objetivo de melhorar seus conhecimentos e agregar valor aos ambientes onde atuou como DBA. David possui certificações como 10g e 11g OCP, SQL Expert OCE, OCE RAC 10g, OCE Exadata Essentials e foi eleito Oracle  ACE em dezembro de 2011. Atuou com ambientes de alta disponibilidade Oracle 11g RAC, Exadata X2-2 e Administração de Banco de Dados em Geral. Também possui experiência em sistemas operacionais(Linux, Windows e AIX), Oracle VM Server e Oracle Businnes Intelligence.

Twitter: @drbricardo
facebook: https://www.facebook.com/david.siqueira.98

segunda-feira, 24 de março de 2014

Convert a Certificate and Private Key to an Oracle Wallet

How to Convert a Certificate and Private Key to an Oracle Wallet, using ssl2ossl or openssl, for use with Oracle Application Server 10g (Doc ID 184701.1)


Passos:


openssl pkcs12 -export -in /tmp/zab/www8/www8.crt -inkey /tmp/zab/www8/www8.key -certfile /tmp/zab/www8/t2.pem -out ewallet.p12


 Specfically to FMW 11g, if the Wallet opens but you see a "Certificate: Empty", then you are hitting Bug 10178208 USER CERTIFICATE IS NOT VISIBLE IN OWM WITH OPENSSL CREATED WALLETS


orapki wallet pkcs12_to_jks -wallet /tmp/zab/www8/ewallet.p12 -jksKeyStoreLoc /tmp/zab/www8/ewallet.jks -jksKeyStorepwd Welcome1

orapki wallet create -wallet /tmp/zab/www8/new

orapki wallet jks_to_pkcs12 -wallet /tmp/zab/www8/new -pwd Welcome1 -keystore /tmp/zab/www8/ewallet.jks  -jkspwd Welcome1


Para gerar o arquivo t2.pem, bastar exportar o certificado pelo IE(incluindo toda arvore) e colocar todas as chaves neste arquivo.

sexta-feira, 21 de março de 2014

Beehive - LoginAttempts

beectl list_properties --component _AuthenticationService

beectl modify_property --component _AuthenticationService --name LoginAttempts --value \-1

beectl activate_configuration

How To Extract A Private Key and Certificate From A Wallet in Fusion Middleware 11g (Doc ID 1087516.1)

$MIDDLEWARE_HOME/oracle_common/bin/orapki wallet pkcs12_to_jks -wallet /u01/app/oracle/product/Middleware/asinst_1/config/WebCache/webcache1/keystores/default/cwallet.sso -jksKeyStoreLoc /tmp/zab/ewallet.jks -jksKeyStorepwd Welcome1

$MIDDLEWARE_HOME/oracle_common/bin/orapki wallet create -wallet /tmp/zab


$MIDDLEWARE_HOME/oracle_common/bin/orapki wallet jks_to_pkcs12 -wallet /tmp/zab -pwd Welcome1 -keystore /tmp/zab/ewallet.jks -jkspwd Welcome1


openssl pkcs12 -in /tmp/zab/ewallet.p12 -passin pass:Welcome1 -out /tmp/zab/w.txt -nodes

CLIENT_IDENTIFIER column of V$SESSION is not filled by RWSERVLET

Encontrei um problema após a migração para o Reports versão 11G.
Mesmo com o SSO habilitado, o RWSERVLET não estava colocando o nome do utilizador que estava gerando o relatório na coluna CLIENT_IDENTIFIER da V$SESSION.

Segue a solução disponibilizada pela Oracle:

1. Back up $ORACLE_INSTANCE/config/reports/bin/reports.sh
2. Modify reports.sh by adding the following at the bottom:

REPORTS_ENABLE_DBCLIENTID=YES; export REPORTS_ENABLE_DBCLIENTID

3. Restart reports server/WLS_REPORTS