Quelle est la longueur maximale d'un nom de table et d'un nom de colonne dans Oracle?
Dans Oracle 12.2 et plus, la longueur maximale du nom d'objet est de 128 octets.
Dans Oracle 12.1 et au-dessous, la longueur maximale du nom d'objet est de 30 octets.
Notez le type de données et la taille
>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 all_tab_columns
affichera un TABLE_NAME VARCHAR2 (30)
Remarque VARCHAR2 (30) signifie une limitation de 30 octets, et non de 30 caractères. Elle peut donc être différente si votre base de données est configurée/configurée pour utiliser un jeu de caractères multi-octets.
Mike
D'accord, mais tant que vous utilisez des caractères ASCII, même un jeu de caractères multi-octets donne toujours une limite de 30 caractères exactement ... donc, à moins que vous ne vouliez mettre des coeurs et des chats souriants dans votre nom de base de données, cela vous va. ..
30 caractères (octets, comme cela a été dit).
Mais ne me faites pas confiance; essayez ceci pour vous-même:
SQL> create table a23456789012345678901234567890 (my_id number);
Table created.
SQL> create table a234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Mise à jour: comme indiqué ci-dessus, dans Oracle 12.2 et versions ultérieures, la longueur maximale du nom d'objet est désormais de 128 octets.
Les règles de dénomination des objets de schéma peuvent également être utiles:
http://download.Oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Sur Oracle 12.2
, vous pouvez utiliser la constante intégrée, ORA_MAX_NAME_LEN
, .__ définie sur 128 octets (conformément à 12.2) Avant Oracle 12.1
, la taille maximale était de 30 octets.
La longueur maximale des noms d'objet de base de données Oracle est 30 octets.
Règles de nom d'objet: http://docs.Oracle.com/database/121/SQLRF/sql_elements008.htm
Dans la base de données 10g que je traite, je sais que les noms de table sont limités à 30 caractères. Je ne peux pas vous dire quelle est la longueur du nom de la colonne (mais je sais que c'est> 30).
La taille maximale du nom est de 30 caractères en raison du dictionnaire de données qui n'autorise le stockage que de 30 octets.
Je travaille sur Oracle 12c 12.1. Cependant, cela ne semble pas autoriser plus de 30 caractères pour les noms de colonne/table.
Lisez une page Oracle mentionnant 30 octets . https://docs.Oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
En 12c, bien que all_tab_columns dise VARCHAR2 (128) pour Table_Name, il ne permet pas plus de 30 octets de nom.
Nous avons trouvé un autre article sur 12c R2, qui semble autoriser jusqu'à 128 caractères . https://community.Oracle.com/ideas/3338