web-dev-qa-db-ja.com

Oracleのテーブル名の最大長は?

Oracleのテーブル名と列名の最大長は?

174
robertkroll

Oracle 12.2 以上では、オブジェクト名の最大長は128バイトです。

Oracle 12.1 以下では、オブジェクト名の最大長は30バイトです。

258
TStamper

男に魚を教える

データ型とサイズに注意してください

>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)                
207
Mark Brady

DESCRIBE all_tab_columns

tABLE_NAME VARCHAR2(30)が表示されます

注VARCHAR2(30)は、30文字の制限ではなく30バイトの制限を意味するため、データベースがマルチバイト文字セットを使用するように構成/設定されている場合は異なる場合があります。

マイク

17
Michael OShea

正しいですが、ASCII文字を使用している限り、マルチバイト文字セットでも正確に30文字の制限があります。そのため、DB名には、ハートと笑顔の猫を入れない限り、いいね...

8
Maarten

30文字(バイト、実際、前述のとおり)。

しかし、私を信頼しないでください。これを自分で試してください:

SQL> create table a23456789012345678901234567890 (my_id number);

Table created.



SQL> create table a234567890123456789012345678901(my_id number);


ERROR at line 1:

ORA-00972: identifier is too long

更新:前述のように、Oracle 12.2以降では、オブジェクト名の最大長は128バイトになりました。

5
Wild Pottok

スキーマオブジェクトの命名規則も使用できます。

http://download.Oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref72

3
Ian Carpenter

Oracle 12.2では、組み込みの定数ORA_MAX_NAME_LENを使用して、128バイト(12.2に準拠)に設定できます。Oracle 12.1より前は、最大サイズは30バイトでした。

1
fg78nc

Oracleデータベースのオブジェクト名の最大長は30バイトです。

オブジェクト名ルール: http://docs.Oracle.com/database/121/SQLRF/sql_elements008.htm

0
Gerrit

私が扱っている10gデータベースでは、テーブル名が最大30文字であることを知っています。列名の長さを知ることができませんでした(ただし、30を超えることはわかっています)。

0
Harper Shelby

名前の最大サイズは30文字です。これは、データディクショナリが30バイトのストレージのみを許可するためです。

0
Annu

Oracle 12c 12.1で作業しています。ただし、列/テーブル名に30文字以上を許可しているようには見えません。

30バイトに言及しているOracleページを読んでください。 https://docs.Oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF0022

12cでは、all_tab_columnsはTable_Nameに対してVARCHAR2(128)と言いますが、30バイトを超える名前は許可しません。

12c R2に関する別の記事を見つけましたが、これはこれを最大128文字まで許可しているようです。 https://community.Oracle.com/ideas/3338

0
Vaibhav