SQL*Plus now supports object lengths of 128 bytes. In previous releases, the object length limit was 30 bytes and if you try to create object with length more than 30, it will throw error as ORA-00972: identifier is too long.
Oracle 12.2 increases the maximum size of most identifiers from 30 to 128 bytes, which makes migration from other database engines easier.

SQL> create table "this_is_a_table_with_long_identifier" as select * from dual;
Table created.

SQL> alter table "this_is_a_table_with_long_identifier" add this_is_a_column_with_long_identifier number;
Table altered.

The same command i tried to run in previous  Oracle database.

create table "this_is_a_table_with_long_identifier" as select * from dual;

ORA-00972: identifier is too long

You can describe the dba_table and check the length of columns.( In oracle 12.2)

SQL> desc dba_objects
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                              VARCHAR2(128)
OBJECT_NAME                                        VARCHAR2(128)
SUBOBJECT_NAME                                     VARCHAR2(128)

SQL> desc dba_tables
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                     NOT NULL VARCHAR2(128)           ----- >>
TABLE_NAME                                NOT NULL VARCHAR2(128)           ----- >>
TABLESPACE_NAME                                    VARCHAR2(30)
CLUSTER_NAME                                       VARCHAR2(128)
IOT_NAME                                           VARCHAR2(128)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.