Qual é o comprimento máximo de um nome de tabela e nome de coluna no Oracle?
Qual é o comprimento máximo de um nome de tabela e nome de coluna no Oracle?
Respostas:
No Oracle 12.2 e acima, o comprimento máximo do nome do objeto é 128 bytes.
No Oracle 12.1 e abaixo, o comprimento máximo do nome do objeto é 30 bytes.
Observe o tipo e tamanho dos dados
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
describe user_mview_logs
retorna, LOG_TABLE VARCHAR2(128)
mas se você tentar algo próximo a 30 caracteres ou mais para um nome de log de exibição materializado, obterá resultados bastante intrigantes.
DESCRIBE all_tab_columns
mostrará um TABLE_NAME VARCHAR2 (30)
Nota VARCHAR2 (30) significa uma limitação de 30 bytes, não uma limitação de 30 caracteres e, portanto, pode ser diferente se o seu banco de dados estiver configurado / configurado para usar um conjunto de caracteres multibyte.
Mike
Certo, mas desde que você use caracteres ASCII, mesmo um conjunto de caracteres multibyte ainda daria uma limitação de exatamente 30 caracteres ... então, a menos que você queira colocar corações e gatos sorridentes nos nomes de banco de dados, tudo bem ...
30 caracteres (bytes, na verdade, como foi afirmado).
Mas não confie em mim; tente você mesmo:
SQL> create table I23456789012345678901234567890 (my_id number);
Table created.
SQL> create table I234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Atualizado: conforme indicado acima, no Oracle 12.2 e posterior, o comprimento máximo do nome do objeto agora é de 128 bytes.
As regras de nomeação de objetos de esquema também podem ser úteis:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
No banco de dados 10g com o qual estou lidando, sei que os nomes das tabelas têm um máximo de 30 caracteres. Não foi possível informar qual é o tamanho do nome da coluna (mas sei que é> 30).
O comprimento máximo dos nomes de objetos do banco de dados Oracle é 30 bytes .
Regras de nome do objeto: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Estou trabalhando no Oracle 12c 12.1. No entanto, não parece que ele permita mais de 30 caracteres para nomes de colunas / tabelas.
Leia uma página da Oracle que menciona 30 bytes. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
No 12c, embora as all_tab_columns digam VARCHAR2 (128) para Table_Name, ele não permite nomes com mais de 30 bytes.
Encontrei outro artigo sobre o 12c R2, que parece permitir isso com até 128 caracteres. https://community.oracle.com/ideas/3338
O comprimento máximo do nome da tabela e da coluna é de 128 bytes ou 128 caracteres. Esse limite é para usar usuários do banco de dados sybase. Eu verifiquei esta resposta completamente, para que eu tenha postado esta resposta com confiança.