서버종료
./shutdown
ps -ef | grep /usr/local/tomcat
소스배포
rm webapps/*
rsync 또는 scp를 이용한 war 배포
서버시작
./startup
curl check address | awk response
서버종료
./shutdown
ps -ef | grep /usr/local/tomcat
소스배포
rm webapps/*
rsync 또는 scp를 이용한 war 배포
서버시작
./startup
curl check address | awk response
시작(Win+R) – gpedit.msc
‘로컬 그룹 정책 편집기’
좌측트리 : 사용자 구성 – 관리템플릿 – 바탕화면
우측 : Aero 흔들기 창 최소화 마우스 제스처 사용 안 함 – 우클릭 – 편집 – 사용 – 확인
완료.
이제 창이 닫히는 불상사는 일어나지 않습니다
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; /** * @author archmagece * @with pizzahut-parent * @since 2016-11-08 */ public class DBMetaTest { public static void main(String[] args) { try{ Class.forName("oracle.jdbc.OracleDriver"); Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ODRDB","username","password"); DatabaseMetaData metadata = connection.getMetaData(); System.out.println("allProceduresAreCallable : "+ metadata.allProceduresAreCallable()); System.out.println("allTablesAreSelectable : "+ metadata.allTablesAreSelectable()); System.out.println("URL : "+ metadata.getURL()); System.out.println("UserName : "+ metadata.getUserName()); System.out.println("isReadOnly : "+ metadata.isReadOnly()); System.out.println("nullsAreSortedHigh : "+ metadata.nullsAreSortedHigh()); System.out.println("nullsAreSortedLow : "+ metadata.nullsAreSortedLow()); System.out.println("nullsAreSortedAtStart : "+ metadata.nullsAreSortedAtStart()); System.out.println("nullsAreSortedAtEnd : "+ metadata.nullsAreSortedAtEnd()); System.out.println("getDatabaseProductName : "+ metadata.getDatabaseProductName()); System.out.println("getDatabaseProductVersion : "+ metadata.getDatabaseProductVersion()); System.out.println("getDriverName : "+ metadata.getDriverName()); System.out.println("getDriverVersion : "+ metadata.getDriverVersion()); System.out.println("getDriverMajorVersion : "+ metadata.getDriverMajorVersion()); System.out.println("getDriverMinorVersion : "+ metadata.getDriverMinorVersion()); System.out.println("usesLocalFiles : "+ metadata.usesLocalFiles()); System.out.println("usesLocalFilePerTable : "+ metadata.usesLocalFilePerTable()); System.out.println("supportsMixedCaseIdentifiers : "+ metadata.supportsMixedCaseIdentifiers()); System.out.println("storesUpperCaseIdentifiers : "+ metadata.storesUpperCaseIdentifiers()); System.out.println("storesLowerCaseIdentifiers : "+ metadata.storesLowerCaseIdentifiers()); System.out.println("storesMixedCaseIdentifiers : "+ metadata.storesMixedCaseIdentifiers()); System.out.println("supportsMixedCaseQuotedIdentifiers : "+ metadata.supportsMixedCaseQuotedIdentifiers()); System.out.println("storesUpperCaseQuotedIdentifiers : "+ metadata.storesUpperCaseQuotedIdentifiers()); System.out.println("storesLowerCaseQuotedIdentifiers : "+ metadata.storesLowerCaseQuotedIdentifiers()); System.out.println("storesMixedCaseQuotedIdentifiers : "+ metadata.storesMixedCaseQuotedIdentifiers()); System.out.println("getIdentifierQuoteString : "+ metadata.getIdentifierQuoteString()); System.out.println("getSQLKeywords : "+ metadata.getSQLKeywords()); System.out.println("getNumericFunctions : "+ metadata.getNumericFunctions()); System.out.println("getStringFunctions : "+ metadata.getStringFunctions()); System.out.println("getSystemFunctions : "+ metadata.getSystemFunctions()); System.out.println("getTimeDateFunctions : "+ metadata.getTimeDateFunctions()); System.out.println("getSearchStringEscape : "+ metadata.getSearchStringEscape()); System.out.println("getExtraNameCharacters : "+ metadata.getExtraNameCharacters()); System.out.println("supportsAlterTableWithAddColumn : "+ metadata.supportsAlterTableWithAddColumn()); System.out.println("supportsAlterTableWithDropColumn : "+ metadata.supportsAlterTableWithDropColumn()); System.out.println("supportsColumnAliasing : "+ metadata.supportsColumnAliasing()); System.out.println("nullPlusNonNullIsNull : "+ metadata.nullPlusNonNullIsNull()); System.out.println("supportsConvert : "+ metadata.supportsConvert()); //supportsConvert(i" : "+ nt fromType, int toType) System.out.println("supportsTableCorrelationNames : "+ metadata.supportsTableCorrelationNames()); System.out.println("supportsDifferentTableCorrelationNames : "+ metadata.supportsDifferentTableCorrelationNames()); System.out.println("supportsExpressionsInOrderBy : "+ metadata.supportsExpressionsInOrderBy()); System.out.println("supportsOrderByUnrelated : "+ metadata.supportsOrderByUnrelated()); System.out.println("supportsGroupBy : "+ metadata.supportsGroupBy()); System.out.println("supportsGroupByUnrelated : "+ metadata.supportsGroupByUnrelated()); System.out.println("supportsGroupByBeyondSelect : "+ metadata.supportsGroupByBeyondSelect()); System.out.println("supportsLikeEscapeClause : "+ metadata.supportsLikeEscapeClause()); System.out.println("supportsMultipleResultSets : "+ metadata.supportsMultipleResultSets()); System.out.println("supportsMultipleTransactions : "+ metadata.supportsMultipleTransactions()); System.out.println("supportsNonNullableColumns : "+ metadata.supportsNonNullableColumns()); System.out.println("supportsMinimumSQLGrammar : "+ metadata.supportsMinimumSQLGrammar()); System.out.println("supportsCoreSQLGrammar : "+ metadata.supportsCoreSQLGrammar()); System.out.println("supportsExtendedSQLGrammar : "+ metadata.supportsExtendedSQLGrammar()); System.out.println("supportsANSI92EntryLevelSQL : "+ metadata.supportsANSI92EntryLevelSQL()); System.out.println("supportsANSI92IntermediateSQL : "+ metadata.supportsANSI92IntermediateSQL()); System.out.println("supportsANSI92FullSQL : "+ metadata.supportsANSI92FullSQL()); System.out.println("supportsIntegrityEnhancementFacility : "+ metadata.supportsIntegrityEnhancementFacility()); System.out.println("supportsOuterJoins : "+ metadata.supportsOuterJoins()); System.out.println("supportsFullOuterJoins: "+ metadata.supportsFullOuterJoins()); System.out.println("supportsLimitedOuterJoins : "+ metadata.supportsLimitedOuterJoins()); System.out.println("getSchemaTerm : "+ metadata.getSchemaTerm()); System.out.println("getProcedureTerm : "+ metadata.getProcedureTerm()); System.out.println("getCatalogTerm : "+ metadata.getCatalogTerm()); System.out.println("isCatalogAtStart : "+ metadata.isCatalogAtStart()); System.out.println("getCatalogSeparator : "+ metadata.getCatalogSeparator()); System.out.println("supportsSchemasInDataManipulation : "+ metadata.supportsSchemasInDataManipulation()); System.out.println("supportsSchemasInProcedureCalls : "+ metadata.supportsSchemasInProcedureCalls()); System.out.println("supportsSchemasInTableDefinitions : "+ metadata.supportsSchemasInTableDefinitions()); System.out.println("supportsSchemasInIndexDefinitions : "+ metadata.supportsSchemasInIndexDefinitions()); System.out.println("supportsSchemasInPrivilegeDefinitions : "+ metadata.supportsSchemasInPrivilegeDefinitions()); System.out.println("supportsCatalogsInDataManipulation : "+ metadata.supportsCatalogsInDataManipulation()); System.out.println("supportsCatalogsInProcedureCalls : "+ metadata.supportsCatalogsInProcedureCalls()); System.out.println("supportsCatalogsInTableDefinitions : "+ metadata.supportsCatalogsInTableDefinitions()); System.out.println("supportsCatalogsInIndexDefinitions : "+ metadata.supportsCatalogsInIndexDefinitions()); System.out.println("supportsCatalogsInPrivilegeDefinitions : "+ metadata.supportsCatalogsInPrivilegeDefinitions()); System.out.println("supportsPositionedDelete : "+ metadata.supportsPositionedDelete()); System.out.println("supportsPositionedUpdate : "+ metadata.supportsPositionedUpdate()); System.out.println("supportsSelectForUpdate : "+ metadata.supportsSelectForUpdate()); System.out.println("supportsStoredProcedures : "+ metadata.supportsStoredProcedures()); System.out.println("supportsSubqueriesInComparisons : "+ metadata.supportsSubqueriesInComparisons()); System.out.println("supportsSubqueriesInExists : "+ metadata.supportsSubqueriesInExists()); System.out.println("supportsSubqueriesInIns : "+ metadata.supportsSubqueriesInIns()); System.out.println("supportsSubqueriesInQuantifieds : "+ metadata.supportsSubqueriesInQuantifieds()); System.out.println("supportsCorrelatedSubqueries : "+ metadata.supportsCorrelatedSubqueries()); System.out.println("supportsUnion : "+ metadata.supportsUnion()); System.out.println("supportsUnionAll : "+ metadata.supportsUnionAll()); System.out.println("supportsOpenCursorsAcrossCommit : "+ metadata.supportsOpenCursorsAcrossCommit()); System.out.println("supportsOpenCursorsAcrossRollback : "+ metadata.supportsOpenCursorsAcrossRollback()); System.out.println("supportsOpenStatementsAcrossCommit : "+ metadata.supportsOpenStatementsAcrossCommit()); System.out.println("supportsOpenStatementsAcrossRollback : "+ metadata.supportsOpenStatementsAcrossRollback()); System.out.println("getMaxBinaryLiteralLength : "+ metadata.getMaxBinaryLiteralLength()); System.out.println("getMaxCharLiteralLength : "+ metadata.getMaxCharLiteralLength()); System.out.println("getMaxColumnNameLength : "+ metadata.getMaxColumnNameLength()); System.out.println("getMaxColumnsInGroupBy : "+ metadata.getMaxColumnsInGroupBy()); System.out.println("getMaxColumnsInIndex : "+ metadata.getMaxColumnsInIndex()); System.out.println("getMaxColumnsInOrderBy : "+ metadata.getMaxColumnsInOrderBy()); System.out.println("getMaxColumnsInSelect : "+ metadata.getMaxColumnsInSelect()); System.out.println("getMaxColumnsInTable : "+ metadata.getMaxColumnsInTable()); System.out.println("getMaxConnections : "+ metadata.getMaxConnections()); System.out.println("getMaxCursorNameLength : "+ metadata.getMaxCursorNameLength()); System.out.println("getMaxIndexLength : "+ metadata.getMaxIndexLength()); System.out.println("getMaxSchemaNameLength : "+ metadata.getMaxSchemaNameLength()); System.out.println("getMaxProcedureNameLength : "+ metadata.getMaxProcedureNameLength()); System.out.println("getMaxCatalogNameLength : "+ metadata.getMaxCatalogNameLength()); System.out.println("getMaxRowSize : "+ metadata.getMaxRowSize()); System.out.println("doesMaxRowSizeIncludeBlobs : "+ metadata.doesMaxRowSizeIncludeBlobs()); System.out.println("getMaxStatementLength : "+ metadata.getMaxStatementLength()); System.out.println("getMaxStatements : "+ metadata.getMaxStatements()); System.out.println("getMaxTableNameLength : "+ metadata.getMaxTableNameLength()); System.out.println("getMaxTablesInSelect : "+ metadata.getMaxTablesInSelect()); System.out.println("getMaxUserNameLength : "+ metadata.getMaxUserNameLength()); System.out.println("getDefaultTransactionIsolation : "+ metadata.getDefaultTransactionIsolation()); System.out.println("supportsTransactions : "+ metadata.supportsTransactions()); // System.out.println(" : "+ metadata.supportsTransactionIsolationLevel()); System.out.println("supportsDataDefinitionAndDataManipulationTransactions : "+ metadata.supportsDataDefinitionAndDataManipulationTransactions()); System.out.println("supportsDataManipulationTransactionsOnly : "+ metadata.supportsDataManipulationTransactionsOnly()); System.out.println("dataDefinitionCausesTransactionCommit : "+ metadata.dataDefinitionCausesTransactionCommit()); System.out.println("dataDefinitionIgnoredInTransactions : "+ metadata.dataDefinitionIgnoredInTransactions()); // System.out.println(" : "+ metadata.getProcedures()); // System.out.println(" : "+ metadata.getProcedureColumns()); // System.out.println(" : "+ metadata.getTables()); // System.out.println(" : "+ metadata.getSchemas()); // System.out.println(" : "+ metadata.getCatalogs()); // System.out.println(" : "+ metadata.getTableTypes()); // System.out.println(" : "+ metadata.getColumns()); // System.out.println(" : "+ metadata.getColumnPrivileges()); // System.out.println(" : "+ metadata.getTablePrivileges()); // System.out.println(" : "+ metadata.getBestRowIdentifier()); // System.out.println(" : "+ metadata.getVersionColumns()); // System.out.println(" : "+ metadata.getPrimaryKeys()); // System.out.println(" : "+ metadata.getImportedKeys()); // System.out.println(" : "+ metadata.getExportedKeys()); // System.out.println(" : "+ metadata.getCrossReference()); // System.out.println(" : "+ metadata.getTypeInfo()); // System.out.println(" : "+ metadata.getIndexInfo()); // System.out.println(" : "+ metadata.supportsResultSetType()); // System.out.println(" : "+ metadata.supportsResultSetConcurrency()); // System.out.println(" : "+ metadata.ownUpdatesAreVisible()); // System.out.println(" : "+ metadata.ownDeletesAreVisible()); // System.out.println(" : "+ metadata.ownInsertsAreVisible()); // System.out.println(" : "+ metadata.othersUpdatesAreVisible()); // System.out.println(" : "+ metadata.othersDeletesAreVisible()); // System.out.println(" : "+ metadata.othersInsertsAreVisible()); // System.out.println(" : "+ metadata.updatesAreDetected()); // System.out.println(" : "+ metadata.deletesAreDetected()); // System.out.println(" : "+ metadata.insertsAreDetected()); System.out.println("supportsBatchUpdates : "+ metadata.supportsBatchUpdates()); // System.out.println(" : "+ metadata.getUDTs()); System.out.println("getConnection : "+ metadata.getConnection()); System.out.println("supportsSavepoints : "+ metadata.supportsSavepoints()); System.out.println("supportsNamedParameters : "+ metadata.supportsNamedParameters()); System.out.println("supportsMultipleOpenResults : "+ metadata.supportsMultipleOpenResults()); System.out.println("supportsGetGeneratedKeys : "+ metadata.supportsGetGeneratedKeys()); // System.out.println(" : "+ metadata.getSuperTypes()); // System.out.println(" : "+ metadata.getSuperTables()); // System.out.println(" : "+ metadata.getAttributes()); // System.out.println(" : "+ metadata.supportsResultSetHoldability()); System.out.println("getResultSetHoldability : "+ metadata.getResultSetHoldability()); System.out.println("getDatabaseMajorVersion : "+ metadata.getDatabaseMajorVersion()); System.out.println("getDatabaseMinorVersion : "+ metadata.getDatabaseMinorVersion()); System.out.println("getJDBCMajorVersion : "+ metadata.getJDBCMajorVersion()); System.out.println("getJDBCMinorVersion : "+ metadata.getJDBCMinorVersion()); System.out.println("getSQLStateType : "+ metadata.getSQLStateType()); System.out.println("locatorsUpdateCopy : "+ metadata.locatorsUpdateCopy()); System.out.println("supportsStatementPooling : "+ metadata.supportsStatementPooling()); System.out.println("getRowIdLifetime : "+ metadata.getRowIdLifetime()); // System.out.println(" : "+ metadata.getSchemas(String catalog, String schemaPattern)); System.out.println("supportsStoredFunctionsUsingCallSyntax : "+ metadata.supportsStoredFunctionsUsingCallSyntax()); System.out.println("autoCommitFailureClosesAllResultSets : "+ metadata.autoCommitFailureClosesAllResultSets()); System.out.println("getClientInfoProperties : "+ metadata.getClientInfoProperties()); // System.out.println(" : "+ metadata.getFunctions()); // System.out.println(" : "+ metadata.getFunctionColumns()); // System.out.println(" : "+ metadata.getPseudoColumns()); // System.out.println("generatedKeyAlwaysReturned : "+ metadata.generatedKeyAlwaysReturned()); System.out.println("getMaxLogicalLobSize : "+ metadata.getMaxLogicalLobSize()); System.out.println("Retrieves whether this database supports REF CURSOR : " +metadata.supportsRefCursors()); } catch(Exception e) { e.printStackTrace(); System.out.println(e); } } } |
제목은 영어지만 내용은 한국어로
http://viralpatel.net/blogs/java-passing-array-to-oracle-stored-procedure
좋은 샘플 발견해고 코드 수정해서 돌려봤는데…
아무리 해도 응답값이 ARRAY.lengh() == 빵트루
뭐가 잘못된건가 싶어서 할 수 있는 모든코드에 디버깅을 돌려봤지만…
오라클은 디버깅이 안되지…
이런경우가 오랜만이라 쓸데없이 디버깅 하느라 반나절을 날려먹었다.
Solution : http://stackoverflow.com/questions/14998299/oracle-array-filled-with-null-data-in-java
이걸 항상 명심해야하는데말이지
알 수도 없고 디버깅 해도 안되는 오류는… 블랙박스 라이브러리의 버전 문제다.
이 프로젝트에는 오라클 ojdbc14.jar을 쓰고 있었는데
ojdbc6.jar + orai18n 이걸로 교체 해 주니 해결됐다.
코드에는 문제가 없었던걸로…
자바 개발을 하다보면 오픈소스만 쓰다보니 모든걸 직접 디버깅하고 오류를 발견할 수 있으리라는 착각에 빠지게 된다. 라이브러리도 정 맘에안드는 부분은 소스 수정하고 jar 패키징 다시해서 쓰기도 하고 하니까… github forking 해서 쓰기도 하고
오라클이나 SAP 등등 상용툴과 마주하게 되면 다른 개발습관이 필요한데
merge + ing
머징
Javascript에서 기본 오브젝트 정보를 가져올 때는 DOM구조를 타고 내려가는게 중요한데
location.href 라고 쓰는것은
window.document.location.href 와 동일하다.
1 2 3 4 5 6 |
예) http://memo.polypia.net/archives/2183 location.href http://memo.polypia.net/archives/2183 .host memo.polypia.net .protocol http: .pathname /archives/2183 |
요즘은 디버거가 잘 되어 있어서 location만 치면 객체구조를 확인가능하다.
테스트코드 짜다가 버리기 아까워서 저장.
타입선언
1 2 3 4 5 6 7 8 |
create or replace TYPE USER_OBJECT AS OBJECT ( V_USERNAME VARCHAR2(20), V_PHONE VARCHAR2(20), V_ADDRESS VARCHAR2(100) ); create or replace TYPE USER_OBJECT_ARRAY AS TABLE OF USER_OBJECT; |
테이블
1 2 3 4 5 |
CREATE TABLE USERTABLE ( V_USERNAME VARCHAR2(20), V_PHONE VARCHAR2(20), V_ADDRESS VARCHAR2(100) ) |
그냥 실행문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
DECLARE V_CODE VARCHAR2(100); V_MSG VARCHAR2(100); v_CNT NUMBER(4) :=0 ; v_userArr USER_OBJECT_ARRAY; v_user USER_OBJECT; BEGIN v_userArr := USER_OBJECT_ARRAY(USER_OBJECT('김유저', '010-000-3333', '서울시 전체'), USER_OBJECT('최유저', '010-4444-4444', '경기도 전체')); for i in 1..v_userArr.count loop dbms_output.put_line(v_userArr(i).V_USERNAME); end loop; END; |
프로시저
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
create or replace PROCEDURE MASS_USER_PROCEDURE ( v_userArr in USER_OBJECT_ARRAY, O_RESULR_CODE OUT VARCHAR2, O_RESULT_MESSAGE OUT VARCHAR2) IS --V_USERNAME VARCHAR2(20); --V_PHONE VARCHAR2(20); --V_ADDRESS VARCHAR2(100); i BINARY_INTEGER := 0; BEGIN for i in 1..v_userArr.count loop dbms_output.put_line(v_userArr(i).V_USERNAME); insert into usertable (V_USERNAME, V_PHONE, V_ADDRESS) values (v_userArr(i).V_USERNAME, v_userArr(i).V_PHONE, v_userArr(i).V_ADDRESS); end loop; commit; END MASS_USER_PROCEDURE; |
프로시저 호출코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
DECLARE v_code VARCHAR2(100); v_message VARCHAR2(100); v_userArr USER_OBJECT_ARRAY; v_user USER_OBJECT; BEGIN v_userArr := USER_OBJECT_ARRAY(USER_OBJECT('김유저', '0103333', '서울시 전체'), USER_OBJECT('최유저', '0104444', '경기도 전체')); for i in 1..v_userArr.count loop MASS_USER_PROCEDURE(v_userArr, V_CODE, V_MSG); dbms_output.put_line(v_CODE); end loop; END; |
제일 도움된 페이지 :
https://oracle-base.com/articles/8i/collections-8i