ORA-00972: identifier is too long 问题处理

关于这个错误从报错提示来看,就是标识位置字段太长了,一般出现在别名长度问题上。这种情况对字段做出些修改即可。还有另外一种情况,也会报相同的错误,一条SQL可以在客户端工具如navicat,PLSQL等执行,但是却无法在SQL Plus中执行。出现这种情况一般是字符集的问题。

测试流程:

1)在SQL Plus中执行

SYS@proe>SELECT

a.tablespace_name "表空间名",

total / 1024 / 1024 "表空间大小单位M",

free / 1024 / 1024 "表空间剩余大小单位M",

(total - free) / 1024 / 1024 "表空间使用大小单位M",

Round(

(total - free) / total,

4

) * 100 "使用率 [[%]]"

FROM

(

SELECT

tablespace_name,

Sum(bytes) free

FROM

DBA_FREE_SPACE

GROUP BY

tablespace_name

) a,

(

SELECT

tablespace_name,

Sum(bytes) total

FROM

DBA_DATA_FILES

GROUP BY

tablespace_name

) b

WHERE

a.tablespace_name = b.tablespace_name; 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

20 21 22 23 24 25 26 27 28 29 30

a.tablespace_name "表空间名",

*

ERROR at line 2:

ORA-00972: identifier is too long

2)在navicat中执行

25c6d4c8802fb6e116f64c6faa5ec54b.png

可以看到在navicat中可以正常执行,但是在sqlplus中报错。

解决办法:

重新定义环境变量

[oracle@server1 ~]$ export NLS_LANG='american_america.AL32UTF8'

SYS@proe>SELECT

a.tablespace_name "表空间名",

total / 1024 / 1024 "表空间大小单位M",

free / 1024 / 1024 "表空间剩余大小单位M",

(total - free) / 1024 / 1024 "表空间使用大小单位M",

Round(

(total - free) / total,

4

) * 100 "使用率 [[%]]"

FROM

(

SELECT

tablespace_name,

Sum(bytes) free

FROM

DBA_FREE_SPACE

GROUP BY

tablespace_name

) a,

(

SELECT

tablespace_name,

Sum(bytes) total

FROM

DBA_DATA_FILES

GROUP BY

tablespace_name

) b

WHERE

a.tablespace_name = b.tablespace_name; 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

表空间名 表空间大小单位M 表空间剩余大小单位M 表空间使用大小单位M 使用率 [[%]]

--------------- --------------- ------------------- ------------------- --------------

SYSAUX 610 33.0625 576.9375 94.58

UNDOTBS1 90 67.4375 22.5625 25.07

USERS 6.25 .875 5.375 86

TBS_TRAN 100 98.875 1.125 1.13

SYSTEM 750 1 749 99.87

EXAMPLE 346.25 36.0625 310.1875 89.58

TEST_1 20 19 1 5

7 rows selected.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