Oracle에서 테이블 이름의 최대 길이는 얼마입니까?


답변:


283

에서 오라클 12.2 최대 오브젝트 이름의 길이 이상은 128 바이트입니다.

에서 오라클 12.1 최대 오브젝트 이름의 길이 이하는 30 바이트입니다.


6
실제로 호환되는 매개 변수의 버전을 기반으로합니다. 호환이 11.2.0으로 설정된 12.2 DB가있는 경우 여전히 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을 사용하면 테이블을 쿼리하여 길이를 결정할 수도 있습니다. select * from all_tab_columns 여기서 table_name = 'ALL_TAB_COLUMNS';
JustinKSU

1
기본 테이블 all_objects 를 설명하는 것이 좋습니다 . 이름 제한이 all_ * 뷰를 기반으로하는 거의 모든 것에 적용되기 때문입니다.
mormegil

1
소금 한알로이 답을 가져 가라. 버전 12.1.0.2.0에서 describe user_mview_logs리턴 LOG_TABLE VARCHAR2(128)되지만 구체화 된보기 로그 이름으로 30 자 이상에 도달하려고 시도하면 다소 수수께끼의 결과를 얻을 수 있습니다.
사울

1
길이가 128 자 임에도 불구하고 호환되는 매개 변수가 이전 버전으로 설정되어 있으면 30 자 제한으로 계속 멈출 수 있습니다.
rtaft

19

DESCRIBE all_tab_columns

TABLE_NAME VARCHAR2 (30)가 표시됩니다

참고 VARCHAR2 (30)은 30 자 제한이 아니라 30 바이트 제한을 의미하므로 데이터베이스가 멀티 바이트 문자 세트를 사용하도록 구성 / 설정된 경우 다를 수 있습니다.

마이크


8

맞습니다. 그러나 ASCII 문자를 사용하는 한 멀티 바이트 문자 세트조차도 정확히 30 자로 제한됩니다 ... 따라서 마음에 고양이를 넣고 싶지 않다면 DB 이름을 잘 사용하십시오 ...


분명히하기 위해 : 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

내가 다루고있는 10g 데이터베이스에서 테이블 이름이 최대 30 자라는 것을 알고 있습니다. 열 이름 길이가 무엇인지 알 수 없습니다 (그러나 30 이상임).


1
열 이름도 30 자로 제한됩니다.> 30
Justin Cave

1

데이터 사전으로 인해 최대 이름 크기는 30 자이며 30 바이트 만 저장할 수 있습니다.


1

Oracle 12.2, 당신은 내장 상수 사용할 수 있습니다 ORA_MAX_NAME_LEN, 이전 (12.2 당) 128 바이트로 설정 Oracle 12.1최대 크기는 30 바이트를했다.



0

Oracle 12c 12.1에서 일하고 있습니다. 그러나 열 / 테이블 이름에 30자를 초과하는 것으로 보이지는 않습니다.

30 바이트를 언급하는 오라클 페이지를 읽습니다. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

12c에서 all_tab_columns는 Table_Name에 대해 VARCHAR2 (128)라고 말하지만 30 바이트를 초과하는 이름은 허용하지 않습니다.

12c R2에 관한 다른 기사를 찾았습니다.이 기사는 최대 128자를 허용합니다. https://community.oracle.com/ideas/3338


2
SELECT 이름, 값 FROM v $ parameter WHERE name = 'compatible'; 12.2.0이어야합니다
rtaft

-4

테이블 및 열 이름의 최대 길이는 128 바이트 또는 128 자입니다. 이 제한은 sybase 데이터베이스 사용자를 사용하기위한 것입니다. 이 답변을 철저히 확인하여 자신있게 답변을 게시했습니다.


3
오라클 질문입니다.
Stefan Steinegger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.