domingo, 13 de julho de 2014

DEFERRED SEGMENT CREATION

Esta funcionalidade foi introduzida no Oracle 11G R2 e permite que os segmentos para tabelas e seus objetos dependentes (LOBs, índices) não sejam criados até que a primeira linha seja inserida na tabela.

Esta funcionalidade pode ser controlada pelo parâmetro de inicialização DEFERRED_SEGMENT_CREATION, que é definido como TRUE por padrão. Este valor também pode ser alterado somente para a sessão, utilizando o ALTER SESSION.


SQL> show parameter DEFERRED_SEGMENT_CREATION

NAME                                 TYPE                VALUE
------------------------------------ ------------------- -----
deferred_segment_creation            boolean             TRUE

SQL> create table TABELA_TESTE(coluna1 number);
Table created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='TABELA_TESTE';

no rows selected

SQL> insert into TABELA_TESTE values(1);

1 row created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='TABELA_TESTE';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
TABELA_TESTE                     TABLE

1 linha seleccionada.


Podemos especificar isso na criação da tabela, utilizando SEGMENT CREATION DEFERRED ou SEGMENT CREATION IMMEDIATE.

SQL> create table TABELA_TESTE2(coluna1 number) SEGMENT CREATION IMMEDIATE;

Table created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='TABELA_TESTE2';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
TABELA_TESTE2                    TABLE

1 linha seleccionada.

Para apagar os segmentos associados a tabela, foi adicionado a cláusula  DROP ALL STORAGE ao TRUNCATE TABLE (disponível no 11.2.0.2).

SQL> TRUNCATE TABLE tabela_teste DROP ALL STORAGE;

Table truncated.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='TABELA_TESTE';

no rows selected


Abraço,


Alex Zaballa.

quarta-feira, 25 de junho de 2014

KSCOPE14 - Review

Esta semana, estive participando do evento KSCOPE14  que ocorreu em Seattle de 22/06 à 26/06.

Os 2 hotéis indicados pela organização do evento estavam lotados, então fiquei em outro próximo, o Hyatt At Olive 8:



Local do Evento - Washington State Convention Center:






Registro:



Monitores com os Tweets sobre o evento:




Domingo:

Como não poderia ser diferente, escolhi participar da trilha sobre DATABASE


Oracle Database Cloud Service:



RESTful Access to Your Data:


Best PL/SQL Features You Never Heard Of (or certainly don’t use):


Storing and Querying JSON Data in Oracle Database 12c:


Oracle SQL Developer and Oracle Database 12c:


Applications HA Solutions for Planned and Unplanned Database Outages:


Fiquei surpreso com os itens da mochila, com certeza foram os mais criativos que eu já vi:



Segunda:

General Session and KeyNote:


Encontrei o Yury Velikanov logo na saída do keynote:


Durante o keynote, anunciaram a data e o local do evento do próximo ano:


A primeira do dia foi com o Carlos Sierra, falando sobre SPM:


Após tivemos o almoço com os ACEs:



Durante o evento era possível assistir aos jogos da copa:


A segunda do dia foi com o Alex Gorbachev da Pythian, sobre Hadoop:


A terceira foi com a Michelle Malcher, presidente do IOUG sobre Segurança no 12c:


A última do dia foi com o Yury Velikanov sobre AWR:


Terça:

A primeira do dia foi sobre New Features do Banco 12c:


A hora foi almoço foi um "Lunch and Learn" com Oracle ACEs:



Logo após o almoço foi sobre índices no Exadata com o Richard Foote :


A próxima foi sobre NoSQL e Big Data:


E a última do dia  foi com o Jeff Smith falando sobre as dicas e truques do SQL Developer:


Na terça ocorreu o ORACLE ACE Dinner ( obrigado a Vikki Lira pelo convite):




Quarta:

A primeira do dia foi com o Carlos Sierra, falando sobre Adaptive Cursor Sharing:


A segunda foi com a Kellyn Pot'Vin falando sobre EM12c:


