Was ist die maximale Länge eines Tabellennamens und eines Spaltennamens in Oracle?
Was ist die maximale Länge eines Tabellennamens und eines Spaltennamens in Oracle?
Antworten:
In Oracle 12.2 und höher beträgt die maximale Länge des Objektnamens 128 Byte.
In Oracle 12.1 und darunter beträgt die maximale Objektnamenlänge 30 Byte.
Beachten Sie den Datentyp und die Größe
>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
zurückgegeben, LOG_TABLE VARCHAR2(128)
aber wenn Sie etwas versuchen, das sich 30 Zeichen oder mehr für einen materialisierten Ansichtsprotokollnamen nähert, erhalten Sie einige ziemlich rätselhafte Ergebnisse.
BESCHREIBEN Sie all_tab_columns
zeigt einen TABLE_NAME VARCHAR2 (30)
Hinweis VARCHAR2 (30) bedeutet eine 30-Byte-Beschränkung, keine 30-Zeichen-Beschränkung, und kann daher unterschiedlich sein, wenn Ihre Datenbank für die Verwendung eines Multibyte-Zeichensatzes konfiguriert / eingerichtet ist.
Mike
Richtig, aber solange Sie ASCII-Zeichen verwenden, würde selbst ein Multibyte-Zeichensatz eine Beschränkung von genau 30 Zeichen ergeben. Wenn Sie also keine Herzen und lächelnde Katzen in Ihre DB-Namen einfügen möchten, ist Ihre Geldstrafe ...
30 Zeichen (Bytes, wie bereits erwähnt).
Aber vertraue mir nicht; Probieren Sie es selbst aus:
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
Aktualisiert: Wie oben angegeben, beträgt die maximale Länge des Objektnamens in Oracle 12.2 und höher jetzt 128 Byte.
Die Regeln für die Benennung von Schemaobjekten können auch von Nutzen sein:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
In der 10g-Datenbank, mit der ich mich befasse, weiß ich, dass Tabellennamen maximal 30 Zeichen lang sind. Konnte Ihnen nicht sagen, wie lang der Spaltenname ist (aber ich weiß, dass er> 30 ist).
Die maximale Länge der Oracle-Datenbankobjektnamen beträgt 30 Byte .
Regeln für Objektnamen: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Ich arbeite an Oracle 12c 12.1. Es scheint jedoch nicht mehr als 30 Zeichen für Spalten- / Tabellennamen zuzulassen.
Lesen Sie eine Orakelseite durch, auf der 30 Bytes erwähnt werden. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
In 12c wird in den all_tab_columns zwar VARCHAR2 (128) für Table_Name angegeben, es werden jedoch nicht mehr als 30 Byte Name zugelassen.
Es wurde ein weiterer Artikel über 12c R2 gefunden, der anscheinend bis zu 128 Zeichen zulässt. https://community.oracle.com/ideas/3338
Die maximale Länge des Tabellen- und Spaltennamens beträgt 128 Byte oder 128 Zeichen. Diese Grenze gilt für die Verwendung von Benutzern der Sybase-Datenbank. Ich habe diese Antwort gründlich überprüft, so dass ich diese Antwort sicher gepostet habe.