¿Cuál es la longitud máxima de un nombre de tabla y columna en Oracle?
¿Cuál es la longitud máxima de un nombre de tabla y columna en Oracle?
Respuestas:
En Oracle 12.2 y superior, la longitud máxima del nombre del objeto es de 128 bytes.
En Oracle 12.1 y versiones inferiores, la longitud máxima del nombre del objeto es de 30 bytes.
Observe el tipo de datos y el tamaño
>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)
describe user_mview_logs
regresa, LOG_TABLE VARCHAR2(128)
pero si intenta algo que se aproxime a 30 caracteres o más para un nombre de registro de vista materializado, obtendrá resultados bastante desconcertantes.
DESCRIBA all_tab_columns
mostrará un TABLE_NAME VARCHAR2 (30)
Nota VARCHAR2 (30) significa una limitación de 30 bytes, no una limitación de 30 caracteres, y por lo tanto puede ser diferente si su base de datos está configurada / configurada para usar un juego de caracteres multibyte.
Miguel
Correcto, pero siempre que use caracteres ASCII, incluso un conjunto de caracteres multibyte aún le daría una limitación de exactamente 30 caracteres ... así que, a menos que quiera poner corazones y gatos sonrientes en sus nombres DB, está bien ...
30 caracteres (bytes, realmente, como se ha dicho).
Pero no confíes en mí; prueba esto por ti mismo:
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
Actualizado: como se indicó anteriormente, en Oracle 12.2 y versiones posteriores, la longitud máxima del nombre del objeto es ahora de 128 bytes.
Las reglas de nomenclatura de objetos de esquema también pueden ser de alguna utilidad:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
En la base de datos de 10g con la que estoy tratando, sé que los nombres de las tablas tienen un máximo de 30 caracteres. No podría decirte cuál es la longitud del nombre de la columna (pero sé que es> 30).
La longitud máxima de los nombres de objeto de la base de datos de Oracle es de 30 bytes .
Reglas de nombre de objeto: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Estoy trabajando en Oracle 12c 12.1. Sin embargo, no parece que permita más de 30 caracteres para los nombres de columna / tabla.
Lea una página de Oracle que menciona 30 bytes. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
En 12c, aunque las columnas all_tab_columns dicen VARCHAR2 (128) para Table_Name, no permite un nombre de más de 30 bytes.
Encontré otro artículo sobre 12c R2, que parece estar permitiendo esto hasta 128 caracteres. https://community.oracle.com/ideas/3338
La longitud máxima de la tabla y el nombre de la columna es de 128 bytes o 128 caracteres. Este límite es para usar usuarios de la base de datos sybase. Verifiqué esta respuesta a fondo, por lo que he publicado esta respuesta con confianza.