Jaka jest maksymalna długość nazwy tabeli w Oracle?

193

Jaka jest maksymalna długość nazwy tabeli i nazwy kolumny w Oracle?

robertkroll
źródło

Odpowiedzi:

283

W Oracle 12.2 i nowszych maksymalna długość nazwy obiektu wynosi 128 bajtów.

W Oracle 12.1 i poniżej maksymalna długość nazwy obiektu wynosi 30 bajtów.

TStamper
źródło
6
Opiera się on na wersji zgodnego parametru. Jeśli masz 12,2 DB z kompatybilnym zestawem 11.2.0, nadal ogranicza Cię do 30 znaków.
rtaft,
220

Naucz człowieka łowić ryby

Zwróć uwagę na typ danych i rozmiar

>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)                

źródło
4
Za pomocą standardowego SQL można również określić długości, sprawdzając tabelę: wybierz * z all_tab_columns, gdzie table_name = 'ALL_TAB_COLUMNS';
JustinKSU,
1
Lepiej opisać tabelę podstawową all_objects , ponieważ pokazuje to, że ograniczenie nazwy dotyczy praktycznie wszystkiego, co ma oparty na niej widok all_ *.
mormegil
1
Weź tę odpowiedź z odrobiną soli. W wersji 12.1.0.2.0 describe user_mview_logspowraca, LOG_TABLE VARCHAR2(128)ale jeśli spróbujesz czegoś, co zbliża się do 30 lub więcej znaków dla zmaterializowanej nazwy dziennika widoku, uzyskasz dość intrygujące wyniki.
Saul
1
Pomimo długości 128 nadal możesz utknąć w limicie 30 znaków, jeśli kompatybilny parametr jest ustawiony na starszą wersję.
rtaft
19

OPISUJ wszystkie kolumny_tab

pokaże TABLE_NAME VARCHAR2 (30)

Uwaga VARCHAR2 (30) oznacza ograniczenie 30 bajtów, a nie ograniczenie 30 znaków, a zatem może być inne, jeśli baza danych jest skonfigurowana / skonfigurowana do używania zestawu znaków wielobajtowych.

Mikrofon


źródło
8

Tak, ale tak długo, jak używasz znaków ASCII, nawet zestaw znaków wielobajtowych nadal dawałby ograniczenie dokładnie 30 znaków ... więc jeśli nie chcesz wkładać serc i uśmiechniętych kotów w swoje nazwy DB, to dobrze ...

Maarten
źródło
Żeby było jasne: istnieją wielobajtowe zestawy znaków, które wymagają więcej niż jednego bajtu na znak ASCII, ale nie można ich używać jako zestawu znaków bazy danych, ponieważ istnieje dla nich ścisły wymóg „nadzbiór ASCII”. (w rzeczywistości jego ASCII lub EBCDIC w zależności od platformy).
eckes
5

30 znaków (tak naprawdę, jak powiedziano).

Ale nie ufajcie mi; spróbuj tego sam:

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

Zaktualizowano: jak stwierdzono powyżej, w Oracle 12.2 i nowszych maksymalna długość nazwy obiektu wynosi teraz 128 bajtów.

Wild Pottok
źródło
1

W bazie danych 10 g, z którą mam do czynienia, wiem, że nazwy tabel mają maksymalnie 30 znaków. Nie mogę powiedzieć, jaka jest długość nazwy kolumny (ale wiem, że to> 30).

Harper Shelby
źródło
1
Nazwy kolumn są również ograniczone do 30 znaków, a nie> 30
Justin Cave
1

Maksymalny rozmiar nazwy wynosi 30 znaków ze względu na słownik danych, który pozwala na przechowywanie tylko 30 bajtów

Annu
źródło
1

On Oracle 12.2, można użyć wbudowanej w stałym, ORA_MAX_NAME_LENustaw na 128 bajtów (zgodnie z 12,2) przed Oracle 12.1maksymalny rozmiar wynosi 30 bajtów.

fg78nc
źródło
0

Pracuję na Oracle 12c 12.1. Nie wydaje się jednak, aby dopuszczał więcej niż 30 znaków dla nazw kolumn / tabel.

Przeczytaj stronę wyroczni, która wymienia 30 bajtów. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

W 12c, chociaż kolumny all_tab_columns zawierają VARCHAR2 (128) dla Table_Name, nie pozwalają na nazwę większą niż 30 bajtów.

Znaleziono kolejny artykuł o 12c R2, który wydaje się pozwalać na to do 128 znaków. https://community.oracle.com/ideas/3338

Vaibhav
źródło
2
WYBIERZ nazwę, wartość OD parametru v $ GDZIE nazwa = „zgodny”; Musi być 12.2.0
rtaft
-4

Maksymalna długość nazwy tabeli i kolumny wynosi 128 bajtów lub 128 znaków. Ten limit dotyczy korzystania z użytkowników bazy danych sybase. Dokładnie zweryfikowałem tę odpowiedź, więc opublikowałem tę odpowiedź z przekonaniem.

Gowtham Smv
źródło
3
to pytanie wyroczni.
Stefan Steinegger,