文章目录
- 报错:ORA-00923: 未找到要求的 FROM 关键字
- 报错: ORA-00909: 参数个数无效
- RA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
- ORA-02083: database name has illegal character ' '
- OCI_INVALID_HANDLE
- ORA-00028: your session has been killed
- ORA-00001: unique constraint (USER.UIDX_USER_CODE_NUM) violated
- 无法将null插入 *.*
- ORA-02289: sequence does not existORA-02289: sequence does not exist
- ORA-01830: 日期格式图片在转换整个输入字符串之前结束
- ORA-01843:无效的月份 和 ORA-01855:要求 AM/A.M. 或 PM/P.M.
- ORA-12505:tns:监听程序当前无法识别链接描述符中锁给出的SID
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- ORA-01034: ORACLE not available
- ORA-30484: 丢失的此函数窗口说明
- ORA-01747: user.table.column, table.column 或列说明无效 异常解决方法总结
- 报错 ORA-00972: 标识符过长
- ORA-01830: 日期格式图片在转换整个输入字符串之前结束
- ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
- ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR
- ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR
- ORA-01861: 文字与格式字符串不匹配
- ORA-01810: 格式代码出现两次
- 异常信息:ORA-02299: cannot validate (T_USER.UNIQUE_A_B) - duplicate keys found
- ORA-06512、ORA-01830
报错:ORA-00923: 未找到要求的 FROM 关键字
这是最基本的报错了。
一般是因为语句不正确。
例如: sql语句列少了个逗号
报错: ORA-00909: 参数个数无效
一般是使用函数的时候,参数个数不对。
RA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
找到oracle安装目录下的listener.ora
文件,如地址为:
F:\app\chushiyun\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
添加:
重启listener即可。
docker的oracle11g listener.ora :
ORA-02083: database name has illegal character ’ ’
在创建dblink的时候报这个错。
首先要注意别有特殊字符。
然后还是不行。
百度下说是跟GLOBAL_NAME有关。
OCI_INVALID_HANDLE
场景: 执行sql出现这个提示
关闭连接,然后重新打开,还是这样。 发现是vpn没有连接。
一般是连接不上的问题。
ORA-00028: your session has been killed
session被杀掉。
一般出现在执行某个sql操作的时候,session突然被杀掉,导致页面一直无法获取响应。
刷新下即可。
ORA-00001: unique constraint (USER.UIDX_USER_CODE_NUM) violated
这是因为插入的时候,违反唯一约束的原则。
但是为什么update的时候也会报这个错啊?
这个也是有可能的,例如除了id之外还有code,number的联合主键。 需要根据id,修改code或者number,这个时候修改的code或number有可能会和已存在的冲突。
无法将null插入 .
说明该字段是主键,或者限制了非空。
这个问题不只出现在oracle中。
ORA-02289: sequence does not existORA-02289: sequence does not exist
一看就是少了sequence。
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
使用to_char 或 to_date的时候出现这个问题。
ORA-01843:无效的月份 和 ORA-01855:要求 AM/A.M. 或 PM/P.M.
注: 其实只要把数据库的格式查出来,参照着写即可。
ORA-12505:tns:监听程序当前无法识别链接描述符中锁给出的SID
1、oracle服务可能挂了。
2、oracle监听启动没。
3、sid确实写错了?
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
创建索引语句的时候报这个错:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
可能是因为改表有数据正被锁定,查询锁表并kill掉session即可。
ORA-01034: ORACLE not available
oracle命令行,输入关闭命令的时候报这个错,例如 shutdown immediate
可能原因,oracle服务根本就没启动,输入shutdown当然报错了,直接输入startup即可。
ORA-30484: 丢失的此函数窗口说明
执行的语句为:
报错提示信息:
ORA-30484: 丢失的此函数窗口说明
这是因为ROW_NUMBER() 是配合开窗函数使用的。
这里语法显然不对。
ORA-01747: user.table.column, table.column 或列说明无效 异常解决方法总结
一般是字段名和oracle的关键字名冲突了。
执行以下语句查看关键字有哪些,然后对比下:
方案一:修改字段名为非关键字(推荐)
方案二:关键字字段使用的时候要加双引号(比较麻烦,不推荐)
报错 ORA-00972: 标识符过长
创建触发器的时候提示: ORA-00972: 标识符过长
这是因为触发器的长度要求在30个字符以内,超过就会报这个错。
把名字改短点即可。
另外,表名长度过长也会报这个错。
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
一般是日期格式不对,例如:
传入的是 ‘2021-06-15 00:00:00’,
用的函数是 create_date = to_date(#{createDate,jdbcType=VARCHAR},‘yyyy-MM-dd’),那么就会报错。
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
这2个是一类问题,说明类型不对应,一般出现在case when语句中。
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR
该字段应该为number,但是返回的确是字符串,所以会报这个错。
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR
相似,略。
ORA-01861: 文字与格式字符串不匹配
一般是类型不一致。
最常见的就是date和字符串不对应,优先查这个。
如果不是date的问题,那么再看其他的。
ORA-01810: 格式代码出现两次
说明oracle日期的格式化不正确,最常见的就是分钟mi错写为mm。
异常信息:ORA-02299: cannot validate (T_USER.UNIQUE_A_B) - duplicate keys found
一般是添加唯一约束时,有重复值。 删掉表的重复数据再试下。
ORA-06512、ORA-01830
ORA-06512: at line 6; nested exception is java.sql.SQLDataException: ORA-01830: date format picture ends before converting entire input string
一般是日期格式化不对。
例如:
如果是在mybatis中,可以采用兼容性写法。 即: 可以先判断下长度,如果19位就用带时分秒的。
之前的写法:
兼容性写法: