segunda-feira, 15 de fevereiro de 2016

RMOUG Training Days 2016

Participei do evento RMOUG Training Days que ocorreu em Denver de 9/02 à 11/02.



Registro:




Terça-Feira

Inside Oracle Exalytics:


Being There:


Speakers Reception:


Enkitec Dinner:



Quarta-Feira

Oracle Database Security: Top 10 Things You Could and Should be Doing Differently:


KeyNote:


Chase the optimizer every step of the way:


eDB360 101: How Do I Get an Understanding of My Database Through SQL*Plus? :


Command Line Interfaces Aren't Dead!:


Enkitec crew:


Oracle ACE Dinner:


Quinta-Feira

Same Plan, Different Performance:



Sharding in Oracle Database 12c Release 2:


Where's Waldo? Using a Brute-Force Approach to Find an Execution Plan the CBO Hides:


MySQL: The Least an Oracle DBA Needs to Know:


Carlos Sierra: Sizing 101: Which Engineered System is right for your needs?


Minha sessão sobre Oracle Database 12c:


O meu agradecimento especial à Enkitec pelo apoio.

Vejo vocês em 2017 :)

quinta-feira, 4 de fevereiro de 2016

Oracle Magazine - January/February 2016

Quem diria que algum dia eu iria aparecer na Oracle Magazine!
Se alguém me contasse isso há 10 anos, eu não acreditaria.

Para quem não conhece, a Oracle Magazine é uma das maiores revistas na indústria de TI.


“...tudo posso naquele que me fortalece” (Filipenses 4.13)

Believe in your dreams,
Work hard,
Keep god in your heart,
Travel the road you have chosen and don't look back with regret...


domingo, 17 de janeiro de 2016

ORA-29548: Java system class reported: could not identify release specified in classes.bin

Hoje ao tentar plugar um PDB 12.1.0.1 em um banco 12.1.0.2, me deparei com o erro: "ORA-29548: Java system class reported: could not identify release specified in classes.bin".

Para resolver o problema, fiz o upgrade da jdk 1.6 para 1.7:

[oracle@oracle01 tmp]$ /u02/app/oracle/product/12.1.0/dbhome_2/perl/bin/perl  $ORACLE_HOME/javavm/install/update_javavm_binaries.pl 7
[oracle@oracle01 tmp]$ cd $ORACLE_HOME/rdbms/lib
[oracle@oracle01 lib]$ make -f ins_rdbms.mk ioracle
chmod 755 /u02/app/oracle/product/12.1.0/dbhome_2/bin

 - Linking Oracle
rm -f /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/oracle
/u02/app/oracle/product/12.1.0/dbhome_2/bin/orald  -o /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/oracle -m64 -z noexecstack -Wl,--disable-new-dtags -L/u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/ -L/u02/app/oracle/product/12.1.0/dbhome_2/lib/ -L/u02/app/oracle/product/12.1.0/dbhome_2/lib/stubs/   -Wl,-E /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/opimai.o /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/ssoraed.o /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv12 -Wl,--no-whole-archive /u02/app/oracle/product/12.1.0/dbhome_2/lib/nautab.o /u02/app/oracle/product/12.1.0/dbhome_2/lib/naeet.o /u02/app/oracle/product/12.1.0/dbhome_2/lib/naect.o /u02/app/oracle/product/12.1.0/dbhome_2/lib/naedhs.o /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/config.o  -lserver12 -lodm12 -lcell12 -lnnet12 -lskgxp12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12  -lvsn12 -lcommon12 -lgeneric12 -lknlopt `if /usr/bin/ar tv /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap12" ; fi` -lskjcx12 -lslax12 -lpls12  -lrt -lplp12 -lserver12 -lclient12  -lvsn12 -lcommon12 -lgeneric12 `if [ -f /u02/app/oracle/product/12.1.0/dbhome_2/lib/libavserver12.a ] ; then echo "-lavserver12" ; else echo "-lavstub12"; fi` `if [ -f /u02/app/oracle/product/12.1.0/dbhome_2/lib/libavclient12.a ] ; then echo "-lavclient12" ; fi` -lknlopt -lslax12 -lpls12  -lrt -lplp12 -ljavavm12 -lserver12  -lwwg  `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnzst12 -lzt12 -lztkg12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lztkg12 `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnzst12 -lzt12 -lztkg12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `if /usr/bin/ar tv /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo12 -lserver12"; fi` -L/u02/app/oracle/product/12.1.0/dbhome_2/ctx/lib/ -lctxc12 -lctx12 -lzx12 -lgx12 -lctx12 -lzx12 -lgx12 -lordimt12 -lclsra12 -ldbcfg12 -lhasgen12 -lskgxn2 -lnnzst12 -lzt12 -lxml12 -locr12 -locrb12 -locrutl12 -lhasgen12 -lskgxn2 -lnnzst12 -lzt12 -lxml12  -lgeneric12 -loraz -llzopro -lorabz2 -lipp_z -lipp_bz2 -lippdcemerged -lippsemerged -lippdcmerged  -lippsmerged -lippcore  -lippcpemerged -lippcpmerged  -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lsnls12 -lunls12  -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lasmclnt12 -lcommon12 -lcore12  -laio -lons    `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/sysliblist` -Wl,-rpath,/u02/app/oracle/product/12.1.0/dbhome_2/lib -lm    `cat /u02/app/oracle/product/12.1.0/dbhome_2/lib/sysliblist` -ldl -lm   -L/u02/app/oracle/product/12.1.0/dbhome_2/lib
test ! -f /u02/app/oracle/product/12.1.0/dbhome_2/bin/oracle ||\
  mv -f /u02/app/oracle/product/12.1.0/dbhome_2/bin/oracle /u02/app/oracle/product/12.1.0/dbhome_2/bin/oracleO
