时间:2018年12月24日星期一,12:19
异常:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
触发环境:
Eclipse,首次使用java连接Oracle数据库,驱动已安装。
排查过程:
1、 在SQL*PLUS上连接数据库,判断该数据库是否可用。
2、 核实SID是否存在。在SQL*PLUS中使用“SELECT name FROM v$database;”查询当前实例名称,与url中的SID进行比对。
3、 检查实例是否已开放。在SQL*PLUS中使用“SELECT status FROM v$instance;”C查询当前实例状态是否为OPEN。
4、 将“1521”和“PET_SHOP”之间的“:”换成了“/”,即“jdbc:oracle:thin:@localhost:1521/PET_SHOP”,问题解决。
原因:
jdbc连接字符串有误,系统无法识别SID。
原url为:“jdbc:oracle:thin:@localhost:1521:PET_SHOP”。
后记:
网络上也有用“:”的连接串并且并且成功了,这是为什么呢?
时间:2018年12月24日星期一,22:19
异常:
ClassNotFoundException:oracle.jdbc.OracleDriver
触发环境:
Eclipse,中午还能用晚上就不行了,不知道触发了什么东西。
排查过程:
1、 检查ORACLE_HOME变量值是否有错,发现变量好好的没有任何问题。
2、 重启Tomcat判断是否是服务器的问题,发现和服务器没关系。
3、 在“oracle.jdbc.OracleDriver”和“oracle.jdbc.driver.OracleDriver”之间徘徊,最后发现没有区别。
4、 修改了jar的位置,问题解决。
原因:
驱动所需的jar包需放在WEB-INF/lib文件下,然后再通过配置路径导入,否则会找不到包。
后记:
奇怪的地方在于中午就可以运行的代码晚上就得换个方式才能动,这是为什么呢?
时间:2018年12月25日星期二,08:18
异常:
ORA-00911: 无效字符
触发环境:
Eclipse,环境配置正常。
排查过程:
1、 检测sql语句“SELECT * FROM pet_type;”是否符合规范。删去“;”后发现异常解除,变成无效的列索引。
原因:
在使用SQL语句时不能使用“;”,Oracle无法识别。