记一次错误排查记录(JDBC使用SYSDBA身份连接ORACLE/修改ORACLE用户密码)

环境版本:

数据库:ORACLE 11g xe  (Release 11.2.0.2.0 Production)

JDK: 1.8.0_31

编译器:Eclipse Jee 2019-06

JDBC: 11.2.0.4 release of the Oracle JDBC

 

需要在登录的用户名后加上字符串"as SYSDBA"

    public static String DRIVER_NAME = "oracle.jdbc.driver.OracleDriver";
    public static String URL = "jdbc:oracle:thin:@localhost:1521:XE";
    public static String USERNAME = "system as SYSDBA";
    public static String PASSWORD = "root";

 

然后进行调用即可:

    public static Connection getConnection() {
        Connection connection = null;
        try {
            Class.forName(DRIVER_NAME);
             connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connection;
    }

 

 

=======================================================================

接下来是排查记录:

记一次错误排查记录(JDBC使用SYSDBA身份连接ORACLE/修改ORACLE用户密码)

 

用户编译器使用 public static String USERNAME = "system as SYSDBA"; 

与public static String USERNAME = "system";均不可登录

然而反应之前使用SYSDBA身份登录system账号,密码为manager可成功登录。

于是便想到SYSDBA身份登录,即使密码错误也能登录成功。

存在用户记错数据库用户密码的情况。

于是通过SYSDBA身份登录PLSQL,在命令行模式修改密码,语句为:

alter user system identified by manager;

此时再使用    public static String USERNAME = "system as SYSDBA"; 进行JDBC连接 即可连接成功。

 

 

附 sys与system用户区别:
system是数据库内置的一个普通管理员,你手工创建的任何用户在被授予dba角色后都跟这个用户差不多。
sys用数据库的超级用户,数据库内很多重要的东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以sysdba身份登录。
system用户以sysdba身份登录时就是sys,准确地说,任何用户以sysdba身份登录时都是sys,这一点,你登陆后执行show user可以验证。
 

以后有空更thin与oci连接。