A terceira foi com o Dominic Delmolino falando sobre Database Refactoring:


A quarta foi com a Heli Helskyaho falando sobre o SQL Developer Data Modeler:


A quinta foi com o Jeremiah Wilton falando sobre AWS:


E a última foi com o Galo Balda falando sobre SQL Pattern Matching:



domingo, 8 de junho de 2014

12c – USE_SID_AS_SERVICE_listener_name

Muitas aplicações antigas estão configuradas para utilizar o SID para conectar no banco de dados. No Oracle Database 12c, na arquitetura multitenant, devemos conectar em um PDB utilizando o SERVICE_NAME. Então o que acontece caso venhamos a plugar um non-cdb em um CDB e a aplicação tente conectar utilizando o SID?

A resposta é simples, irá ocorrer o seguinte erro:

ERROR: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
Para resolver esse problema, foi introduzido um novo parâmetro que pode ser configurado no listener.ora, o USE_SID_AS_SERVICE_listener=on. Isso permitirá que o SID usado no descritor de conexão seja interpretado como um nome de serviço quando um usuário tentar uma conexão com o banco de dados.


Lista de PDBs:

SQL> select con_id,name,open_mode from v$pdbs;

CON_ID     NAME                           OPEN_MODE
---------- ------------------------------ ----------
2          PDB$SEED 
                      READ ONLY
         PDB1                           READ WRITE
         PDB2                           MOUNTED

Como estão configurados os arquivos tnsnames.ora  dos clientes que acessam a aplicação:

APP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
(CONNECT_DATA =
(SID = pdb1)
)
)


Ao tentar conectar no banco de dados utilizando esta string de conexão:

[oracle@oracle01 admin]$ sqlplus scott/tiger@app

SQL*Plus: Release 12.1.0.1.0 Production on Mon Jun 2 09:47:10 2014

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

ERROR:
ORA-12505: TNS:listener does not currently know of SID given in connect
descriptor

Conteúdo atual do listener.ora:

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
)


Agora adicionando o novo parâmetro:

USE_SID_AS_SERVICE_LISTENER=on
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
)


[oracle@oracle01 admin]$ lsnrctl reload

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 02-JUN-2014 09:54:24

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully

Com o novo parâmetro ativado, é possível conectar na PDB utilizando o SID:

[oracle@oracle01 admin]$ sqlplus scott/tiger@app

SQL*Plus: Release 12.1.0.1.0 Production on Mon Jun 2 09:57:08 2014

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

Last Successful login time: Mon Jun 02 2014 09:56:58 +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

SQL> show con_name

CON_NAME
------------------------------
PDB1



Referências:

 Oracle Net 12c: How to enable Clients using SID to connect to PDB? (Doc ID 1644355.1)



Abraço,


Alex Zaballa.

quarta-feira, 4 de junho de 2014

GUOB TECH DAY - 2014



Apresentação

Com grande sucesso, o GUOB prepara mais uma edição de seu evento nacional no dia 02/08/2014 em São Paulo no Hotel Blue Tree Morumbi, o qual proporcionará um grande encontro de usuários de tecnologia Oracle do Brasil com a participação de palestrantes internacionais e nacionais.

Estarão presentes palestrantes como Alex Zaballa, Roy Swonger, Ronald Vargas, Francisco Alvarez, Gustavo Gonzalez, David Peake, Deiby Gomez, Gustavo Rene Antunez, Eduardo Guedes, Wagner Bianchi e Rodrigo Mufalani.

Como resultado esperado contaremos com a qualidade das palestras, as quais garantirão o investimento dos participantes em dedicar um dia para estar presente em nosso evento. Além do netwoking proporcionado aos associados do GUOB e aos profissionais usuários de tecnologia Oracle.


Participe da 5o. edição do GUOB TECH DAY 2014 / OTN TOUR LAD. Faça sua inscrição ainda hoje.


GUOB - Grupo de Usuários de Tecnologia Oracle do Brasil

