Яка максимальна довжина імені таблиці в Oracle?


Відповіді:


283

В Oracle 12.2 і вище максимальна довжина імені об'єкта - 128 байт.

В Oracle 12.1 і нижче максимальна довжина імені об'єкта - 30 байт.


6
Він фактично заснований на версії сумісного параметра. Якщо у вас 12,2 БД з сумісним набором 11.2.0, це все ще обмежує вас до 30 знаків.
rtaft

220

Навчіть чоловіка ловити рибу

Зверніть увагу на тип та розмір даних

>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
За допомогою стандартного SQL ви також можете визначати довжини, запитуючи таблицю: виберіть * з усіх_tab_column, де table_name = 'ALL_TAB_COLUMNS';
JustinKSU

1
Можливо, буде краще описати базову таблицю all_objects , оскільки це показує обмеження імен, стосується майже всього, на чому базується перегляд all_ *.
мормегіл

1
Візьміть цю відповідь із зерном солі. У версії 12.1.0.2.0 describe user_mview_logsповертається, LOG_TABLE VARCHAR2(128)але якщо ви спробуєте щось, що наближається до 30 символів або більше для матеріалізованого імені журналу перегляду, ви отримаєте кілька неприємних результатів.
Саул

1
Незважаючи на довжину 128, ви все ще можете зациклюватися на обмеженні 30 знаків, якщо ваш сумісний парам встановлений на більш старій версії.
rtaft

19

ВИЗНАЧИТИ всі_tab_колонки

покаже TABLE_NAME VARCHAR2 (30)

Примітка VARCHAR2 (30) означає обмеження на 30 байт, а не обмеження на 30 символів, і тому може бути різним, якщо ваша база даних налаштована / налаштована для використання багатобайтового набору символів.

Майк


8

Правильно, але доки ви використовуєте символи ASCII, навіть багатобайтовий набір символів все одно дасть обмеження на рівно 30 символів ... так що, якщо ви не хочете поміщати серця та усміхнених котів, у вас БД називає ваші штрафи ...


Просто для того, щоб зрозуміти: є багатобайтові набори символів, для яких DO потрібно більше одного байта на ASCII-символ, але вони не можуть бути використані як набір символів бази даних, оскільки для них існує сувора вимога "суперсети ASCII". (власне, його ASCII або EBCDIC залежно від платформи).
eckes

5

30 знаків (дійсно, як було зазначено).

Але не довіряйте мені; спробуйте це на собі:

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

Оновлено: як зазначено вище, в Oracle 12.2 та пізніших версіях, максимальна довжина імені об'єкта зараз становить 128 байт.



1

У базі даних 10 г, з якою я маю справу, я знаю, що назви таблиць розміщуються в 30 символів. Не можу сказати, яка довжина назви стовпця (але я знаю, що це> 30).


1
Імена стовпців також обмежуються 30 символами, а не> 30
Джастін Кейв

1

Максимальний розмір імені - 30 символів через словник даних, який дозволяє зберігати лише 30 байт


1

Увімкнено Oracle 12.2, ви можете використовувати вбудовану константу, ORA_MAX_NAME_LENвстановлену на 128 байт (відповідно до 12.2). До Oracle 12.1максимального розміру було 30 байт.



0

Я працюю над Oracle 12c 12.1. Однак, схоже, це не більше 30 символів для імен стовпців / таблиць.

Прочитайте сторінку oracle, в якій згадується 30 байт. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

У 12c, хоча всі_tab_column кажуть VARCHAR2 (128) для Table_Name, він не дозволяє використовувати більше 30 байт імені.

Знайдено ще одну статтю про 12c R2, яка, здається, дозволяє до 128 символів. https://community.oracle.com/ideas/3338


2
SELECT ім'я, значення ВІД параметра $ $ WHERE name = 'сумісний'; Повинно бути 12.2.0
rtaft

-4

Максимальна довжина назви таблиці та стовпців - 128 байт або 128 символів. Цей ліміт призначений для використання користувачами бази даних sybase. Я ретельно перевірив цю відповідь, щоб впевнено опублікувати цю відповідь.


3
це питання про оракул.
Стефан Штейнеггер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.