0 0

连接oracle报错:ORA-01017:invalid username/password:logon denied15

今天在客户那里发现一个很是诡异的问题:
    登录web项目后,进行登录,系统立即报错,报错如下:
java.sql.SQLException:ORA-01017:invalid username/password:logon denied
      at oracle.jdbc.dbaccess.DBEroor.throwSqlException(DBError.java:134)
      at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
      at oracle.jdbc.ttc7.03log.receive2nd(03log.java:496)
      at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278)
      at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
      at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
      at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
      at java.sql.DriverManager.getConnection(DriverManager.java:512)
      at java.sql.DriverManager.getConnection(DriverManager.java:171)
      at **.datasource.ConnectionPool.createConnectionSlit(ConnectionPool.java:295)
      at **.datasource.ConnectionPool.getConnection(ConnectionPool.java:358)
      at **.datasource.DataSourceUtils.getConnection(DataSourceUntils.java:386)
      at **.query.Pagination.getResultSet(Pagination.java:218)
      at **.jsp.index_jsp._jspService(index_jsp.java:296)

后面出现自己定义的报错:Failed to create new connection.,maybe due to the limitation of resource!
接着:java.sql.SQLException:Get ConnectionPool fail.null
      at **.datasource.ConnectionPool.createConnectionSlit(ConnectionPool.java:295)
      at **.datasource.ConnectionPool.getConnection(ConnectionPool.java:358)
      at **.datasource.DataSourceUtils.getConnection(DataSourceUntils.java:386)
      at **.query.Pagination.getResultSet(Pagination.java:218)
      at **.jsp.index_jsp._jspService(index_jsp.java:296)

其实提示的原因很明显,就是说我在ConnectionPool.java第295行利用在该java文件中定义好的用户名和密码去创建连接时,提示连接失败。
我解决方法如下:
(1)首先确认了该用户名和密码无误,因为自从系统部署后没有更改过任何属性配置文件;
(2)先将web项目所在的服务器进行了tomcat的重启;重启后依旧;
(3)怀疑oracle服务器down掉了,于是用oracle的Enterprise Manager Console,用该用户也能登录上。
由于没有配置PL/SQL工具,而且该数据库为私密数据,因此没有用ConnectionPool.java配置的用户名和密码进行登录,不知道有没有影响
网上也查了一些内容,但是感觉都帮助不大,希望各位大大能给我出出主意,该项目星期一要继续使用,时间紧迫啊,谢谢各位!

上面涉及函数语句如下:
ConnectionPool.java
        private String jdbcDriver = "oracle.jdbc.driver.OracleDriver"; 
