Novidades para desenvolvedores no Oracle 11g - Revista SQL Magazine 100 - Parte1
Este artigo demonstra de forma resumida as principais novidades das linguagens SQL e PL/SQL que surgiram na versão 11g do banco de dados voltadas principalmente para desenvolvedores, administradores ou operadores.
Novidades para desenvolvedores no Oracle 11g - Parte 2
Este artigo demonstra de forma resumida as principais novidades das linguagens SQL e PL/SQL que surgiram na versão 11g do banco de dados voltadas principalmente para desenvolvedores, administradores ou operadores de dados que necessitam utilizar de forma eficiente os novos recursos do Oracle.
Em que situação o tema é útil
Conhecer as novidades introduzidas na versão 11g do principal banco de dados do mercado torna-se um diferencial a profissionais que desejam destaque e oportunidades no mercado de trabalho, além de uma reciclagem na preparação para provas de certificação na nova plataforma.
Resumo DevMan
O artigo destaca as novidades da linguagem SQL do Oracle 11g, a saber: facilidades do SQL*Plus, possibilidade de alterar um database link, versionar objetos do banco de dados, nova opção no comando audit, novas funções listagg() e nth_value(), cache de comandos SQL, extensões do comando select que facilitam o dia-a-dia, tabelas read only, índices invisíveis, colunas virtuais e muito mais. Já na linguagem PL/SQL, as novidades ficam por conta dos novos tipos de dados, novas packages, triggers compostas, facilidades na linguagem, ordenar a execução de triggers e a evolução do compilador.
Desde seu lançamento comercial em 1979, a cada nova versão do banco de dados Oracle, comunidades de DBAs e desenvolvedores do mundo todo ficam antenados para conhecer os novos recursos que facilitam as tarefas de planejar e manter aplicações em ambientes complexos com necessidades crescentes de performance, escala e segurança.
A primeira versão do Oracle 11g foi lançada em 2007 e atualmente está em sua release 2, comercializada nas edições Enterprise, Standard e Standard Edition One. Além das versões pagas, a Oracle possui também uma edição gratuita, conhecida como Oracle Express Edition, que se limita a utilizar 1 CPU, 1GB de memória RAM e tamanho máximo do banco de dados de 4GB.
Todas estas versões podem ser baixadas gratuitamente através do site download.oracle.com para a finalidade de desenvolvimento e teste de aplicações, conforme termos descritos na Oracle Technology Network Developer Licence Terms, cujo conteúdo pode ser acessado através do endereço listado na seção Links.
Neste artigo, vamos analisar as principais novidades da linguagem SQL e PL/SQL introduzidas nas versões 11g e 11gR2 do banco de dados Oracle, voltadas principalmente para desenvolvedores e operadores que necessitam dominar os novos recursos visando alcançar soluções eficientes, flexíveis e seguras.
Novidades na SQL
Antes de iniciarmos com as facilidades da linguagem SQL introduzidas na versão 11g, vale lembrar que agora a ferramenta SQL*Plus apenas será distribuída em uma versão de linha de comando. Tanto o iSQL*Plus quanto o SQL*Plus para Windows foram descontinuados a partir da versão 11g. O substituto, denominado Oracle SQL Developer, pode ser encontrado nas instalações do Oracle 11g, bem como está disponível para download no site da Oracle.
SQL*Plus
Mesmo com outra ferramenta de interação com o banco de dados em destaque na versão 11, a Oracle incluiu na ferramenta SQL*Plus os seguintes comandos:
• SET EXITCOMMIT: que permite desativar o comportamento padrão do commit ao sair da ferramenta;
• SET ESCCHAR: utilizado para definir um caractere especial (@, ?, &, %) a ser utilizado como parte do nome do arquivo ao executar arquivos de script ou gravar resultados via SPOOL;
• SET ERRORLOGGING: grava os erros retornados por comandos SQL, PL/SQL ou SQL*Plus em uma tabela chamada SPERRORLOG, que é criada automaticamente no schema corrente.
Veremos a seguir alguns comandos SQL da versão 11g que trouxeram novos recursos ou mesmo facilitaram algumas rotinas no dia-a-dia.
Alter Database Link
Agora podemos alterar a senha de autenticação de um database link sem a necessidade de recriá-lo, como ocorria nas versões anteriores. A partir desta versão, podemos utilizar o comando alter database link informando as novas credenciais conforme o exemplo a seguir:
SQL> ALTER DATABASE LINK bd11g CONNECT TO usuario IDENTIFIED BY novasenha;
Create Edition
Objetos PL/SQL, views e synonyms agora podem ser versionados no banco de dados Oracle 11g através do recurso conhecido como Edition-Based Redefinition. Dessa forma podemos atualizar objetos de uma aplicação sem a necessidade de torná-la indisponível, alterando a estrutura de componentes como procedures, functions, packages ou views de um schema em uma área isolada conhecida como Edition, permitindo a realização de testes antes de tornar as modificações visíveis a todos os usuários do banco de dados.
Uma Edition corresponde a uma área rotulada que permite a criação ou modificação de objetos de um schema com visibilidade limitada a este espaço de trabalho. Além disso, é possível alternar entre as Editions existentes em um banco de dados Oracle que, por padrão, possui habilitado a Edition ORA$BASE. Na Listagem 1 veremos o uso deste recurso criando diferentes versões de uma mesma view em um mesmo schema do banco de dados.
Listagem 1. Exemplo do uso de Edition Based Redefinition.
SQL> ALTER USER sqlmag ENABLE EDITIONS;
Usuário alterado.
SQL> CONNECT sqlmag/******
Conectado.
SQL> SELECT SYS_CONTEXT('userenv', 'current_edition_name') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
-----------------------------------------------------------------------------
ORA$BASE
SQL> CREATE EDITION teste_v1;
Edição criada.
SQL> CREATE EDITIONING VIEW v_cli AS SELECT codigo, nome FROM clientes;
View criada.
SQL> DESC v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME VARCHAR2(50)
SQL> ALTER SESSION SET EDITION=teste_v1;
Sessão alterada.
SQL> SELECT SYS_CONTEXT('userenv', 'current_edition_name') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
-----------------------------------------------------------------------------
TESTE_V1
SQL> CREATE OR REPLACE EDITIONING VIEW v_cli AS SELECT codigo, nome, telefone FROM clientes;
View criada.
SQL> desc v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME VARCHAR2(50)
TELEFONE VARCHAR2(20)
SQL> ALTER SESSION SET EDITION=ora$base;
Sessão alterada.
SQL> desc v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME VARCHAR2(50)
SQL> ALTER USER sqlmag ENABLE EDITIONS;
Usuário alterado.
SQL> CONNECT sqlmag/******
Conectado.
SQL> SELECT SYS_CONTEXT('userenv', 'current_edition_name') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
-----------------------------------------------------------------------------
ORA$BASE
SQL> CREATE EDITION teste_v1;
Edição criada.
SQL> CREATE EDITIONING VIEW v_cli AS SELECT codigo, nome FROM clientes;
View criada.
SQL> DESC v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME VARCHAR2(50)
SQL> ALTER SESSION SET EDITION=teste_v1;
Sessão alterada.
SQL> SELECT SYS_CONTEXT('userenv', 'current_edition_name') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
-----------------------------------------------------------------------------
TESTE_V1
SQL> CREATE OR REPLACE EDITIONING VIEW v_cli AS SELECT codigo, nome, telefone FROM clientes;
View criada.
SQL> desc v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME VARCHAR2(50)
TELEFONE VARCHAR2(20)
SQL> ALTER SESSION SET EDITION=ora$base;
Sessão alterada.
SQL> desc v_cli
Nome Nulo? Tipo
----------------------------------------- -------- --------------------------
CODIGO NUMBER
NOME"
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo