
1、问题复现:Spring boot 应用启动时候正常,但是页面访问后台接口,程序再访问数据库时,控制台报错如下:没有匹配的身份验证协议
Caused by: java. sql. SQLExceptiona ORA-28040: No matching authentication protocol
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java 112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java: 331)
....
2、产生原因:当时环境是:Java jdk 1.8 + Spring boot ,在开发环境时是 Oracle 11g,此时运行正常,后面到测试环境换成 Oracle 12C,就发生上面的错误,经过检查发现原来是 .jar 文件里面打了两个不同版本的 Oracle 驱动。
3、解决方式:直接用压缩工具打开 .jar 文件,然后手动删除多余的 ojdbc14-x.x.x.jar 文件,只留下 ojdbc8 版本的驱动即可。
OracleOraDb11g_home1TNSListener服务启动后停止
1、问题复现:有时候连接 Oralce 的时候发现连接不上,然后打开 "services.msc" 服务面板发现 xxxxTNSListener 监听服务没有启动,当手动启动监听服务的时候,它d框提示:“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”
2、产生原因:Oracle 数据库通常都会提供远程访问,比如小张电脑上安装了 Oralce 数据库,小李、小刘就可以直接访问小张的Oracle。Oracle 开启远程访问,需要在配置文件中设置本机 ip 地址,这样其它人才能通过 IP 访问,然而当 IP 在某些情况下发生变化时,比如切换了网络,或者是动态 IP 等情况,Oracle 监听器监听的 IP 与计算机实际 IP 就会不一致,然后就会发生上面的错误。
3、解决方式:找到 Oracle 数据库安装目录下的 listener.ora 文件,比如 C:appThinkproduct11.2.0dbhome_1NETWORKADMINlistener.ora。然后修改其中监听的 IP 为 Oralce 安装的计算机 IP 地址,比如下面的 192.168.3.195。最后再次启动监听服务即可正常。
◆ 如果你不能运行 /runInstaller 提示x 错误 请使用root 输入如下命令#xhost +
◆ 如果当你输入dbca命令之后在最后一步会莫名其妙的发生界面消失 并在命令行出现如下错误消息
/oracle/product/ /bin/dbca: line : Killed $JRE_DIR/bin/jre DORACLE_HOME=$OH DJDBC_PROTOCOL=thin mx m
classpath $CLASSPATH
oracle sy *** an assistants dbca Dbca $ARGUMENTS时 要解决这个问题 只需要执行下面命令修改dbca脚本
vi $ORACLE_HOME/bin/dbca
从第 行开始 将第 共 行都用 # 符号注释掉 结果如下
#if [ f /etc/rac_on ]then
#Run DBCA
$JRE_DIR/bin/jre –native –DORACLE_HOME=$OH……
#else
#Run DBCA
#$JRE_DIR/bin/jre –DORACLE_HOME=$OH……
#fi
修改完成之后再运行dbca重建数据库 如果这一步没有做处理 将会导致创建的数据库没有init配置文件 无法启动
◆ ORA :missing or invalid password(s)
问题:
遇到 ORA missing or invalid password (口令缺失或无效) 错误 怎么办?
解答:
在设置数据库实例的密码时 注意不要以数字开头 否则您将会遇到 ORA missing or invalid password (口令缺失或无效) 错误
Oracle g 安装完成后 您可使用 dbca 命令创建新的数据库实例 或维护已有的数据库实例
如果您安装的是 Oracle XE 数据库 则必须反安装 Oracle XE 后重新安装 Oracle XE 并在安装过程中指定非数字开头的密码 (例如
password 或 pswd )
◆ 建库时候遇到的问题
ORA : specified operator does not exist
这是Oracle 的bug 可以忽略掉 安装完成后 在$ORACLE_HOME/rdbms/admin 目录下运
行utlrp sql 用于修补ORA 错误
解释
ORA : specified operator does not exist
This is a known issue (bug ) You can click on the Ignore button to continue
Once DBCA has pleted database creation remember to run the prvtxml plb script
from $ORACLE_HOME/rdbms/admin independently as the user SYS It is also advised
to run the utlrp sql script to ensure that there are no invalid objects in the database at this time
很多人进了sqlplus不会跑sql 其实很简单
比如我这里吧 登录之后 @/home/oracle/a sql
就行了
◆ 执行sqlplus出现的问题
error while loading shared libraries: libclntsh so : cannot open shared object file: No such file or directory
libclntsh so 这个库是oracle i OCI客户端运行时库 如果程序使用了oci读写数据库必定会装载这个库 它一般在/<oracle
安装路径>/product/ x x/lib 除非你没有安装oracle客户端的话(在安装时) 就会出现找不到这个库这个问题
如果安装了 那么程序运行时还是要在/etc/nf所列路径下 和LD_LIBRARY_PATH所列路径下 去寻找这个库 如果这两个地方都找不到就会报错 说找不到这个库 我估计你的/etc/nf下肯定没有包含/<oracle安装路径>/product/ x x/lib这个路径 但你的用户shell启动脚本( bash_profile)设置了
LD_LIBRARY_PATH=/<oracle安装路径>/product/ x x/lib: 这个环境变量 所以你用用户账号运行程序是没问题的 但crontab有自
己的用户账号 crontab运行时并不会设置LD_LIBRARY_PATH=/<oracle安装路径>/product/ x x/lib: 所以就找不到库了
解决办法
将/<oracle安装路径>/product/ x x/lib路径加入/etc/nf 并运行ldconfig v(更新动态加载器缓存)就ok了
另外 执行sqlplus最好在本地 不要在SSH远程 不然会遇到
Error initializing SQL*Plus
Message file sp <lang>m *** not found
SP : You may need to set ORACLE_HOME to your Oracle sofare directory
这个错误
如果坚持要那么做得话 先执行source ~/ bash_profile
lishixinzhi/Article/program/Oracle/201311/16794
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)