Antes do Oracle Database 12c Release 2, o padrão para criação de nome de objeto estava limitado a 30 bytes. Mas, agora com Oracle Database 12c R2 o nome de identificador de objetos passa a ser acima de 30 bytes, podendo chegar até 128 bytes.
Por exemplo, no Oracle Database 12c Release 1 se tentarmos criar uma tabela com nome acima de 30 bytes, tomaremos o erro: ORA-00972: identificador muito longo, veja:
Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0
SQL>
SQL> create table Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2
2 (col_Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2 number);
create table Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2
(col_Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2 number)
ORA-00972: identificador muito longo
SQL>
Já no Oracle Database 12c Release 2 conseguimos executar o create acima sem problemas, porém, vale atentar:
- Se o parâmetro COMPATIBLE for configurado para um valor de 12.2 ou superior, os nomes deverão ter de 1 a 128 bytes de comprimento, com algumas exceções que podem ser verificadas na documentação(Link no final do artigo) da Oracle.;
- Agora se COMPATIBLE for definido com um valor menor que 12.2, os nomes deverão ter de 1 a 30 bytes.
Vamos agora criar a tabela com nome acima do valor padrão conhecido, 30 bytes:
[oracle@serv01 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 30 17:22:00 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Veja que o parâmetro de compatibilidade está definido para 12.2:
SQL> show parameter COMPATIBLE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.2.0 noncdb_compatible boolean FALSE SQL>
Então neste caso conseguimos criar nossa tabela sem problemas:
SQL> create table Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2 (col_Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2 number); Table created. SQL>
Repare que criamos a tabela, bem como o nome da coluna acima do padrão de 30 bytes:
SQL> desc Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2; Name Null? Type ----------------------------------------- -------- ---------------------------- COL_ESTAMOS_CRIANDO_UMA_TABELA_ACIMA_DE_T NUMBER RINTA_BYTES_NO_ORACLE_DATABASE_12_2 SQL> SQL> insert into Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2 values (1); 1 row created. SQL> select * from Estamos_Criando_Uma_Tabela_Acima_de_Trinta_Bytes_No_Oracle_Database_12_2; COL_ESTAMOS_CRIANDO_UMA_TABELA_ACIMA_DE_TRINTA_BYTES_NO_ORACLE_DATABASE_12_2 ---------------------------------------------------------------------------- 1 SQL>
Para maiores informações:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Database-Object-Names-and-Qualifiers.html#GUID-05F1B577-C08C-4DB9-925A-8799C76ADFF4
Ronaldo.
Nenhum comentário:
Postar um comentário