如何解决通过 Java JDBC 关闭 Oracle 数据库导致“ORA-01012 NOT LOGGED ON”异常
private void databaseShutdown(OracleDataSource dataSource) throws sqlException {
OracleConnection connection = (OracleConnection) dataSource.getConnection();
connection.shutdown(OracleConnection.DatabaseShutdownMode.IMMEDIATE);
Statement statement = connection.createStatement();
statement.executeUpdate("ALTER DATABASE CLOSE norMAL");
statement.executeUpdate("ALTER DATABASE dismoUNT");
statement.close();
connection.shutdown(OracleConnection.DatabaseShutdownMode.FINAL);
connection.close();
}
以上代码用于从 Java 关闭 Oracle 数据库(在 cmd 中模拟命令 "shutdown immediate"
),参考来自 Oracle Documentation Examples。但在调用此方法时,会引发异常 java.sql.sqlException
,错误代码为 ORA-01012
,并显示错误消息“未登录”。
此 OracleConnection
是通过具有以下定义的 OracleDataSource
构造的:
String databaseURL = String.format("jdbc:oracle:thin:@%s:%s:%s",userInfo.getHost(),userInfo.getPort(),userInfo.getSID());
OracleDataSource dataSource = new OracleDataSource();
Properties properties = new Properties();
properties.setProperty("user",userInfo.getUser());
properties.setProperty("password",userInfo.getPwd());
properties.setProperty("internal_logon","sysdba");
properties.setProperty("prelim_auth","true");
dataSource.setConnectionProperties(properties);
dataSource.setURL(databaseURL);
有人能告诉我我的方法是否无效/遗漏了任何关键步骤吗? 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。