Berapa panjang maksimum nama tabel di Oracle?

193

Berapa panjang maksimum nama tabel dan nama kolom di Oracle?

robertkroll
sumber

Jawaban:

283

Dalam Oracle 12.2 dan di atas panjang nama objek maksimum adalah 128 byte.

Dalam Oracle 12.1 dan di bawah panjang nama objek maksimum adalah 30 byte.

TStamper
sumber
6
Ini sebenarnya berdasarkan pada versi di parameter yang kompatibel. Jika Anda memiliki 12.2 DB dengan set yang kompatibel ke 11.2.0, masih membatasi Anda hingga 30 karakter.
rtaft
220

Ajari pria memancing

Perhatikan tipe data dan ukurannya

>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)                

sumber
4
Dengan SQL standar, Anda juga dapat menentukan panjang dengan menanyakan tabel: pilih * dari all_tab_columns di mana table_name = 'ALL_TAB_COLUMNS';
JustinKSU
1
Mungkin lebih baik untuk mendeskripsikan tabel dasar all_objects , karena itu menunjukkan batasan nama berlaku untuk hampir semua yang memiliki tampilan all_ * berdasarkan itu.
mormegil
1
Ambil jawaban ini dengan sebutir garam. Pada versi 12.1.0.2.0 describe user_mview_logskembali LOG_TABLE VARCHAR2(128)tetapi jika Anda mencoba sesuatu yang mendekati 30 karakter atau lebih untuk nama log tampilan terwujud, Anda akan mendapatkan beberapa hasil yang cukup membingungkan.
Saul
1
Meskipun memiliki panjang 128, Anda masih bisa terjebak dengan batas 30 karakter jika param yang kompatibel diatur ke versi yang lebih lama.
rtaft
19

DESCRIBE all_tab_columns

akan menampilkan TABLE_NAME VARCHAR2 (30)

Catatan VARCHAR2 (30) berarti batasan 30 byte, bukan batasan 30 karakter, dan karenanya mungkin berbeda jika database Anda dikonfigurasi / disetel untuk menggunakan set karakter multibyte.

Mike


sumber
8

Benar, tetapi selama Anda menggunakan karakter ASCII bahkan set karakter multibyte masih akan memberikan batasan tepat 30 karakter ... jadi kecuali Anda ingin menaruh hati dan tersenyum kucing di Anda DB nama Anda baik-baik saja ...

Maarten
sumber
Hanya untuk memperjelas: ada set karakter multi-byte yang DO membutuhkan lebih dari satu byte per karakter ASCII, tetapi mereka tidak dapat digunakan sebagai set karakter basis data karena ada persyaratan "ASCII superset" yang ketat untuk mereka. (sebenarnya ASCII atau EBCDIC tergantung pada platform).
eckes
5

30 char (byte, sungguh, seperti yang telah dinyatakan).

Tapi jangan percaya padaku; coba sendiri ini:

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

Diperbarui: seperti yang dinyatakan di atas, dalam Oracle 12.2 dan yang lebih baru, panjang nama objek maksimum sekarang adalah 128 byte.

Pottok liar
sumber
1

Dalam basis data 10g yang saya hadapi, saya tahu nama tabel maksimal 30 karakter. Tidak dapat memberi tahu Anda berapa panjang nama kolom (tapi saya tahu itu> 30).

Harper Shelby
sumber
1
Nama kolom juga dibatasi hingga 30 karakter, bukan> 30
Justin Cave
1

Ukuran nama maksimum adalah 30 karakter karena kamus data yang memungkinkan penyimpanan hanya untuk 30 byte

Annu
sumber
1

Aktif Oracle 12.2, Anda dapat menggunakan konstanta bawaan ORA_MAX_NAME_LEN,, yang disetel ke 128 byte (sesuai 12.2) Sebelum Oracle 12.1ukuran maks adalah 30 byte.

fg78nc
sumber
0

Saya sedang mengerjakan Oracle 12c 12.1. Namun, sepertinya tidak memungkinkan lebih dari 30 karakter untuk nama kolom / tabel.

Baca melalui halaman oracle yang menyebutkan 30 byte. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

Dalam 12c meskipun all_tab_columns mengatakan VARCHAR2 (128) untuk Table_Name, itu tidak mengizinkan lebih dari 30 byte nama.

Menemukan artikel lain tentang 12c R2, yang tampaknya memungkinkan ini hingga 128 karakter. https://community.oracle.com/ideas/3338

Vaibhav
sumber
2
SELECT name, nilai DARI v $ parameter WHERE name = 'kompatibel'; Harus 12.2.0
rtaft
-4

Panjang maksimum nama tabel dan kolom adalah 128 byte atau 128 karakter. Batas ini adalah untuk menggunakan pengguna basis data sybase. Saya memverifikasi jawaban ini dengan seksama, sehingga saya telah mengirimkan jawaban ini dengan percaya diri.

Gowtham Smv
sumber
3
ini pertanyaan oracle.
Stefan Steinegger