jdbcでoracleの起動・停止する方法
これは本当にすごい!!!!
ojdbc6.jar(ojdbc5.jarでも可能)を使うとJDBC経由でoracleのstartup, shutdownが可能になります。
僕が試したのは、oracle9iのDBに対してojdbc6.jarを使用してDBの起動・停止。
Database : oracle9i
Java : 1.6.0_02
JDBC : ojdbc6.jar
StarupTest.java
package jp.co.abby.ojdbc6test; import java.sql.Statement; import java.util.Properties; import oracle.jdbc.OracleConnection; import oracle.jdbc.pool.OracleDataSource; public class StartupTest { private static final String DB_URL = "jdbc:oracle:thin:@yone03:1521:test"; /** * jdbc経由でoracle起動 */ public static void main(String[] args) throws Exception { // Starting up the database: OracleDataSource ds = new OracleDataSource(); Properties prop = PropertyUtil.getProperties(); prop.setProperty("prelim_auth", "true"); ds.setConnectionProperties(prop); ds.setURL(DB_URL); OracleConnection conn = (OracleConnection) ds.getConnection(); System.out.println("Connect Success!"); conn.startup(OracleConnection.DatabaseStartupMode.NO_RESTRICTION); conn.close(); System.out.println("NO MOUNT SUCCESS!"); // Mounting and opening the database OracleDataSource ds1 = new OracleDataSource(); prop = PropertyUtil.getProperties(); ds1.setConnectionProperties(prop); ds1.setURL(DB_URL); OracleConnection conn1 = (OracleConnection) ds1.getConnection(); System.out.println("Connect Success!"); Statement stmt = conn1.createStatement(); stmt.executeUpdate("ALTER DATABASE MOUNT"); stmt.executeUpdate("ALTER DATABASE OPEN"); stmt.close(); conn1.close(); System.out.println("Startup SUCCESS!"); } }
ShutdownTest.java
package jp.co.abby.ojdbc6test; import java.sql.Statement; import java.util.Properties; import oracle.jdbc.OracleConnection; import oracle.jdbc.pool.OracleDataSource; public class ShutdownTest { private static final String DB_URL = "jdbc:oracle:thin:@yone03:1521:test"; /** * jdbc経由でoracle停止 */ public static void main(String[] args) throws Exception { // Shutting down the database OracleDataSource ds = new OracleDataSource(); Properties prop = PropertyUtil.getProperties(); ds.setConnectionProperties(prop); ds.setURL(DB_URL); OracleConnection conn = (OracleConnection) ds.getConnection(); System.out.println("Connect Success!"); conn.shutdown(OracleConnection.DatabaseShutdownMode.IMMEDIATE); Statement stmt1 = conn.createStatement(); stmt1.executeUpdate("ALTER DATABASE CLOSE NORMAL"); stmt1.executeUpdate("ALTER DATABASE DISMOUNT"); stmt1.close(); conn.shutdown(OracleConnection.DatabaseShutdownMode.FINAL); conn.close(); System.out.println("Shurdown SUCCESS!"); } }
もうこれで携帯からoracleの起動・停止も可能になります。
これはちょっと衝撃的でした!
oracle11gについてはもう少し追いかけてみようと思いました。