突然ora01017怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了突然ora01017怎么解决相关的知识,希望对你有一定的参考价值。

ora017,网络错误代码,常见于使用路由器上网的时候,如果电脑连接了路由器的无线信号,但是却上不了网,很可能就是电脑的网卡驱动没有正确安装所导致的。 1、路由器和电脑连接的宽带网线是什么类型,如果是光猫直接连接电脑,那么在电脑上面使用“宽带连接”来拨号上网。如果是使用路由器连接的,那么需要进入路由器后台设置一下。如果是2.4G无线连接的,那么还需要将无线路由器的SID和电脑的无线网卡名称进行匹配。 2、如果是直连猫的网线,先断开,然后将网线接到路由器的LAN口和电脑连接,先不要接到路由器的WAN口。 3、然后打开电脑的“本地连接”,点击“属性”-“常规”-“ Internet协议版本4”,在里面找到并双击“使用下面的DNS服务器地址”。 参考技术A 今天在使用JDBC时出现了无法连接数据库的情况
如下图

然后我去数据库端测试 确认了密码和帐号是否正确
确实是没有错呀

连接都是成功 但是程序运行就是报ora-01017。

以下是我的解决方法 给大家参考 希望能帮到大家
1.先运行cmd
2.输入sqlplus 然后回车
3.它会让你输入你的账户和密码
4.输入成功有个 SQL> 的提示
5.在提示后面输入 修改账户密码的语句
例子
SQL> alter user 你的帐号 identified by 你的新密码;
然后回车 它就会显示修改成功。
然后你在数据库重新登录测试一下 填的是新密码
这样就可以啦!!!
参考技术B 最近安装了一套RHEL 7.2 x86-86的Oracle 12.2.0.1单机测试库,导完数据交给业务后,业务反馈使用PL/SQL Developer连接时报如下错误:

请点击此处输入图片描述

赶紧查了查MOS,原来在默认情况下Oracle 12.2对客户端版本有限制,主要是由sqlnet.ora中的以下两个参数控制:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

这两个参数默认是11,表明默认只允许11g的客户端进行连接,考虑到很多PC端 plsql developer用的客户端都是10g,把这两个参数改为10:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10

SQLNET.ALLOWED_LOGON_VERSION_CLIENT参数主要是当数据库作为dblink的客户端时使用,设置后无需重启监听和数据库就可以生效。对于RAC,Oracle读取的这两个参数是在RDBMS的ORACLE_HOME里,而不是GRID的ORACLE_HOME里。

解决完这个问题,有些客户端可以连接了,但是有些客户端报:ORA-01017: invalid username/password。于是我做了一些测试,发现在10.2.0.4版本的客户端连接会报ORA-01017,而10.2.0.5的版本可以正常连接,11.2.0.3、11.2.0.4和12.2.0.1的客户端也都没有问题,其它版本没有找到相关客户端,也就没有测试。

这里已经设置了10g客户端可以连接12.2的数据库,但为什么10.2.0.4的客户端还会报ORA-01017口令错误,而10.2.0.5客户端就可以连接。

经过检查,在Oracle 12c的数据库中(其实从11g开始就有了),dba_users视图上有个字段是password_versions,该值情况如下:

SQL>set linesize200

SQL>column username format a15

SQL>column account_status format a18

SQL>column default_tablespace format a25

SQL>column password_versions format a20

SQL>select username,account_status,default_tablespace,created,password_versions from dba_users where username='CRM';

USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS

-------------------------------------------------------------------------------

CRM OPEN TBS_CRM_TS_S12017-06-0621:36:1911G12C

password_versions表明当前CRM用户口令的认证方式是11g和12c,所以10.2.0.4客户端连接出现了问题。那如何支持10g的认证方式呢,其实很简单,只要确认sqlnet.ora中的SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT已经设置为10,然后使用alert user xxx identified by xxxxxx后,PASSWORD_VERSIONS就支持10g的认证方式了,如下:

SQL>set linesize200

SQL>column username format a15

SQL>column account_status format a18

SQL>column default_tablespace format a25

SQL>column password_versions format a20

SQL>select username,account_status,default_tablespace,created,password_versions from dba_users where username='CRM';

USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS

-------------------------------------------------------------------------------

CRM OPEN TBS_CRM_TS_S12017-06-0621:36:1910G11G12C

所以整个问题的过程如下:在Oracle 12c上安装建库并迁移数据后,由于前期未设置SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT为10,导致创建的用户不支持10g的口令认证方式。而修改这两个sqlnet参数后,数据库里用户的口令认证方式未发生变化,所以10.2.0.4客户端连接不上服务器,报ORA-01017。使用alert user xxx identified by xxxxxx修改口令后,由于sqlnet中的这两个参数已经修改为支持10g客户端的连接,所以dba_user中的password_versions也相应地修改为支持10g的认证方式,所以10.2.0.4版本的客户就可以连接数据库了。

所以当一些客户端是10.2.0.4的应用需要注意了,如果数据库服
参考技术C ora 01017问题解决办法 原创

码龄10年

关注
SQL> startup
ORACLE instance started.

Total System Global Area 914358272 bytes
Fixed Size 2088184 bytes
Variable Size 528483080 bytes
Database Buffers 377487360 bytes
Redo Buffers 6299648 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01110: data file 8: '/var/opt/gssyneeadb/gssy_neeadb.dbf'

SQL> ALTER SYSTEM SET "_allow_resetlogs_corruption"=TRUE SCOPE=SPFILE;

System altered.

SQL> shutdown
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 914358272 bytes
Fixed Size 2088184 bytes
Variable Size 528483080 bytes
Database Buffers 377487360 bytes
Redo Buffers 6299648 bytes
Database mounted.
SQL> alter database datafile '/var/opt/gssyneeadb/gssy_neeadb.dbf' offline drop;

Database altered.

SQL> shutdown
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 914358272 bytes
Fixed Size 2088184 bytes
Variable Size 528483080 bytes
Database Buffers 377487360 bytes
Redo Buffers 6299648 bytes
Database mounted.
Database opened

ora-64203 怎么解决

参考技术A ORA-64203错误, 可以通过分块再拼接的方式来解决。

可参考如下:

使用to_char(wm_concat(item))的时候报ORA-64203错误
出错原因:由于concat的item项目太多,导致合成后的字符串长度超出数据库char字段的缓冲区限制

通过DBMS_LOB.SUBSTR把wm_concat(item)分成10块,取到后再拼接起来

Sql代码
DBMS_LOB.SUBSTR(wm_concat(item),1000,1),
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)

或者直接在oracle中用||连接起来,直接返回

Sql代码
DBMS_LOB.SUBSTR(wm_concat(item),1000,1) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)
参考技术B ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据。

字符串长度超出数据库栏位缓冲区限制, 修改缓冲区,或者调整栏位长度。

以上是关于突然ora01017怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!

ORACLE RAC19C到单实例ADG DUPLICATE ORA-01017 错误的解决办法

ORA-01017 invalid username/password;logon denied (密码丢失解决方案)

oracle12c 可行的解决办法:ORA-01017: invalid username/password; logon denied

ora-64203 怎么解决

数据库管理ORA-01017错误及部分的常见典型案例