Oracle常见错误及解决方案汇总

1、 错误提示ORA-00933: SQL command not properly ended in?

可能的原因:

1)语句写的顺序不正确,比如WHERE语句写在了GROUP BY后面;

2)使用了含有ORDER BY或INNER JOIN子句的INSERT、DELETE语句;

3)使用了含有INNER JOIN子句的UPDATE语句;

4)使用了条件中含有自连接表字段比较的Triangular Join;

解决方案:

检查语句的子句组合是否正确,检查语句的使用顺序是否正确,比如GROUP BY是否放在WHERE之后,ORDER BY是否放在GROUP BY之后。

参考链接:https://www.cnblogs.com/baiyangcao/p/oar-00933-insert-into-select.html

2、 ORA-01830:日期格式图片在转换整个输入字符串之前结束

错误原因:

date类型不能包含秒以后的精度,如日期:2012-06-20 21:01:24,如果使用to_date()函数来处理这种格式的时间,就会出现这种错误。

解决方案:

把to_date(date,’yyyy-mm-dd’)改成to_date(substr(date,1,10),’yyyy-mm-dd’),如果date本身不是字符串格式,在使用substr之前还需要先用to_char()转换成字符串类型,并且在使用substr时,注意验证取数长度,也就是substr函数的第二、三个参数。

3、ORA-01652:无法通过 128 (在表空间 TEMP 中) 扩展 temp 段

这个问题是我同事遇到的,我和她运行同样的代码,但是我的没错,她的出现了这个错误,而且她把整段代码删除后重贴,错误就解决了,很奇怪。

可能的原因:

1)临时表空间大小做了限制,而当进行order by、group by这些排序相关的运算,或者访问视图等操作时,空间大小受到限制就会出现这类错误。

2)还有一种我自己猜测的原因,就是在写join的时候,没有注意到匹配条件,导致产生了笛卡尔积,那么基本表很大的情况下,再大的临时表空间也可能会不够用,所以写join或者用where子句实现join功能的时候,一定要注意匹配条件。

解决方案:

扩展临时表空间(这个一般如果自己不会,可以找DBA帮忙?):

方法一、增大临时文件大小:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize100m;

Database altered.

方法二、将临时数据文件设为自动扩展:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;

参考链接:https://www.cnblogs.com/songling/archive/2011/03/04/1970965.html

4、ORA-00955: 名称已由现有对象使用:

可能的原因:

1)表重名;

2)列重名;

3)在Oracle里写了drop table if exists这样的语句。

解决方案:

如果出现了第三种情况,果断把if exists删掉就好了,这个在Oracle里是错误写法,主要还是SQL语言可移植性差。如果没出现第三种情况,那就老实检查表名和列名的重名情况吧。

5、ORA-01861: 文字与格式字符串不匹配:

可能的原因:

使用to_date函数时,且很有可能转换的参数是一个未可知的格式,时间参数的格式和要转换的格式不匹配,这个原因和ORA-01830错误类似,解决方案也类似,要保证时间参数的类型、格式,时间处理函数都没有出错才行,而且时间处理函数在每个数据库里都不太一样,要尤其注意。

解决方案:

先把要转换的参数换成字符串格式,再用to_date函数,更保险一点。

6、ORA-00904:标示符无效

可能的原因:

1)列名写错了,和数据表中的列名不一致

2)中文列名没带引号

7、ORA-00979: 不是 GROUP BY 表达式:

可能的原因:

SELECT子句里用到的除了count等计算函数里用到的列以外,其他的列没有在GROUP BY子句里写出来。因为数据库有这个要求,除了函数里面的列名,其他的必须前后都有。

解决方案:

老实在GROUP BY里面把列名都加上。不过如果想在SELECT里面取很多列,还加上计算函数的输出结果,也是不太现实,因为一般计算函数都是针对多行而言的,如果在SELECT子句里写了一些唯一标识的字段,比如id类字段,那么在GROUP BY里也必须加上这个字段,那COUNT也就没意义了。所以如果又要计算,又要取很多列,可能还是老实做join比较靠谱。

8、ORA-00923:未找到要求的 FROM 关键字

可能的原因:

取别名的时候用了关键字,比如用size、date之类的做列名

解决方案:

别名的选择尽量避开这些关键字,最好是所有的列名都避开这些关键字。

9、ORA-00937: not a single-group group function

原因和解决方案都和ORA-00979类似

10、ORA-00911:invalid character

可能的原因:

这个问题是在Python中写SQL代码的时候碰到的。因为Python里的SQL代码不能有分号,但是在SQL里写代码的时候习惯带分号,所以出现了这个错。

解决方案:

删掉分号就好了,其实在SQL里执行SQL语句也可以没有分号的,所以我现在都直接不写分号了,复制到Python里运行自然也就不会出现这个错误了。

11、ORA-01476: 除数为 0:

可能的原因:

计算除法的时候,分母为0

解决方案:

用decode函数在判断分母为0的时候把分母设为不为0的函数即可。比如decode(num,0,1) 。

12、ORA-01840: 输入值对于日期格式不够长

可能的原因:

1)日期本身不对,比如写了2月29日,结果根本没有这天

2)时间格式不对,比如你要求转换成带时分秒的,结果字符串并没有这么长

解决方案:

检查数据类型、格式、数据是否正确,时间上出的错,大都是这么检查,然后用to_char,substr和改变要转换的时间格式来组合解决问题。

13、SQL执行错误#1248,提示Every derived table must have its own alias

可能的原因:

出现这个错误时,我写了很多个select语句,就是层层过滤需要的信息,实现的功能是从一个表中先获取所有属于某个班的学生的id,再根据这些id从另一个表中获取这些学生所有课程的成绩得分,再从这次过滤的结果中根据课程进行Group by求均值。前面两个select语句都没出错,写到第三个的时候就报了这个错。

解决方案:

在用select过滤数据形成一个新的临时表时,最好用as给这个表定义一个别名。如下:

select t.cno,avg(t.degree) from

(select * from score where sno in

(select sno from student where class=95033)) as t  #这里写了三个select语句,如果不重名名的话,会报错

group by t.cno

1

2

3

4

不写as t就报错了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容