segunda-feira, 2 de junho de 2014

12c – ASM – New asmcmd commands

No Oracle Database 12c, foram introduzidos novos comandos para o utilitário asmcmd.


Dentre eles, podemos destacar:


showclusterstate: Exibe o estado atual do cluster. Os possíveis valores retornados são normalin-upgrade, ou in-rollingpatch.


ASMCMD> showclusterstate
Normal

showclustermode: Exibe em que modo está o cluster do Oracle ASM. Os valores de retorno possíveis são ASM cluster : Flex mode enabled ou ASM cluster : Flex mode disabled.


ASMCMD> showclustermode
ASM cluster : Flex mode enabled

showversion: Exibe a versão do software do Oracle Cluster ASM.


ASMCMD> showversion
ASM version : 12.1.0.1.0

showpatches: Lista dos patches aplicados no Oracle Grid Infrastructure Home.


ASMCMD> showpatches
---------------
List of Patches
===============


No Oracle Database 12c, podemos armazenar o arquivo de senhas do ASM e do banco de dados dentro do ASM. Isso é útil para bancos de dados em RAC, pois não precisamos manter os arquivos em sincronia entre os servidores.

Comandos para o Gerenciamento do arquivo de senhas:

  • pwcopy: Copia um arquivo de senhas para o local especificado.
  • pwcreate: Cria um arquivo de senhas no local especificado.
  • pwdelete: Exclui um arquivo de senhas do local especificado.
  • pwget: Retorna a localização do arquivo de senhas.
  • pwmove: Troca a localização do arquivo de senhas.
  • pwset: Define o local do arquivo de senhas.
  • lspwusr: Lista os usuários de um arquivo de senhas do Oracle ASM.
  • orapwusr: Adiciona, remove, ou altera uma senha de usuário do Oracle ASM.

Estes comandos podem gerenciar o arquivo de senhas do ASM ou o arquivo de senhas do banco de dados.

Para diferenciar, é necessário utilizar um dos seguintes parâmetros:

  • --asm                   
  • --dbuniquename 


ASMCMD [+] > pwcopy --asm +DATA/orapwasm +FRA/orapwasm_bak
copying +DATA/orapwasm -> +FRA/orapwasm_bak




Mais detalhes podem ser vistos no My Oracle Support:

 Test Case: 12C ASMCMD New feature (Doc ID 1589249.1)




Abraço,


Alex Zaballa.

terça-feira, 27 de maio de 2014

12c – RMAN SQL Interface Improvements

No Oracle Database 12c, o utilitário RMAN sofreu diversas melhorias. E uma dessas melhorias é que agora você pode executar a maioria dos comandos SQL diretamente no RMAN, sem precisar especificar a palavra-chave SQL + comando.


Como era antes do 12c:


[oracle@mesene2 ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Tue May 20 12:42:47 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=4216109927)

RMAN> SQL 'create table tabela_teste (coluna1 number)';
using target database control file instead of recovery catalog
sql statement: create table tabela_teste (coluna1 number)

RMAN> SQL 'insert into tabela_teste values (1)';
sql statement: insert into tabela_teste values (1)

RMAN> SQL 'select * from tabela_teste';
sql statement: select * from tabela_teste



No 12c:

[oracle@oracle01 ~]$ rman target /


Recovery Manager: Release 12.1.0.1.0 - Production on Tue May 20 12:34:13 2014

Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORCL (DBID=1356220819)


RMAN> create table tabela_teste (coluna1 number);

using target database control file instead of recovery catalog

Statement processed



RMAN> insert into tabela_teste values (1);

Statement processed



O resultado do SELECT agora é mostrado na tela:


RMAN> select * from tabela_teste;


COLUNA1

----------

1



E também podemos utilizar o comando DESCRIBE:

RMAN> desc tabela_teste;


Name                                         Null? Type

----------------------------------------- -------- ----------------------------

COLUNA1                                            NUMBER





Abraço,


Alex Zaballa.