Oracle问题笔记

打印 上一主题 下一主题

主题 1004|帖子 1004|积分 3012

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  • 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中常用的转义字符:

<

<

小于号

>

>

大于号

&

&


&apos;

'

单引号

"

"

双引号


末了解决方法:

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”为修改后的新暗码(注意暗码里假如有特殊字符大概会失败)。


(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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表