private String jdbcUrl = "jdbc:oracle:thin:@serverIP:1521:ora81";
private String user = "admin"; // "root";
private String password = "1234"; // "";

        private ConnectionSlit createConnectionSlit() {
try {
ConnectionSlit slit = new ConnectionSlit();
slit.connection = DriverManager.getConnection(jdbcUrl, user,
password);

slit.used = false;
slit.start = 0;
slit.time = 0;
return slit;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

        public Connection getConnection() {
        Thread thread = Thread.currentThread();
        String dumpString = "";
        if (dumpStackTrace) {
            System.out.println("Thread: " + thread
                    + " is requesting connection!");
            try {
                throw new Exception("thread dump");
            } catch (Exception e) {
                ExceptionSerializer es = new ExceptionSerializer(e);
                dumpString = es.serialize();
            }
        }
        synchronized (pools) {
            while (true) {
                ConnectionSlit slit = findFreeSlit();
                if (slit != null) {
                    slit.start = System.currentTimeMillis();
                    slit.used = true;
                    slit.thread = thread;
                    slit.dumpStack = dumpString;
                    return slit.connection;
                } else {
                    if (MAX_SIZE != 0 && pools.size() == MAX_SIZE) {
                        try {
                            System.out
                                    .println("waiting for connection to be freed...");
                            pools.wait();
                        } catch (InterruptedException ie) {
                        }
                    } else {
                       slit = [color=red]createConnectionSlit();
                        if (slit == null) {
                            System.err
                                    .println("Failed to create new connection, maybe due to the limitation of resource!");[/color]
                            return null;
                        }
                        slit.start = System.currentTimeMillis();
                        slit.used = true;
                        slit.thread = thread;
                        slit.dumpStack = dumpString;
                        pools.addElement(slit);
                        return slit.connection;
                    }
                }
            }
        }
    }

    DataSourceUntils.java
    public Connection getConnection() throws SQLException {
    Connection conn = null;
    ConnectionPool cp=ConnectionPool.getConnectionPool(datasource);
    try {
      if (cp != null) {
        cp = ConnectionPool.getConnectionPool(datasource);
        conn = cp.getConnection();
        conn.setAutoCommit(true);
        //System.out.println(datasource+" after get and count is "+cp.getConnectionCount());
        return conn;
      }
    }
    catch (Exception ne) {
      throw new SQLException("Get ConnectionPool fail." + ne.getMessage());
    }
    return conn;
  }

  Pagination.java
  DataSourceUtils dbu1 = new DataSourceUtils("zzz");
  Connection conn1 = null;
    try {

      try {
        PreparedStatement stmt1;

       ResultSet rs1;
        conn1 = dbu1.getConnection();
        stmt1 = conn1.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
                                       ResultSet.CONCUR_READ_ONLY);

        rs1 = stmt1.executeQuery();
        rs1.last();
        totalRows = rs1.getRow();
2010年10月15日 23:20

1个答案 按时间排序 按投票排序

0 0

无效的用户名和密码,拒绝访问是吧。
很显然这是一个典型的sysdba登录的问题。

我猜可能是被锁住了。
oracle 数据库每一个月就对用户加锁,用户要登陆oracle 数据库首页[system/自设的口令] ——〉管理——〉用户管理——〉设置用户为“未锁定”——〉然后进入命令行——〉connect——〉OK!
如果此方法不行,在试一试下面的吧。
----------------------

首先要查看sqlnet文件。SQLNET.AUTHENTICATION_SERVICES= (NONE) 启动密码文件验证了,

接着查看$ORACLE_HOME/dbs/下有没有orapw$ORACLE_SID的文件,确定有。

接着查看remote_login_passwordfile的值,我估计这时他的值一定是NONE,而不是EXCLUSIVE

不过怎么来确定这个推断了。remote_login_passwordfile是init的参数,可以通过show parameters remote_login_passwordfile来查看,也可以直接查看spfile文件,spfile虽然是二进制文件,不过里面的内容是看到文本的

more $ORACLE_HOME/dbs/spfile$SID.ora.

最后确实是否是remote_login_passwordfile=none。
如果确实是none的话,
问题大致上应该确定了,就是remote_login_passwordfile的设置问题了。先屏蔽掉sqlnet.ora里SQLNET.AUTHENTICATION_SERVICES= (NONE)使得本机的 sqlplus “/ as sysdba” 可以进去

SQL>startup mount

SQL>show parameters remote_login_passwordfile;

这时出来的值是none,修改值为exclusive

SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;

SQL>shutdown immediate

SQL>startup

SQL>select * from v$pwfile_users;

看有没有结果出来 ok

2010年10月16日 08:30

相关推荐

    ORA-01017: invalid username/password; logon denied Oracle数据库报错解决方案一-附件资源

    ORA-01017: invalid username/password; logon denied Oracle数据库报错解决方案一-附件资源

    自己做了一个asp.net三层架构的demo,需要连接Oracle数据库.txt

    ORA-01017: invalid username/password; logon denied,本人学生一枚,自己做了一个asp.net三层架构的demo,需要连接Oracle数据库,里面的字符串为: private static string DBConnectstring = "Data Source=...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-01017: invalid username/password; logon denied`: 输入的用户名或密码不正确。检查数据库凭证的准确性。 3. **网络问题** - `java.sql.SQLException: ORA-01034: ORACLE not ...

    解决navicat 链接oracle时出现的各种问题

    3. ORA-01017: invalid username/password; logon denied 遇到登录被拒绝的问题,首先要确认用户名和密码是否正确,然后检查用户是否有权限登录。您可以通过Oracle提供的sqlplus工具来创建新用户和授予权限。例如,...

    服务器版SAS 逻辑库设置的一个错误解决方法,EG中打开逻辑库会报错

    - **错误消息**:`[Error] ORACLE连接错误: ORA-01017: invalid username/password; logon denied` - **源代码位置**:`SAS.EG.SDS.Model` 根据错误报告和技术信息,可以看出问题在于逻辑库“Retail_val”的路径...

    oracle 连接数据库命令

    错误消息可能类似于:“ORA-01017: invalid username/password; logon denied”。这是因为数据库实例尚未启动,无法接受连接请求。 ##### 2. 解决连接问题 - **解锁账户** 如果连接失败是因为账户被锁定,可以...

    数据库知识

    - **常见错误**:“ORA-01017: invalid username/password; logon denied” - 这个错误通常意味着提供的用户名或密码无效。 - **解决方案**: - 检查用户名和密码是否正确。 - 如果忘记了密码,可以联系数据库...

    oracle sysdba 密码解释

    ORA-01017: invalid username/password; logon denied ``` #### 三、密码文件与SYS用户 在Oracle中,`SYS`用户默认具有`SYSDBA`权限。这意味着`SYS`用户可以通过特定的命令以`SYSDBA`身份登录,无需提供密码。...

    Oracle.ManagedDataAccess拒绝登陆oracle

    该问题通常表现为错误提示:“ORA-01017: Invalid username/password; logon denied”。此错误可能由多种因素导致,如用户名或密码错误、网络配置问题等。但根据提供的上下文信息,本案例中问题根源在于FIPS兼容性...

    oracle最全面的错误疑难解决方案和总结文档.docx

    登录失败:“ORA-01017: invalid username/password; logon denied” 如果你尝试使用默认的 `sys` 或 `system` 用户名和密码登录时遇到了这个问题,那么可能是因为你在安装或配置过程中更改了这些用户的默认密码...

    oracle数据库连接

    当尝试次数达到3次时,账户将被锁定,之后的登录尝试将会收到`ORA-01017: invalid username/password; logon denied`错误。 要解锁已锁定的账户,通常需要执行以下操作: ```sql ALTER USER username ACCOUNT ...

    FNDCPASS Troubleshooting Guide For Login and Changing Applicatio

    7. **ORA-01017: invalid username/password; logon denied**:输入的用户名或密码无效,检查输入是否正确,并确保与数据库中的信息匹配。 8. **adpatch Errors: The Given ORACLE Password Is Not The Correct ...

Global site tag (gtag.js) - Google Analytics