Oracle'da bir tablo adının maksimum uzunluğu nedir?


Yanıtlar:


283

Gelen Oracle 12.2 ve en nesne adı uzunluğu üzerinde 128 bayttır.

Gelen Oracle 12.1 ve en nesne adı uzunluğu 30 altında bayttır.


6
Aslında uyumlu parametredeki sürüme dayanmaktadır. 11.2.0 olarak uyumlu bir 12.2 DB'niz varsa, yine de sizi 30 karakterle sınırlar.
rtaft

220

Bir adama balık tutmayı öğretin

Veri türü ve boyutuna dikkat edin

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

4
Standart SQL ile tabloları sorgulayarak uzunlukları da belirleyebilirsiniz: all_tab_columns'dan select * burada table_name = 'ALL_TAB_COLUMNS';
JustinKSU

1
All_objects taban tablosunu tanımlamak daha iyi olabilir , çünkü bu, ad sınırlamasının, all_ * görünümüne dayanan hemen hemen her şey için geçerli olduğunu gösterir.
mormegil

1
Bu cevabı bir tuz tanesi ile al. Sürüm 12.1.0.2.0'da describe user_mview_logsdöner, LOG_TABLE VARCHAR2(128)ancak materyalize görünüm günlüğü adı için 30 veya daha fazla karaktere yaklaşan herhangi bir şey denerseniz, oldukça şaşırtıcı sonuçlar elde edersiniz.
Saul

1
128 uzunluğa rağmen, uyumlu parametreniz daha eski bir sürüme ayarlanmışsa, 30 karakter sınırına takılıp kalabilirsiniz.
rtaft

19

DESCRIBE Instagram Hesabındaki Resim ve Videoları all_tab_columns

bir TABLE_NAME VARCHAR2 (30) gösterecek

Not VARCHAR2 (30), 30 karakterlik bir sınırlama değil, 30 baytlık bir sınırlama anlamına gelir ve bu nedenle veritabanınız çok baytlı bir karakter kümesi kullanacak şekilde yapılandırıldıysa / ayarlandıysa farklı olabilir.

mikrofon


8

Doğru, ancak ASCII karakterleri kullandığınız sürece, çok baytlı bir karakter seti bile tam olarak 30 karakter sınırlaması verecektir ... yani kalpleri ve gülümseyen kedileri koymak istemiyorsanız DB isimleriniz iyi ...


Sadece bunu açıklığa kavuşturmak için: ASCII karakteri başına birden fazla bayt gerektiren ÇOK çok baytlı karakter kümeleri vardır, ancak bunlar için katı bir "ASCII üst kümesi" gereksinimi olduğu için veritabanı karakter kümesi olarak kullanılamazlar. (aslında platforma bağlı olarak ASCII veya EBCDIC).
eckes

5

30 karakter (belirtildiği gibi gerçekten bayt).

Ama bana güvenme; bunu kendiniz deneyin:

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

Güncelleme: yukarıda belirtildiği gibi, Oracle 12.2 ve sonraki sürümlerinde, maksimum nesne adı uzunluğu artık 128 bayttır.



1

Karşılaştığım 10g veritabanında tablo adlarının en fazla 30 karakter olduğunu biliyorum. Sütun adı uzunluğunun ne olduğunu söyleyemedim (ama bunun> 30 olduğunu biliyorum).


1
Sütun adları da 30 karakterle sınırlıdır,> 30 ile sınırlı değildir
Justin Cave

1

Yalnızca 30 bayt için depolamaya izin veren veri sözlüğü nedeniyle maksimum ad boyutu 30 karakterdir


1

Açık olarak Oracle 12.2, ORA_MAX_NAME_LEN128 bayta ayarlanmış (12.2'ye göre) yerleşik sabiti kullanabilirsiniz . Oracle 12.1Maksimum boyuttan önce 30 bayt idi.



0

Oracle 12c 12.1 üzerinde çalışıyorum. Ancak, sütun / tablo adları için 30'dan fazla karaktere izin verdiği görülmemektedir.

30 bayttan bahseden bir kehanet sayfasını okuyun. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

12c'de all_tab_columns Tablo_Adı için VARCHAR2 (128) demesine rağmen, 30 bayttan fazla ada izin vermez.

128 karaktere kadar izin veren 12c R2 hakkında başka bir makale buldu. https://community.oracle.com/ideas/3338


2
SELECT name, değer FROM v $ parametresi WHERE name = 'uyumlu'; 12.2.0 olmalı
rtaft

-4

Tablo ve sütun adının maksimum uzunluğu 128 bayt veya 128 karakterdir. Bu sınır sybase veritabanı kullanıcıları içindir. Bu cevabı iyice doğruladım, böylece bu cevabı güvenle gönderdim.


3
bu kâhin bir soru.
Stefan Steinegger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.