关于Oracle12c连接报错的问题
这段时间因为项目原因,接触到了Oracle12C,其实问题很简单,就是pl/sql developer能够访问数据库服务端即可,却碰到了奇奇葩葩的问题,现分享一下。
1、在java端报Ora-12505错误,即TNS:listener does not currently know of SID given in connect descripter。
注:找数据库管理员,数据库管理告知给的是数据库服务名称,改完以后,暂时不报该错误。
2、在pl/sql developer客户端报Ora-01017错误,即提升invalid username/password.logon denied.
注:找数据库管理员帮忙查看,在他的客户端登陆没问题,但在这边的客户端登陆还是有问题
3、通过网上查证原因,为何不能登陆问题,原因是Oracle低版本访问Oracle12c服务器存在兼容性问题,但因数据库服务器不在本地维护,且不能擅自变更配置或重启,只能考虑客户端的解决方案。
3.1注:在cmd里先找到安装程序的位置再执行命令
setup.exe -ignorePrereq -J"-Doracle.install.client.validate.clientSupportedOSCheck=false"
3.2修改sqlnet.ora
1)在服务器环境,修改sqlnet.ora,添加以下两行:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
其中的数字代表了可允许连接的最小版本号。
2)重启监听服务:lsnrctl restart
3.3对Oracle新增用户进行密码变更,使得兼容性生效。
ALTER USER username IDENTIFIED BY password;
selectusername,account_status,default_tablespace,created,password_versions from dba_users;
3.4创建c##用户,create user c##test identified by test;
其中3.1没什么效果,3.2因无法检查数据库环境,3.3修改了密码验证还是没什么用处,3.4方案dba不肯做
4、死胡同里的一条路,变更Oracle客户端版本
通过网上搜索,找到了客户端和服务端的一张兼容表,大意就是只有11.2.0.3及以上的版本才能支持访问Oracle12c的相关版本。
关于客户端到服务器端相互之间的兼容性如下表
5、安装Oracle12c新客户端,又报INS-30131错误,即
Initial setup requierd for the execution of installation failed
注,再次查询百度,发现该问题由于之前的Oracle客户端的java版本导致的,删掉重装。
6、OK