{"id":3398,"date":"2018-02-04T14:05:46","date_gmt":"2018-02-04T05:05:46","guid":{"rendered":"http:\/\/haisins.epac.to\/wordpress\/?p=3398"},"modified":"2018-02-04T14:13:33","modified_gmt":"2018-02-04T05:13:33","slug":"jdbc%eb%a5%bc-%ed%86%b5%ed%95%9c-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-startup-shutdown","status":"publish","type":"post","link":"http:\/\/haisins.synology.me\/wordpress\/?p=3398","title":{"rendered":"JDBC\ub97c  \ud1b5\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 STARTUP \/ SHUTDOWN"},"content":{"rendered":"<p>11g\uc5d0\uc11c\ubd80\ud130 oracle.jdbc.OracleConnection \ud074\ub798\uc2a4\uc5d0\uc11c startup() \ubc0f shutdown()\uc774\ub77c\ub294 \uc0c8\ub85c\uc6b4 JDBC \uba54\uc18c\ub4dc\ub97c \uc81c\uacf5\ud55c\ub2e4. \uc774 \ub450 \uba54\uc18c\ub4dc\ub294 SQL*Plus\uc5d0\uc11c\ucc98\ub7fc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc9c1\uc811 start up\ud558\uace0 shut down\ud560 \uc218 \uc788\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc774\ub2e4.<\/p>\n<p>startup()\uacfc shutdown() \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \ucee4\ub125\uc158\uc744 \ub9fa\uc744 \ub54c \ubc18\ub4dc\uc2dc preliminary \ubaa8\ub4dc\ub85c SYSDBA \ud639\uc740 SYSOPER\ub85c \ucee4\ub125\uc158\uc744 \ub9fa\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<p>Preliminary \ubaa8\ub4dc\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc778\uc2a4\ud134\uc2a4\uac00 \uad6c\ub3d9 \uc911\uc774 \uc544\ub2d0 \ub54c \ud55c \uba85\uc758 \uc720\uc800\ub9cc\uc744 \ud5c8\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 start up \uc2dc\ud0a4\ub294 \uc791\uc5c5\uc5d0\ub9cc \ud5c8\uc6a9\ud558\ub294 \ubaa8\ub4dc\uc774\ub2e4. \ucee4\ub125\uc158 \uc0dd\uc131 \uc2dc \ub2e4\uc74c\uacfc \uac19\uc774 prelim_auth \ud504\ub85c\ud37c\ud2f0\ub97c true\ub85c \uc124\uc815\ud558\uba74 \ub41c\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">prop.setProperty(\u201cuser\u201d,\u201dsys\u201d);\r\nprop.setProperty(\u201cpassword\u201d,\u201dmanager\u201d);\r\nprop.setProperty(\u201cinternal_logon\u201d,\u201dsysdba\u201d);\r\nprop.setProperty(\u201cprelim_auth\u201d,\u201dtrue\u201d);\r\nds.setConnectionProperties(prop);<\/pre>\n<p>\uc774\ub807\uac8c \ucee4\ub125\uc158\uc744 \ub9fa\uc740 \ud6c4\uc5d0 startup() \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud574\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c start up \uc2dc\ud0a8\ub2e4. startup() \uba54\uc18c\ub4dc \ud638\ucd9c \uc2dc \ub2e4\uc74c\uacfc \uac19\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 start up \uc635\uc158 \uc124\uc815 \ud30c\ub77c\ubbf8\ud130\ub97c \uba85\uc2dc\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>&#8211; FORCE : \uc778\uc2a4\ud134\uc2a4 start up \uc804\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c abort \ubaa8\ub4dc\ub85c shut down<br \/>\n&#8211; RESTRICT : \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c start up \ud55c \ud6c4\uc5d0, CREATE SESSION\uc640 RESTRICTED \uad8c\ud55c\uc744 \uac00\uc9c0\uace0 \uc788\ub294 \uc720\uc800(\uc77c\ubc18\uc801\uc73c\ub85c\ub294 DBA)\uc5d0\uac8c\ub9cc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc811\uadfc \ud5c8\uc6a9<br \/>\n&#8211; NO_RESTRICTION : RESTRICTION\uc5c6\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4 start up<\/p>\n<p>&nbsp;<\/p>\n<p>Startup() \uba54\uc18c\ub4dc \ud638\ucd9c \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">OracleConnection conn = (OracleConnection)ds.getConnection();\r\nconn.startup(OracleConnection.DatabaseStartupMode.NO_RESTRICTION);<\/pre>\n<p>Startrup() \uba54\uc18c\ub4dc\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc778\uc2a4\ud134\uc2a4\ub97c start up\uc2dc\ud0a4\uae30\ub9cc \ud560 \ubfd0 mount\ud558\uac70\ub098 open\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c mount\/open\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">Statements stmt = conn.createStatement();\r\nstmt.executeUpdate(\u201cALTER DATABASE MOUNT\u201d);\r\nstmt.executeUpdate(\u201cALTER DATABASE OPEN\u201d);<\/pre>\n<p>Shutdown() \uba54\uc18c\ub4dc \ud638\ucd9c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c shutdown \ud560 \ub54c \uc124\uc815\ud560 \uc218 \uc788\ub294 \uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<br \/>\n&#8211; ABORT<br \/>\n&#8211; CONNECT<br \/>\n&#8211; FINAL<br \/>\n&#8211; IMMEDIATE<br \/>\n&#8211; TRANSACTIONAL<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">conn.shutdown(OracleConnection.DatabaseShutdownMode.IMMEDIATE);\r\nStatement stmt1 = conn.createStatement();\r\nstmt1.excuteUpdate(\u201cALTER DATABASE CLOSE NORMAL\u201d);\r\nstmt1.excuteUpdate(\u201cALTER DATABASE CLOSE DISMOUNT\u201d);<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\uc608\uc81c<\/strong><\/p>\n<p><strong>Quick Implementation of Database Change Notification<\/strong><\/p>\n<p>DCN \uae30\ub2a5\uc744 \uc774\uc6a9\ud574\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 registration\uc744 \uc0dd\uc131\ud558\uace0 \ub9ac\uc2a4\ub108\ub97c \ub4f1\ub85d\ud55c \ud6c4, Scott \uc720\uc800\ub85c insert\ubb38\uc7a5\uc744 \uc2e4\ud589\ud558\uba74 \ub9ac\uc2a4\ub108\uac00 \uc2e4\ud589\ud55c \uc791\uc5c5\uc5d0 \ub300\ud55c DCN \uc774\ubca4\ud2b8\ub97c \ubc1b\uc544\uc11c \ud654\uba74\uc5d0 \ucd9c\ub825\ud574\uc8fc\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad6c\ud604\ud574\ubcf8\ub2e4.<\/p>\n<p>1.) \ubcf8 \uc608\uc81c\uc5d0\uc11c\ub294 Scott \uc720\uc800\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud574\uc11c \uc791\uc5c5\ud558\ubbc0\ub85c, \uba3c\uc800 Scott \uc720\uc800\uc5d0\uac8c \ub2e4\uc74c\uacfc \uac19\uc774 change notification \uad8c\ud55c\uc744 \ubd80\uc5ec\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">grant change notification to scott;<\/pre>\n<p>&nbsp;<\/p>\n<p>2.) \ub2e4\uc74c java \uc18c\uc2a4\ub97c DBChangeNotification.java\ub77c\ub294 \ud30c\uc77c\uc5d0 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">import java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Properties;\r\nimport oracle.jdbc.OracleConnection;\r\nimport oracle.jdbc.OracleDriver;\r\nimport oracle.jdbc.OracleStatement;\r\nimport oracle.jdbc.dcn.DatabaseChangeEvent;\r\nimport oracle.jdbc.dcn.DatabaseChangeListener;\r\nimport oracle.jdbc.dcn.DatabaseChangeRegistration;\r\npublic class DBChangeNotification\r\n{\r\nstatic final String USERNAME= \"scott\";\r\nstatic final String PASSWORD= \"tiger\";\r\nstatic String URL;\r\npublic static void main(String[] argv)\r\n{\r\nif(argv.length &lt; 1)\r\n{\r\nSystem.out.println(\"Error: You need to provide the URL in the first argument.\");\r\nSystem.out.println(\" For example: &gt; java -classpath .:ojdbc5.jar DBChangeNotification\r\n\\\"jdbc:oracle:thin:\r\n@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yourhost.yourdomain.com)(PORT=1521))(CONNECT_DATA=\r\n(SERVICE_NAME=yourservicename)))\\\"\");\r\nSystem.exit(1);\r\n}\r\nURL = argv[0];\r\nDBChangeNotification demo = new DBChangeNotification();\r\ntry\r\n{\r\ndemo.run();\r\n}\r\ncatch(SQLException mainSQLException )\r\n{\r\nmainSQLException.printStackTrace();\r\n}\r\n}\r\nvoid run() throws SQLException\r\n\r\n{\r\nOracleConnection conn = connect();\r\n\/\/ first step: create a registration on the server:\r\nProperties prop = new Properties();\r\n\/\/ if connected through the VPN, you need to provide the TCP address of the client.\r\n\/\/ For example:\r\n\/\/ prop.setProperty(OracleConnection.NTF_LOCAL_HOST,\"14.14.13.12\");\r\n\/\/ Ask the server to send the ROWIDs as part of the DCN events (small performance\r\n\/\/ cost):\r\nprop.setProperty(OracleConnection.DCN_NOTIFY_ROWIDS,\"true\");\r\n\/\/ The following operation does a roundtrip to the database to create a new\r\n\/\/ registration for DCN. It sends the client address (ip address and port) that\r\n\/\/ the server will use to connect to the client and send the notification\r\n\/\/ when necessary. Note that for now the registration is empty (we haven't registered\r\n\/\/ any table). This also opens a new thread in the drivers. This thread will be\r\n\/\/ dedicated to DCN (accept connection to the server and dispatch the events to\r\n\/\/ the listeners).\r\nDatabaseChangeRegistration dcr = conn.registerDatabaseChangeNotification(prop);\r\ntry\r\n{\r\n\/\/ add the listenerr:\r\nDCNDemoListener list = new DCNDemoListener(this);\r\ndcr.addListener(list);\r\n\/\/ second step: add objects in the registration:\r\nStatement stmt = conn.createStatement();\r\n\/\/ associate the statement with the registration:\r\n((OracleStatement)stmt).setDatabaseChangeRegistration(dcr);\r\nResultSet rs = stmt.executeQuery(\"select * from dept where deptno='45'\");\r\nwhile (rs.next())\r\n{}\r\nString[] tableNames = dcr.getTables();\r\nfor(int i=0;i&lt;tableNames.length;i++)\r\nSystem.out.println(tableNames[i]+\" is part of the registration.\");\r\nrs.close();\r\nstmt.close();\r\n}\r\ncatch(SQLException ex)\r\n{\r\n\/\/ if an exception occurs, we need to close the registration in order\r\n\/\/ to interrupt the thread otherwise it will be hanging around.\r\nif(conn != null)\r\nconn.unregisterDatabaseChangeNotification(dcr);\r\nthrow ex;\r\n}\r\nfinally\r\n{\r\ntry\r\n{\r\n\/\/ Note that we close the connection!\r\nconn.close();\r\n}\r\ncatch(Exception innerex){ innerex.printStackTrace(); }\r\n}\r\nsynchronized( this )\r\n{\r\n\/\/ The following code modifies the dept table and commits:\r\ntry\r\n{\r\nOracleConnection conn2 = connect();\r\nconn2.setAutoCommit(false);\r\nStatement stmt2 = conn2.createStatement();\r\n\r\nstmt2.executeUpdate(\"insert into dept (deptno,dname) values ('45','cool\r\ndept')\",Statement.RETURN_GENERATED_KEYS);\r\nResultSet autoGeneratedKey = stmt2.getGeneratedKeys();\r\nif(autoGeneratedKey.next())\r\nSystem.out.println(\"inserted one row with ROWID=\"+autoGeneratedKey.getString(1));\r\nstmt2.executeUpdate(\"insert into dept (deptno,dname) values ('50','fun\r\ndept')\",Statement.RETURN_GENERATED_KEYS);\r\nautoGeneratedKey = stmt2.getGeneratedKeys();\r\nif(autoGeneratedKey.next())\r\nSystem.out.println(\"inserted one row with ROWID=\"+autoGeneratedKey.getString(1));\r\nstmt2.close();\r\nconn2.commit();\r\nconn2.close();\r\n}\r\ncatch(SQLException ex) { ex.printStackTrace(); }\r\n\/\/ wait until we get the event\r\ntry{ this.wait();} catch( InterruptedException ie ) {}\r\n}\r\n\/\/ At the end: close the registration (comment out these 3 lines in order\r\n\/\/ to leave the registration open).\r\nOracleConnection conn3 = connect();\r\nconn3.unregisterDatabaseChangeNotification(dcr);\r\nconn3.close();\r\n}\r\n\/**\r\n* Creates a connection the database.\r\n*\/\r\nOracleConnection connect() throws SQLException\r\n{\r\nOracleDriver dr = new OracleDriver();\r\nProperties prop = new Properties();\r\nprop.setProperty(\"user\",DBChangeNotification.USERNAME);\r\nprop.setProperty(\"password\",DBChangeNotification.PASSWORD);\r\nreturn (OracleConnection)dr.connect(DBChangeNotification.URL,prop);\r\n}\r\n}\r\n\/**\r\n* DCN listener: it prints out the event details in stdout.\r\n*\/\r\nclass DCNDemoListener implements DatabaseChangeListener\r\n{\r\nDBChangeNotification demo;\r\nDCNDemoListener(DBChangeNotification dem)\r\n{\r\ndemo = dem;\r\n}\r\npublic void onDatabaseChangeNotification(DatabaseChangeEvent e)\r\n{\r\nThread t = Thread.currentThread();\r\nSystem.out.println(\"DCNDemoListener: got an event (\"+this+\" running on thread \"+t+\")\");\r\nSystem.out.println(e.toString());\r\nsynchronized( demo ){ demo.notify();}\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>3.) \ub2e4\uc74c\uacfc \uac19\uc774 \uc704 java \uc18c\uc2a4\ub97c \ucef4\ud30c\uc77c\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">UNIX\r\n----\r\njavac -cp .:&lt;directory&gt;\/ojdbc5.jar DBChangeNotification.java\r\n\r\nWindows\r\n-------\r\njavac -cp .;&lt;directory&gt;\/ojdbc5.jar DBChangeNotification.java\r\n&lt;directory&gt;\ub294 ojdbc5.jar \ud30c\uc77c\uc774 \ub4e4\uc5b4\uc788\ub294 \ub514\ub809\ud1a0\ub9ac \uc704\uce58\ub85c \ubc14\uafbc\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c\ub294 $ORACLE_HOME\/jdbc\/lib \uc704\uce58\uc5d0 \ub4e4\uc5b4\uc788\ub2e4.<\/pre>\n<p>&nbsp;<\/p>\n<p>4.) \uc704\uc5d0\uc11c \ucef4\ud30c\uc77c\ud55c \ud074\ub798\uc2a4\ub97c \uc544\ub798\uc640 \uac19\uc774 \uc2e4\ud589\ud574\ubcf4\uc790. \uc2e4\ud589\uc2dc \uc778\uc218\ub85c \ucee4\ub125\uc158 URL\uc744 \ub123\uc5b4\uc900\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">UNIX\r\n----\r\njava -cp .:&lt;directory&gt;\/ojdbc5.jar DBChangeNotification \"jdbc:oracle:thin:@obe11g:1521:ORCL\"\r\nWindows\r\n-------\r\njava -cp .;&lt;directory&gt;\/ojdbc5.jar DBChangeNotification \"jdbc:oracle:thin:@obe11g:1521:ORCL\"\r\n&lt;directory&gt;\ub294 ojdbc5.jar \ud30c\uc77c\uc774 \ub4e4\uc5b4\uc788\ub294 \ub514\ub809\ud1a0\ub9ac \uc704\uce58\ub85c \ubc14\uafbc\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c\ub294 $ORACLE_HOME\/jdbc\/lib \uc704\uce58\uc5d0 \ub4e4\uc5b4\uc788\ub2e4.<\/pre>\n<p>&nbsp;<\/p>\n<p>5.) \uc544\ub798\uc640 \uac19\uc774 \ub9ac\uc2a4\ub108\uac00 \uc774\ubca4\ud2b8\ub97c \ubc1b\uc544\uc11c \uc544\ub798\uc640 \uac19\uc774 \uc774\ubca4\ud2b8 \ub0b4\uc6a9\uc744 \ud654\uba74\uc5d0 \ucd9c\ub825\ud558\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">SCOTT.DEPT is part of the registration.\r\ninserted one row with ROWID=AAAQ+yAAEAAAAANAAA\r\ninserted one row with ROWID=AAAQ+yAAEAAAAANAAB\r\nDCNDemoListener: got an event (DCNDemoListener@170888e running on thread Thread[Thread-2,5,main])\r\nConnection information : local=obe11g.us.oracle.com\/192.168.203.11:47632,\r\nremote=obe11g.us.oracle.com\/192.168.203.11:36251\r\nRegistration ID : 1\r\nNotification version : 1\r\nEvent type : OBJCHANGE\r\nDatabase name : orcl\r\nTable Change Description (length=1)\r\noperation=[INSERT], tableName=SCOTT.DEPT, objectNumber=69554\r\nRow Change Description (length=2):\r\nROW: operation=INSERT, ROWID=AAAQ+yAAEAAAAANAAA\r\nROW: operation=INSERT, ROWID=AAAQ+yAAEAAAAANAAB\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 20px;\"><strong>Using JDBC method for Database Startup\/Shutdown<\/strong><\/span><\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud574\uc11c startup(), shutdown() \uba54\uc18c\ub4dc\ub97c \uc774\uc6a9\ud574\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc167\ub2e4\uc6b4\/\uc2a4\ud0c0\ud2b8\uc5c5\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc791\uc131\ud574\ubcf8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>1.) Starup\/shutdown \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 SYSDBA \ud639\uc740 SYSOPER \uad8c\ud55c\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uc18d\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\uc624\ub77c\ud074 JDBC Thin \ub4dc\ub77c\uc774\ubc84\ub97c \ud1b5\ud574\uc11c SYSDBA\ub098 SYSOPER\ub85c \uc811\uc18d\ud558\ub824\uba74 \uc11c\ubc84\uac00 \ud328\uc2a4\uc6cc\ub4dc \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc124\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\ucee4\ub9e8\ub4dc\ub77c\uc778\uc5d0\uc11c \ub2e4\uc74c \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">orapwd file=$ORACLE_HOME\/dbs\/orapw password=yourpass entries=5<\/pre>\n<p>&nbsp;<\/p>\n<p>2.) Starup\/shutdown \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud560 \uc720\uc800\ub294 SYSDBA\uad8c\ud55c\uc744 \uac00\uc9c0\uace0 \uc788\uc5b4\uc57c \ud558\ubbc0\ub85c, SQL*Plus\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">GRANT SYSDBA TO system;\r\nALTER USER system IDENTIFIED BY manager;<\/pre>\n<p>&nbsp;<\/p>\n<p>3.) Init&lt;SID&gt;.ora \ud30c\uc77c\uc744 \uc5f4\uc5b4\uc11c \ub2e4\uc74c \ud589\uc744 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE<\/pre>\n<p>&nbsp;<\/p>\n<p>4.) \uc774\uc81c startup\/shutdown \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uae30\uc704\ud55c \uc124\uc815\uc744 \ub9c8\ucce4\ub2e4. \ub370\uc774\ud14c\uc774\uc2a4 \uc778\uc2a4\ud134\uc2a4\ub97c \uc7ac \uc2dc\uc791\ud574\uc11c \uc124\uc815\ub0b4\uc6a9\uc744 \uc801\uc6a9\ud55c\ub2e4.<\/p>\n<p>5.) $ORACLE_HOME\/network\/admin\/listener.ora \ud30c\uc77c\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 JDBC\ub97c \ubd99\uc73c\ub824\ub294 \uc11c\ube44\uc2a4\uac00 static\ud558\uac8c \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uace0, \ub4f1\ub85d\ub418\uc5b4 \uc788\uc9c0 \uc54a\ub2e4\uba74 \uc544\ub798 \ub0b4\uc6a9\uc744 listener.ora \ud30c\uc77c\uc5d0 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c startup \uc2dc\ud0a4\ub824\uba74 \uc778\uc2a4\ud134\uc2a4\uac00 \ub5a0 \uc788\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uc5d0\uc11c \uadf8 \uc11c\ube44\uc2a4\uc5d0 \uc811\uc18d\ud574\uc57c \ud558\uae30 \ub54c\ubb38\uc5d0 \ubc18\ub4dc\uc2dc JDBC\ub97c \ud1b5\ud574\uc11c \uc811\uc18d\ud560 \uc11c\ube44\uc2a4\uac00 \ub9ac\uc2a4\ub108\uc5d0 static\ud558\uac8c \ub4f1\ub85d\ub418\uc5b4 \uc788\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">SID_LIST_LISTENER =\r\n(SID_LIST =\r\n(SID_DESC =\r\n(GLOBAL_DBNAME = orcl.us.oracle.com)\r\n(SID_NAME = orcl)\r\n(ORACLE_HOME = \/u01\/app\/oracle\/product\/11.1.0\/db_1)\r\n)\r\n)<\/pre>\n<p>&nbsp;<\/p>\n<p>6.) \ub2e4\uc74c\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 startup\uc2dc\ud0a4\ub294 java \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4. DBStartup.java\ub77c\ub294 \uc774\ub984\uc73c\ub85c \ub2e4\uc74c\uc744 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">import java.sql.Statement;\r\nimport java.util.Properties;\r\nimport oracle.jdbc.OracleConnection;\r\nimport oracle.jdbc.pool.OracleDataSource;\r\n\/**\r\n* In order to be able to logon as sysdba, you need to create a password file for user \"sys\":\r\n* orapwd file=$T_DBS\/orapw password=manager entries=300\r\n* and add the following setting in init.ora:\r\n* REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE\r\n* then restart the database.\r\n*\/\r\npublic class DBStartup\r\n{\r\nstatic final String DB_URL =\r\n\"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=obe11g)(PORT=1521))) \"\r\n+\" (CONNECT_DATA=(SERVICE_NAME=orcl.us.oracle.com)))\";\r\npublic static void main(String[] argv)\r\n{\r\ntry{\r\nOracleDataSource ds = new OracleDataSource();\r\nProperties prop = new Properties();\r\nprop.setProperty(\"user\",\"sys\");\r\nprop.setProperty(\"password\",\"oracle\");\r\nprop.setProperty(\"internal_logon\",\"sysdba\");\r\nprop.setProperty(\"prelim_auth\",\"true\");\r\nds.setConnectionProperties(prop);\r\nds.setURL(DB_URL);\r\nOracleConnection conn = (OracleConnection)ds.getConnection();\r\n\r\nSystem.out.println(\" *** OracleConnection conn = (OracleConnection)ds.getConnection() ****\");\r\nconn.startup(OracleConnection.DatabaseStartupMode.NO_RESTRICTION);\r\nSystem.out.println(\" *** conn.startup(OracleConnection.DBSTARTUP_NO_RESTRICTION) ****\");\r\nconn.close();\r\nOracleDataSource ds1 = new OracleDataSource();\r\nProperties prop1 = new Properties();\r\nprop1.setProperty(\"user\",\"sys\");\r\nprop1.setProperty(\"password\",\"oracle\");\r\nprop1.setProperty(\"internal_logon\",\"sysdba\");\r\nds1.setConnectionProperties(prop1);\r\nds1.setURL(DB_URL);\r\nOracleConnection conn1 = (OracleConnection)ds1.getConnection();\r\nSystem.out.println(\" *** OracleConnection conn1 = (OracleConnection)ds1.getConnection() ****\");\r\nStatement stmt = conn1.createStatement();\r\nstmt.executeUpdate(\"ALTER DATABASE MOUNT\");\r\nSystem.out.println(\" *** stmt.executeUpdate(\\\"ALTER DATABASE MOUNT\\\"); ****\");\r\nstmt.executeUpdate(\"ALTER DATABASE OPEN\");\r\nSystem.out.println(\" *** stmt.executeUpdate(\\\"ALTER DATABASE OPEN\\\"); ****\");\r\nstmt.close();\r\nconn1.close();\r\nSystem.out.println(\" ******** The End Startup **********\");\r\n}catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>7.) \ub2e4\uc74c\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 shutdown\uc2dc\ud0a4\ub294 java \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4. DBShutdown.java\ub77c\ub294 \uc774\ub984\uc73c\ub85c \ub2e4\uc74c\uc744 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">import java.sql.Statement;\r\nimport java.util.Properties;\r\nimport oracle.jdbc.OracleConnection;\r\nimport oracle.jdbc.pool.OracleDataSource;\r\npublic class DBShutdown\r\n{\r\nstatic final String DB_URL =\r\n\"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=obe11g)(PORT=1521))) \"\r\n+\" (CONNECT_DATA=(SERVICE_NAME=orcl.us.oracle.com)))\";\r\npublic static void main(String[] argv)\r\n{\r\ntry{\r\nOracleDataSource ds = new OracleDataSource();\r\nProperties prop = new Properties();\r\nprop.setProperty(\"user\",\"sys\");\r\nprop.setProperty(\"password\",\"oracle\");\r\nprop.setProperty(\"internal_logon\",\"sysdba\");\r\nds.setConnectionProperties(prop);\r\nds.setURL(DB_URL);\r\nOracleConnection conn = (OracleConnection)ds.getConnection();\r\nSystem.out.println(\" *** OracleConnection conn = (OracleConnection)ds.getConnection() ****\");\r\nconn.shutdown(OracleConnection.DatabaseShutdownMode.IMMEDIATE);\r\nSystem.out.println(\" *** conn.shutdown(OracleConnection.DBSHUTDOWN_IMMEDIATE) *****\");\r\nStatement stmt = conn.createStatement();\r\nstmt.executeUpdate(\"ALTER DATABASE CLOSE NORMAL\");\r\nSystem.out.println(\" *** stmt.executeUpdate(\\\"ALTER DATABASE CLOSE NORMAL\\\") ****\");\r\nstmt.executeUpdate(\"ALTER DATABASE DISMOUNT\");\r\nSystem.out.println(\" *** stmt.executeUpdate(\\\"ALTER DATABASE DISMOUNT\\\") ****\");\r\nstmt.close();\r\nconn.shutdown(OracleConnection.DatabaseShutdownMode.FINAL);\r\nSystem.out.println(\" *** conn.shutdown(OracleConnection.DBSHUTDOWN_FINAL) ****\");\r\nconn.close();\r\nSystem.out.println(\" ******** The End ShutDown **********\");\r\n}catch(Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>8.) \ub2e4\uc74c\uc758 \uba85\ub839\uc5b4\ub85c \uc704\uc5d0\uc11c \uc791\uc131\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ucef4\ud30c\uc77c\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">UNIX\r\n----\r\njavac -cp .:&lt;directory&gt;\/ojdbc5.jar DBStartup.java\r\njavac -cp .:&lt;directory&gt;\/ojdbc5.jar DBShutdown.java\r\n\r\nWindows\r\n-------\r\njavac -cp .;&lt;directory&gt;\/ojdbc5.jar DBStartup.java\r\njavac -cp .;&lt;directory&gt;\/ojdbc5.jar DBShutdown.java\r\n\r\n&lt;directory&gt;\ub294 ojdbc5.jar \ud30c\uc77c\uc774 \ub4e4\uc5b4\uc788\ub294 \ub514\ub809\ud1a0\ub9ac \uc704\uce58\ub85c \ubc14\uafbc\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c\ub294 $ORACLE_HOME\/jdbc\/lib \uc704\uce58\uc5d0 \ub4e4\uc5b4\uc788\ub2e4.<\/pre>\n<p>&nbsp;<\/p>\n<p>9.) \ucef4\ud30c\uc77c\ud55c \ud074\ub798\uc2a4\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">UNIX\r\n----\r\njava -cp .:&lt;directory&gt;\/ojdbc5.jar DBStartup\r\njava -cp .:&lt;directory&gt;\/ojdbc5.jar DBShutdown\r\n\r\nWindows\r\n-------\r\njava -cp .;&lt;directory&gt;\/ojdbc5.jar DBStartup\r\njava -cp .;&lt;directory&gt;\/ojdbc5.jar DBShutdown\r\n\r\n&lt;directory&gt;\ub294 ojdbc5.jar \ud30c\uc77c\uc774 \ub4e4\uc5b4\uc788\ub294 \ub514\ub809\ud1a0\ub9ac \uc704\uce58\ub85c \ubc14\uafbc\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c\ub294 $ORACLE_HOME\/jdbc\/lib \uc704\uce58\uc5d0 \ub4e4\uc5b4\uc788\ub2e4.<\/pre>\n<p>&nbsp;<\/p>\n<p>10.) \ub2e4\uc74c\uacfc \uac19\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 Starup\/Shutdown\ub418\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true\">$ java DBStartup\r\n*** OracleConnection conn = (OracleConnection)ds.getConnection() ****\r\n*** conn.startup(OracleConnection.DBSTARTUP_NO_RESTRICTION) ****\r\n*** OracleConnection conn1 = (OracleConnection)ds1.getConnection() ****\r\n*** stmt.executeUpdate(\"ALTER DATABASE MOUNT\"); ****\r\n*** stmt.executeUpdate(\"ALTER DATABASE OPEN\"); ****\r\n******** The End Startup **********\r\n$ java DBShutdown\r\n*** OracleConnection conn = (OracleConnection)ds.getConnection() ****\r\n*** conn.shutdown(OracleConnection.DBSHUTDOWN_IMMEDIATE) *****\r\n*** stmt.executeUpdate(\"ALTER DATABASE CLOSE NORMAL\") ****\r\n*** stmt.executeUpdate(\"ALTER DATABASE DISMOUNT\") ****\r\n*** conn.shutdown(OracleConnection.DBSHUTDOWN_FINAL) ****\r\n******** The End ShutDown **********<\/pre>\n<p><span style=\"font-size: 20px;\"><strong>Oracle 11g \ubd80\ud130 \uc624\ub77c\ud074 JDBC\ub294 JDBC 4.0\uc758 \ubaa8\ub4e0 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\uace0, \uc880 \ub354 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud2b9\uc9d5\ub4e4\uc744 JDBC \ub97c \ud1b5\ud574 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5b4 Java \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc880 \ub354 \ud5a5\uc0c1\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucee8\ud2b8\ub864\uc774 \uac00\ub2a5\ud574\uc84c\ub2e4. <\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>11g\uc5d0\uc11c\ubd80\ud130 oracle.jdbc.OracleConnection \ud074\ub798\uc2a4\uc5d0\uc11c startup() \ubc0f shutdown()\uc774\ub77c\ub294 \uc0c8\ub85c\uc6b4 JDBC \uba54\uc18c\ub4dc\ub97c \uc81c\uacf5\ud55c\ub2e4. \uc774 \ub450 \uba54\uc18c\ub4dc\ub294 SQL*Plus\uc5d0\uc11c\ucc98\ub7fc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc9c1\uc811 start up\ud558\uace0 shut down\ud560 \uc218 \uc788\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc774\ub2e4. startup()\uacfc shutdown() \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \ucee4\ub125\uc158\uc744 \ub9fa\uc744 \ub54c \ubc18\ub4dc\uc2dc preliminary \ubaa8\ub4dc\ub85c SYSDBA \ud639\uc740 SYSOPER\ub85c \ucee4\ub125\uc158\uc744 \ub9fa\uc5b4\uc57c \ud55c\ub2e4. Preliminary \ubaa8\ub4dc\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc778\uc2a4\ud134\uc2a4\uac00 \uad6c\ub3d9 \uc911\uc774 \uc544\ub2d0 \ub54c \ud55c \uba85\uc758 \uc720\uc800\ub9cc\uc744 \ud5c8\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 start [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3406,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"spay_email":""},"categories":[3],"tags":[979,980,982,981],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/haisins.synology.me\/wordpress\/wp-content\/uploads\/2018\/02\/Epi-194-M2M.jpg?fit=425%2C282","amp_enabled":true,"_links":{"self":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3398"}],"collection":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3398"}],"version-history":[{"count":1,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3398\/revisions"}],"predecessor-version":[{"id":3399,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3398\/revisions\/3399"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/3406"}],"wp:attachment":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3398"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}