level oracle 字段名_oracle表名、字段名等对象的命名长度限制

今天在为某系统数据库结构整理升级脚本时,遇到了“命名字节过长的错误”,类似于下面的截图语句:

64995dd852495461ff3dd291888043f4.png

由于升级的结构中对于字段名的命名根据业务进行了修改,出现了命名过长的情况。

这里想说一下,对于oracle,表名、字段名等对象命名字节个数限制在了30个字节!是无法更改的,这是oracle的固化设置。

我们可以通过查看数据库字典进一步验证一下。先思考一下,哪里可以获得关于这类命名的信息呢?有没有想到USER_TAB_COLUMNS,USER_CONSTRAINTS这一类的视图。我们来做一个验证。

实验:

在sys用户下,查看user_tables这个视图,可以发现在table_name这个字段,类型为varchar,长度为30,这里记录的表的名称,如下:

a53b1f8ce41d7b70032d055097c58c34.png

再进一步查看视图的结构,如下:

create or replace view user_tables

(table_name, tablespace_name, cluster_name, iot_name, status, pct_free, pct_used, ini_trans, max_trans, initial_extent, next_extent, min_extents, max_extents, pct_increase, freelists, freelist_groups, logging, backed_up, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, avg_space_freelist_blocks, num_freelist_blocks, degree, instances, cache, table_lock, sample_size, last_analyzed, partitioned, iot_type, temporary, secondary, nested, buffer_pool, flash_cache, cell_flash_cache, row_movement, global_stats, user_stats, duration, skip_corrupt, monitoring, cluster_owner, dependencies, compression, compress_for, dropped, read_only, segment_created, result_cache)

as

select o.name,

decode(bitand(t.property,2151678048), 0, ts.name,

decode(t.ts#, 0, null, ts.name)),

decode(bitand(t.property, 1024), 0, null, co.name),

decode((bitand(t.property, 512)+bitand(t.flags, 536870912)),

0, null, co.name),

decode(bitand(t.trigflag, 1073741824), 1073741824, 'UNUSABLE', 'VALID'),

decode(bitand(t.property, 32+64), 0, mod(t.pctfree$, 100), 64, 0, null),

decode(bitand(ts.flags, 32), 32, to_number(NULL),

decode(bitand(t.property, 32+64), 0, t.pctused$, 64, 0, null)),

decode(bitand(t.property, 32), 0, t.initrans, null),

decode(bitand(t.property, 32), 0, t.maxtrans, null),

decode(bitand(t.property, 17179869184), 17179869184,

ds.initial_stg * ts.blocksize,

s.iniexts * ts.blocksize),

decode(bitand(t.property, 17179869184), 17179869184,

ds.next_stg * ts.blocksize,

s.extsize * ts.blocksize),

decode(bitand(t.property, 17179869184), 17179869184,

ds.minext_stg, s.minexts),

decode(bitand(t.property, 17179869184), 17179869184,

ds.maxext_stg, s.maxexts),

decode(bitand(ts.flags, 3), 1, to_number(NULL),

decode(bitand(t.property, 17179869184), 17179869184,

ds.pctinc_stg, s.extpct)),

decode(bitand(ts.flags, 32), 32, to_number(NULL),

decode(bitand(o.flags, 2), 2, 1,

decode(bitand(t.property, 17179869184), 17179869184,

ds.frlins_stg, decode(s.lists, 0, 1, s.lists)))),

decode(bitand(ts.flags, 32), 32, to_number(NULL),

decode(bitand(o.flags, 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值