最近新安装了一台Oracle12C数据库服务器,非容器模式,安装完成后正常建立表空间和用户,在imp命令导入备份时发现无论如何都不能登录。SQL developer、pl/sql Developer和sqlplus都不能登录。
在网上百度的结果大部分都是说因为低版本的Client链接12C以上Server版本,Server端的加密版本过高引起的。解决方法是修改sqlnet.ora文件。
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
我的情况跟网上的不一样,我是在Server服务器上用相同版本的sqlplus都无法登录,用户名和密码各种大小写组合都试过,也不行。重设密码后也不行。明显不是由于上述原因引起的。再一次修改完密码后顺手重启了一下数据库。发现报ORA-32004: obsolete or deprecated parameter(s)。说明启动参数中有非法或过时的参数。
回想起在建完实例之后设置过 sec_case_sensitive_logon,这个参数是强制指定Oracle 11G的密码不区分大小写。在测试环境中图省事儿,每次安装新的数据库之后都要设定一下这个参数。猜测就是这个参数在12C中已经取消了。
alter system set sec_case_sensitive_logon=false;
解决方法:
- 用sys用户在服务器本地登录
sqlplus / as sysdba
- 重置参数文件
alter system reset sec_case_sensitive_logon;
- 重启服务
shutdown immediate; startup;
再用普通用户登录数据库,恢复正常了。