Social Icons

7 de nov. de 2018

Nomes longos de objetos no Oracle 12c, usar ou não?




Olá pessoal,

     Um dos novos recursos do "Oracle Database 12.2.0.1" é a possibilidade de criar identificadores longos nos objetos, ou seja, criar nomes de objetos com tamanho de até 128 bytes (antes o máximo era 30 bytes para a maior parte dos objetos). 
  
     Resolvi escrever pequeno artigo porque há alguns meses atrás criei o meu primeiro objeto com um nome de tamanho maior que 30 bytes, em um SGBD Oracle 12cR2, cujo nome foi definido e justificado pela equipe de Desenvolvimento. Dada essa demanda, fui pesquisar mais sobre o assunto e descobri que a princípio esse novo recurso parece bom, pois dá mais liberdade aos Desenvolvedores, porém há alguns cuidados que devem ser considerados antes de criarmos objetos com "identificadores longos".

     Com o tamanho de 128 bytes fica muito mais difícil de alcançarmos o limite do identificador de objetos, desse modo, dificilmente teremos a necessidade de usar abreviações, por exemplo, no nome de tabelas ou colunas (quando eu era Desenvolvedor tive que fazer isso muitas vezes). Uma vantagem para os Desenvolvedores é que os nomes de tabelas, por exemplo, podem mais facilmente ficarem iguais aos nomes das classes criadas na aplicação (que muitas vezes é maior que 30 bytes).

     Agora vem o problema! Quando temos bancos de dados Oracle de diversas versões em um ambiente corporativo, incluindo versões anteriores ao 12cR2, podem ocorrer erros com acesso remoto (via Dblink) a partir de um BD com uma versão anterior a 12cR2, como por exemplo, a versão 11G, quando este BD tentar acessar objetos com identificadores longos criados num BD com a versão 12cR2 ou superior. Se isso ocorrer você poderá ver o erro "ORA-00972: identifier is too long". Para evitá-lo, caso você tenha ambientes com diversas versões do Oracle, incluindo versões anteriores à 12cR2, a única saída é manter o padrão de não criar identificadores com tamanho maior que 30 bytes para  nomes de objetos, tais como: schemas, tabelas e colunas. Existem algumas exceções de objetos ou componentes do BD que não podem ter identificadores longos (ver Imagem 01).

Imagem 01: Exceções que não podem ter idenficadores com tamanho de 128 bytes

     Para aprender mais sobre o assunto indico as seguintes referências:

0 comments:

Postar um comentário

 

LINKS ÚTEIS

Total de visualizações de página

Seguidores

Meu One Drive (antigo Sky Drive)