Oracle中表名和列名的最大长度是多少?


当前回答

我正在使用Oracle 12c 12.1。但是,它似乎不允许列/表名超过30个字符。

阅读一个oracle页面,其中提到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

其他回答

我正在使用Oracle 12c 12.1。但是,它似乎不允许列/表名超过30个字符。

阅读一个oracle页面,其中提到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

更新:如上所述,在Oracle 12.2和更高版本中,最大对象名称长度现在是128字节。

这篇文章的其余部分适用于Oracle 12.1及以下:限制是30个字符(实际上是字节)。

但不要相信我的话;请自己试试(在Oracle 12.1或以下版本):

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上,你可以使用内置常量ORA_MAX_NAME_LEN, 设置为128字节(根据12.2) 在Oracle 12.1之前,最大大小为30字节。

最大名称大小为30个字符,因为数据字典只允许存储30个字节

在我正在处理的10g数据库中,我知道表名最多只能有30个字符。不能告诉你列名的长度是多少(但我知道它是> 30)。