Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Important Rule Change to Object Naming in Oracle

DZone's Guide to

Important Rule Change to Object Naming in Oracle

Problems with the 30-character limit are now in the past — both when it comes to migration projects and when it comes to giving meaningful object names.

· Database Zone
Free Resource

Navigating today's database scaling options can be a nightmare. Explore the compromises involved in both traditional and new architectures.

Oracle 12c Release 2 has recently been made available for end users. In this article, I would like to mention the important rule change in object naming standards with Oracle 12c Release 2.

One of the problems we often encounter when developing on Oracle DB is the 30-byte (known as 30 characters) limit on object naming. Despite the fact that object names are the most important indications of objects, we often could not give enough open object names because of this character limit. This situation could become even tougher when it comes to moving objects (i.e. table-view) from databases that have an object naming limit larger than Oracle.

With Oracle 12c Release 2, the name limit to be given to objects has been changed from 30 bytes to 128 bytes (128 characters if we use 1-byte characters) — a huge change!

Now, let's see what happened before Oracle 12c R2:

CREATE TABLE SATIS_YENI_DONUSUM_RAPORLARI_2016
(
   DONEM       NUMBER,
   URUN_KODU   NUMBER,
   TUTAR       NUMBER
);

ORA-00972: identifier is too long

CREATE TABLE SATIS_YENI
(
   DONEM_DONEM_DONEM_DONEM_DONEM_DONEM   NUMBER,
   URUN_KODU                             NUMBER,
   TUTAR                                 NUMBER
);

ORA-00972: identifier is too long

As you can see, I gave the table name in the first example and the column name in the second example above the 30-character limit. In both cases, I got the same error and could not complete the operation.

Now, let's see what we can do with the new update:

CREATE TABLE SATIS_YENI_DONUSUM_RAPORLARI_2016
(
   DONEM_DONEM_DONEM_DONEM_DONEM_DONEM                           NUMBER,
   URUN_KODU_URUN_KODU_URUN_KODU_URUN_KODU_URUN_KODU_URUN_KODU   NUMBER,
   TUTAR_TUTAR_TUTAR_TUTAR_TUTAR_TUTAR                           NUMBER
);

Table SATIS_YENI_DONUSUM_RAPORLARI_2016 created.

SELECT * FROM SATIS_YENI_DONUSUM_RAPORLARI_2016;


CREATE VIEW VW_SATIS_YENI_DONUSUM_RAPORLARI_2016
AS
   SELECT 1 TEST FROM DUAL;

VIEW VW_SATIS_YENI_DONUSUM_RAPORLARI_2016 created.

As you can see in the examples, I could give names up to 128 characters.

I think that the problems we are experiencing with the 30-character limit are left behind (both when it comes to migration projects and when it comes to giving meaningful object names).

Planning for disaster doesn't have to actually be a disaster. Understand your options for deploying a database across multiple data centers - without the headache.

Topics:
oracle ,database ,sql ,object naming

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}