mv /u02/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/oracle /u02/app/oracle/product/12.1.0/dbhome_2/bin/oracle
chmod 6751 /u02/app/oracle/product/12.1.0/dbhome_2/bin/oracle
[oracle@oracle01 lib]$ cd $ORACLE_HOME
[oracle@oracle01 dbhome_2]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jan 17 19:57:54 2016

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size    2924928 bytes
Variable Size  520097408 bytes
Database Buffers 1073741824 bytes
Redo Buffers   13848576 bytes
Database mounted.
Database opened.
SQL> @?/javavm/install/update_javavm_db.sql
SQL> SET FEEDBACK 1
SQL> SET NUMWIDTH 10
SQL> SET LINESIZE 80
SQL> SET TRIMSPOOL ON
SQL> SET TAB OFF
SQL> SET PAGESIZE 100
SQL>
SQL> alter session set "_ORACLE_SCRIPT"=true;

Session altered.

SQL>
SQL> -- If Java is installed, do CJS.
SQL>
SQL> -- If CJS can deal with the SROs inconsistent with the new JDK,
SQL> -- the drop_sros() call here can be removed.
SQL> call initjvmaux.drop_sros();

Call completed.

SQL>
SQL> create or replace java system;
  2  /

Java created.

SQL>
SQL> update dependency$
  2    set p_timestamp=(select stime from obj$ where obj#=p_obj#)
  3    where (select stime from obj$ where obj#=p_obj#)!=p_timestamp and
  4          (select type# from obj$ where obj#=p_obj#)=29  and
  5          (select owner# from obj$ where obj#=p_obj#)=0;

0 rows updated.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> alter session set "_ORACLE_SCRIPT"=false;

Session altered.

SQL>
SQL> select dbms_java.get_jdk_version() from dual;

DBMS_JAVA.GET_JDK_VERSION()
--------------------------------------------------------------------------------
1.7.0_51

1 row selected.


quinta-feira, 31 de dezembro de 2015

O meu ano de 2015 na comunidade Oracle

Olá pessoal,

Segue um resumo do meu ano de 2015 na comunidade Oracle.

  • Eventos em que participei:
                Fevereiro: RMOUG Training Days - 2015

                Abril: Collaborate 15

                Junho: KSCOPE 15

                Agosto: OTN TOUR LA 2015 - Uruguai, Argentina, Brasil e Chile

                Outubro:  Oracle Ace Briefing 2015
                            Oracle Open World 2015

                Novembro: GUORS - 2015
                              ORAMEX- TECHDAY - 2015


  •  6 Artigos Publicados no GPO
01/02/2015

24/05/2015

31/05/2015

07/06/2015

11/10/2015
11/12/2015 
Foreign Keys não Indexadas


  • 14 artigos publicados no OTN e em 2 idiomas:

Criando PDBs no Oracle Database 12c - Parte 1 
Criando PDBs no Oracle Database 12c utilizando o DBCA - Parte 2
Criando PDBs no Oracle Database 12c utilizando o SQL Developer - Parte 3
Criando PDBs no Oracle Database 12c utilizando o EM Express - Parte 4
Criando PDBs no Oracle Database 12c utilizando o Enterprise Manager Total Cloud Control 12c - Parte 5
Oracle Database 12.1.0.2: Introdução ao Full Database Caching
Information Lifecycle Management (ILM) e Automatic Data Optimization (ADO)
Oracle Exadata Database Machine: I/O Resource Manager (IORM)
Criação de um relatório simples utilizando o Information Publisher Report
Migração para a versão 12c do Banco de Dados sem Downtime, utilizando Oracle Golden GateOracle
Database 12c: Uma introdução aos conceitos de backup, recuperação e de recuperação a um ponto no tempo (PITR) de PDBs
Oracle Exadata Database Machine: Exadata Hybrid Columnar Compression (EHCC)
ADRCI - Automatic Diagnostic Repository Command Interpreter 
Consejos y trucos: Crear pequeñas copias de una base de datos de producción



  •  Vídeos:









Espero que em 2016 consiga manter esse mesmo empenho e ajudar a comunidade Oracle o máximo possível!

Gostaria de agradecer ao Oracle ACE Program e ao Oracle OTN pelas oportunidades.

  • Evento já programado para 2016:
               RMOUG Training Days

Um bom 2016.
Alex Zaballa

Foreign Keys não Indexadas

Por padrão, o Oracle não cria índices nas colunas de Foreign Keys e isto pode acarretar em problemas de desempenho e até mesmo deadlocks.

Um exemplo disso, é a atualização de registros na tabela pai, onde o Oracle precisa verificar os registros filhos. Caso não exista um índice, é necessário fazer um full table scan e algumas vezes até mesmo um lock na tabela. Não é muito comum atualizar uma Primary Key, mas isso também se aplica no caso de realizar um delete no registro pai.

Os índices nas Foreing Keys também ajudam as queries no relacionamento pai/filho.

O sintoma mais comum deste problema, é encontrar o wait event: “enq: TM - contention”.

Então deve-se criar índices para todas as Foreign Keys?

A resposta é não, como o Tom Kyte explica no livro Expert Oracle Database Architecture, existem casos em que não é necessário:



Abaixo, um script para encontrar as Foreign Keys não Indexadas:

-- based on "Oracle Database Transactions and Locking Revealed" book by Thomas Kyte
WITH
ref_int_constraints AS (
SELECT /*+ MATERIALIZE NO_MERGE */
col.owner,
col.table_name,
col.constraint_name,
con.status,
con.r_owner,
con.r_constraint_name,
COUNT(*) col_cnt,
MAX(CASE col.position WHEN 01 THEN col.column_name END) col_01,
MAX(CASE col.position WHEN 02 THEN col.column_name END) col_02,
MAX(CASE col.position WHEN 03 THEN col.column_name END) col_03,
MAX(CASE col.position WHEN 04 THEN col.column_name END) col_04,
MAX(CASE col.position WHEN 05 THEN col.column_name END) col_05,
MAX(CASE col.position WHEN 06 THEN col.column_name END) col_06,
MAX(CASE col.position WHEN 07 THEN col.column_name END) col_07,
MAX(CASE col.position WHEN 08 THEN col.column_name END) col_08,
MAX(CASE col.position WHEN 09 THEN col.column_name END) col_09,
MAX(CASE col.position WHEN 10 THEN col.column_name END) col_10,
MAX(CASE col.position WHEN 11 THEN col.column_name END) col_11,
MAX(CASE col.position WHEN 12 THEN col.column_name END) col_12,
MAX(CASE col.position WHEN 13 THEN col.column_name END) col_13,
MAX(CASE col.position WHEN 14 THEN col.column_name END) col_14,
MAX(CASE col.position WHEN 15 THEN col.column_name END) col_15,
MAX(CASE col.position WHEN 16 THEN col.column_name END) col_16,
par.owner parent_owner,
par.table_name parent_table_name,
par.constraint_name parent_constraint_name
FROM dba_constraints con,
dba_cons_columns col,
dba_constraints par
WHERE con.constraint_type = 'R'
AND con.owner NOT IN ('ANONYMOUS','APEX_030200','APEX_040000','APEX_SSO','APPQOSSYS','CTXSYS','DBSNMP','DIP','EXFSYS','FLOWS_FILES','MDSYS','OLAPSYS','ORACLE_OCM','ORDDATA','ORDPLUGINS','ORDSYS','OUTLN','OWBSYS')
AND con.owner NOT IN ('SI_INFORMTN_SCHEMA','SQLTXADMIN','SQLTXPLAIN','SYS','SYSMAN','SYSTEM','TRCANLZR','WMSYS','XDB','XS$NULL','PERFSTAT','STDBYPERF')
AND col.owner = con.owner
AND col.constraint_name = con.constraint_name
AND col.table_name = con.table_name
AND par.owner(+) = con.r_owner
AND par.constraint_name(+) = con.r_constraint_name
GROUP BY
col.owner,
col.constraint_name,
col.table_name,
con.status,
con.r_owner,
con.r_constraint_name,
par.owner,
par.constraint_name,
par.table_name
),
ref_int_indexes AS (
SELECT /*+ MATERIALIZE NO_MERGE */
r.owner,
r.constraint_name,
c.table_owner,
c.table_name,
c.index_owner,
c.index_name,
r.col_cnt
FROM ref_int_constraints r,
dba_ind_columns c,
dba_indexes i
WHERE c.table_owner = r.owner
AND c.table_name = r.table_name
AND c.column_position <= r.col_cnt
AND c.column_name IN (r.col_01, r.col_02, r.col_03, r.col_04, r.col_05, r.col_06, r.col_07, r.col_08,
r.col_09, r.col_10, r.col_11, r.col_12, r.col_13, r.col_14, r.col_15, r.col_16)
AND i.owner = c.index_owner
AND i.index_name = c.index_name
AND i.table_owner = c.table_owner
AND i.table_name = c.table_name
AND i.index_type != 'BITMAP'
GROUP BY
r.owner,
r.constraint_name,
c.table_owner,
c.table_name,
c.index_owner,
c.index_name,
r.col_cnt
HAVING COUNT(*) = r.col_cnt
)
SELECT /*+ NO_MERGE */
*
FROM ref_int_constraints c
WHERE NOT EXISTS (
SELECT NULL
FROM ref_int_indexes i
WHERE i.owner = c.owner
AND i.constraint_name = c.constraint_name
)
ORDER BY
1, 2, 3;

Este script foi retirado do EDB360.


Referências:




Abraço,

Alex Zaballa.

sexta-feira, 27 de novembro de 2015

Erro ao instalar Oracle Database 12c no Oracle Linux 6.5 com VirtualBox 5.10 - /usr/bin/ld: cannot find -ljavavm12

Ambiente:

 VirtualBox 5.0.10
 Oracle Linux 6.5 - 64 bits
 Oracle Database 12.1.0.2 - 64bits

Erro ao compilar os binários:

Error in invoking target 'irman ioracle' of makefile '/u01/app/grid/product/12.1.0/grid/rdbms/lib/ins_rdbms.mk'.

Log:

 INFO: /usr/bin/ld: cannot find -ljavavm12
 collect2: ld returned 1 exit status


Solução:
 cp /u01/app/12.1.0/grid/javavm/jdk/jdk7/lib/libjavavm12.a /u01/app/12.1.0/grid/lib


Erro ao rodar o root.sh:

/u01/app/12.1.0/grid/crs/config/rootconfig.sh: line 131:  7866 Segmentation fault      (core dumped) $ROOTSCRIPT $ROOTSCRIPT_ARGS
The command '/u01/app/12.1.0/grid/perl/bin/perl -I/u01/app/12.1.0/grid/perl/lib -I/u01/app/12.1.0/grid/crs/install /u01/app/12.1.0/grid/crs/install/roothas.pl ' execution failed

Solução:

 Faça uma cópia do diretório PERL no $GRID_HOME
  cd /u01/app/12.1.0/grid
  cp perl/ perl.old -R

 cd /tmp
 curl -O http://www.cpan.org/src/5.0/perl-5.14.4.tar.gz
 tar -xvzf perl-5.14.4.tar.gz
 cd perl-5.14.4
 export ORACLE_HOME=/u01/app/12.1.0/grid
 ./Configure -des -Dprefix=$ORACLE_HOME/perl -Doptimize=-O3 -Dusethreads -Duseithreads -Duserelocatableinc && make clean && make && make install
 cd /u01/app/12.1.0/grid/perl
 rm -rf lib/ man/
 cp -r ../perl.old/lib/ .
 cp -r ../perl.old/man/ .


Abraço
Alex Zaballa




sábado, 21 de novembro de 2015

ORAMEX Tech Day Guadalajara 2015 - Review

No dia 20/11 tive o prazer de participar do evento ORAMEX Tech Day Guadalajara 2015

Agenda do evento:



Local do Evento - Oracle Mexico Development Center:




Abertura com Plinio Arbizu e Rolando Carrasco:


Ricardo Gonzalez - Oracle RAC Operational Best Practices:



Minha primeira sessão - Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Developers and DBAs:



Arturo Vireros - Microservices and APIs:



Minha segunda sessão - DBA Commands and Concepts That Every Developer Should Know:





Ricardo Gonzalez - Introdução ao Oracle Cloud:



Encerramento:


Gostaria de agradecer ao pessoal do ORAMEX pelo convite e ao ORACLE ACE PROGRAM por todo apoio.

Também gostaria de agradecer ao Ricardo Gonzalez pelo passeio.


Abs
Alex Zaballa




domingo, 15 de novembro de 2015

GUORS 2015 - Review

No dia 12/11 tive o prazer de participar do evento do Grupo de Usuários Oracle do Rio Grande do Sul (GUORS). 

Durante muitos anos participei deste grupo, que agora está retomando a sua agenda de eventos.


Abertura do evento foi feita pelo Fábio Miguel Blasak da Fonseca,  que é um dos coordenadores do GUORS:



Primeira palestra do dia: Oracle 12c New features - Alex Zaballa - Accenture Enkitec Group




Segunda Palestra: SQL Tuning e Melhores Práticas – Gustavo Braga – DELL





Terceira palestra: Oracle Maximum Availability Architecture – Carlos Pimentel – DELL




Quarta e última palestra do dia: Oracle Data Redaction - Alex Zaballa - Accenture Enkitec Group







Encerramento:

Fábio Miguel Blasak da Fonseca
Alex Zaballa
Anderson Haertel Rodrigues
Carlos Pimentel 



Obrigado ao pessoal do GUORS pelo convite e fico à disposição para ajudar o grupo no que for necessário.


Abs
Alex Zaballa

segunda-feira, 2 de novembro de 2015

Oracle Open World 2015 - Review

Participei do evento Oracle Open World 2015 pela sexta vez consecutiva. O evento ocorre em San Francisco e este ano foi de 25 à 29 de Outubro.
Neste ano, tive o prazer de se palestrante em 3 sessões e mais um painel de discussões sobre os grupos de usuários da América Latina.



Na minha primeira sessao sobre "Oracle Database 12c - Data Redaction", fiquei surpreso com o número de participantes, por se tratar da primeira sessão do evento às 8 horas da manhã. Foram mais de 100 pessoas.




Oracle Database 12c - Data Redaction

Minha segunda sessão, apresentei em conjunto com o Deiby Gómez, Oracle Ace Director da Guatemala. Nesta sessão, falamos sobre as New Features do Oracle Database 12c - 12.1.0.2. Tivemos mais de 150 participantes.



Oracle Database 12.1.0.2 New Features


A minha terceira sessão, foi em conjunto com outros 15 Oracle Ace Directors, onde cada um teve 7 minutos para falar sobre uma funcionalidade do Oracle Database 12c. Nesta sessão, tivemos mais de 300 participantes.



Oracle Data Redaction - EOUC


Também participei de um painel sobre os grupos de usuários na América Latina.




Foto oficial com os Oracle Aces que participaram do evento:



Abertura oficial do evento no Domingo:



Oracle ACE Dinner.



A Accenture Ekitec Group esteve presente na área de expositores.



No evento é possível conseguir alguns adevisos legais para o Laptop.



Para quem é Oracle Partner, existe a possibilidade de fazer uma prova de certificação sem custo durante o evento.



Oracle Appreciation Event - Shows que ocorrem na quarta-feira à noite.



Algumas sessões interessantes que participei:



  General Session: Next-Generation Data Management Architecture [GEN6765]



  Upgrade and Migrate to Oracle Database 12c: Live and Uncensored!



  Oracle Exadata: What’s New and What’s Coming [CON6788]


  Oracle Real Application Clusters Best Practices [CON8780]


  Oracle RMAN in Oracle Database 12c: Best Practices [CON6786]


  Real-Time SQL Monitoring in Oracle Database 12c [CON7871]



  Private Cloud Appliance and Oracle Exadata for High-Volume Financial Services Systems [CON5175]



  SQL Tuning Without Trying [CON3632]



  Jantar na quinta-feira após o evento.



Gostaria de agradecer ao ORACLE ACE PROGRAM pela oportunidade em participar desse evento e por todo cuidado que tiveram conosco.



Até 2016 :)