Oracle问题笔记
[*]ORA-28040 没有匹配的验证协议
[*]问题出现场景
oracle数据库为12c,应用使用的jdbc或客户端工具是11g版本一下,连接12c数据库时会报ora-28040错误。
[*]解决办法
在Oracle服务端的$ORACLE_HOME/network/admin/sqlnet.ora文件中添加:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
反面10是对应客户端工具的版本号,假如客户端工具版本很低,可以进行调解。
这时,再次连接数据库时,会报用户暗码错误。必要修改一次数据库暗码就可以了。
alter user username identified by "暗码";
按上述方法利用后,不再报“ORA-28040 没有匹配的验证协议”的错误了,但仍报“ORA - 1017用户名/口令无效; 登录被拒绝”错误,解决方法见第二条。
[*]ORA-1017用户名/口令无效; 登录被拒绝
参考:https://www.cnblogs.com/freepc/p/16309749.html
一、出现症状
1、使用sqlplus连接正常
2、C#使用10g的ODP.NET连接时,报上面的错误
二、原因
1、Oracle11G之前暗码是不区分大小写的,从11G开始默认暗码区分大小写
2、使用10G的ODP.NET时,会自动把暗码转换成大写
三、解决办法
1、给连接字符串中暗码使用加上引号,如许暗码就不会转成大写了
2、换成11G客户端
3、修改数据库,禁用大小写敏感模式:ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE
因我的连接字符串是写在XML文件里,在XML文件里“引号”是必要转义的,现提供XML中常用的转义字符:
<
<
小于号
>
>
大于号
&
&
和
'
'
单引号
"
"
双引号
末了解决方法:
CMD进入命令行,输入以下命令:
sqlplus / as sysdba
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
[*]用户被锁定,解锁
查询是否被锁
select username, account_status, lock_date from dba_users;
oracle解锁用户
ALTER USER username ACCOUNT UNLOCK;
[*]修改用户名、暗码
修改用户名:
update user$ set name='新用户名' where name='旧用户名'
修改暗码:
alter user username identified by "暗码";
[*]修改表字段的排序
(1)以数据库管理员身份连接数据库
附修改管理员暗码方法:
[*]在Oracle服务端命令行中执行命令:sqlplus "/ as sysdba"
[*]然后执行SQL语句:alter user SYS identified by newpassword;
“newpassword”为修改后的新暗码(注意暗码里假如有特殊字符大概会失败)。
https://i-blog.csdnimg.cn/direct/4ba7bb142e14499fb96eac580cb85a3b.png
(2)查询表的Id
使用以下SQL查询表的Id,其中“UserName”为用户名,“TableName”为待查询的表名:
select object_id from all_objects where owner = 'UserName' and object_name = 'TableName';
(3)更新表字段排序
在PLSql中通过以下sql查询并修改字段排序,其中“78387”为上一步查到的表Id:
select obj#,col#,name from sys.col$ where obj#=78387 for update;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]