Oracle问题笔记

  1. 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用户名/口令无效; 登录被拒绝”错误,解决方法见第二条。

  1. ORA-1017用户名/口令无效; 登录被拒绝

参考:https://www.cnblogs.com/freepc/p/16309749.html

一、出现症状

 1、使用sqlplus连接正常

 2、C#使用10gODP.NET连接时,报上面的错误

二、原因

 1、Oracle11G之前密码是不区分大小写的,从11G开始默认密码区分大小写

 2、使用10GODP.NET时,会自动把密码转换成大写

三、解决办法

 1、给连接字符串中密码使用加上引号,这样密码就不会转成大写了

 2、换成11G客户端

 3、修改数据库,禁用大小写敏感模式:ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE

因我的连接字符串是写在XML文件里,在XML文件里引号是需要转义的,现提供XML中常用的转义字符:

<

<

小于号

&gt;

>

大于号

&amp;

&

&apos;

'

单引号

&quot;

"

双引号

最后解决方法:

CMD进入命令行,输入以下命令:

sqlplus / as sysdba

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;

  1. 用户被锁定,解锁

查询是否被锁
select username, account_status, lock_date from dba_users;
oracle
解锁用户
ALTER USER username ACCOUNT UNLOCK;

  1. 修改用户名、密码

修改用户名:

update user$ set name='新用户名' where name='旧用户名'

修改密码:

alter user username identified by "密码";

  1. 修改表字段的排序

(1)以数据库管理员身份连接数据库

附修改管理员密码方法:

  1. 在Oracle服务端命令行中执行命令:sqlplus "/ as sysdba"
  2. 然后执行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;

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值