Table DDL 조회

select DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME ) from USER_OBJECTS where OBJECT_TYPE='TABLE'

VIEW DDL 조회

select DBMS_METADATA.GET_DDL('VIEW', OBJECT_NAME ) from USER_OBJECTS where OBJECT_TYPE='VIEW'

SEQUENCES DDL 조회

select DBMS_METADATA.GET_DDL('SEQUENCE', SEQUENCE_NAME) from USER_SEQUENCES

INDEX DDL 조회

select DBMS_METADATA.GET_DDL('SEQUENCE', SEQUENCE_NAME) from USER_SEQUENCES

부하 테스트시 에러

cubrid  & jboss select error 

에러 내용.

Error attempting to get column 'PORTLET_TYPE' from result set. 

Connection or Statement might be closed

cubrid error code  [-21017];

org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'COLUMN_NAME' from result set.  Cause: cubrid.jdbc.driver.CUBRIDException: Connection or Statement might be closed[CAS INFO-127.0.0.1:30000,2,28785],[SESSION-929488],[URL-jdbc:cubrid:127.0.0.1:30000:cubridTest:cubridTest:********:?charset=utf-8].; 
uncategorized SQLException; SQL state [null]; error code [-21017]; Connection or Statement might be closed[CAS INFO-127.0.0.1:30000,2,28785],[SESSION-929488],[URL-jdbc:cubrid:127.0.0.1:30000:cubridTest:cubridTest:********:?charset=utf-8].; nested exception is cubrid.jdbc.driver.CUBRIDException: Connection or Statement might be closed[CAS INFO-127.0.0.1:30000,2,28785],[SESSION-929488],[URL-jdbc:cubrid:127.0.0.1:30000:cubridTest:cubridTest:********:?charset=utf-8]. 
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) 
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) 
	at com.sun.proxy.$Proxy149.selectList(Unknown Source) 
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

 

해결 방법.

cubrid 

cubrid_broker.conf 파일에 아래 부분 추가. broker 부분 재부팅. 

STATEMENT_POOLING = ON 

 

jboss 설정

standdalone-ha.xml  파일의 datasource 영역에 아래 부분 추가. 

<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>




oracle 

DatabaseMetaData 


COLUMN_DEF 를 가지고 올때 

아래와 같은 에러가 발생하였다 .  


이유를 찾아본결과. 

java.sql.SQLException: 스트림이 이미 종료되었습니다

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)

at oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:166)

at oracle.jdbc.driver.LongAccessor.getString(LongAccessor.java:207)

at oracle.jdbc.driver.T4CLongAccessor.getString(T4CLongAccessor.java:390)

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:355)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1559)



/*

TABLE_CAT

TABLE_SCHEM

CHAR_OCTET_LENGTH

IS_NULLABLE

ORDINAL_POSITION

SQL_DATETIME_SUB

SQL_DATA_TYPE

ORDINAL_POSITION

 

// 조회를 할때 위에 필드가 COLUMN_DEF 보다 위에 있어서 나는 에러였다. 

순서 때문에 에러가 발생 위에 필드들은 COLUMN_DEF 보다 뒤에 get 해야 된다. 그럼 문제 해결. 

*/



ResultSetMetaData rsmd = null;

Connection conn = null;

ResultSet rs=null;

try {

conn = RDBConn.getConnection(dbAlias);

DatabaseMetaData dbmd = conn.getMetaData();

rs = dbmd.getColumns(null, null, tableNm, "%");

rsmd = rs.getMetaData();

int count = rsmd.getColumnCount();

String [] columns_key = new String[count];

for (int i = 1; i <= count; i++) {

columns_key[i - 1] = rsmd.getColumnName(i);

}

LinkedHashMap columns = null;

Reader input = null;

char[] buffer  = null;

int byteRead=-1;

String key  = "";

HashMap tc = null; 

while (rs.next()) {

tc = new HashMap();


/* 어디에 있어서 상관없는 필드들. 

NULLABLE

REMARKS

NUM_PREC_RADIX

DECIMAL_DIGITS

BUFFER_LENGTH

COLUMN_SIZE

TYPE_NAME

DATA_TYPE

COLUMN_NAME

TABLE_NAME

TABLE_SCHEM

TABLE_CAT

*/

tc.put("COLUMN_DEF", rs.getString("COLUMN_DEF"));


/*

TABLE_CAT

TABLE_SCHEM

CHAR_OCTET_LENGTH

IS_NULLABLE

ORDINAL_POSITION

SQL_DATETIME_SUB

SQL_DATA_TYPE

ORDINAL_POSITION

 

// 조회를 할때 위에 필드가 COLUMN_DEF 보다 위에 있어서 나는 에러였다. 

순서 때문에 에러가 발생 위에 필드들은 COLUMN_DEF 보다 뒤에 get 해야 된다. 그럼 문제 해결. 

*/


System.out.println(tc);

}

}catch (SQLException e1) {

e1.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}finally{

RDBConn.release(conn, null ,rs);

}




ldap그룹 정보의 uniquemember  삭제 .

netscape와 java api를 이용한 방법.

 

// netscape  api 이용.

 public void testRemoveUniqueMember() throws NamingException  {
  LDAPConnection ldapCon = getLdapConnection();

  boolean flag = false;
  String uniqueUserDn= "uid=123,cn=11,cn=users,dc=test,dc=co,dc=kr"; 

  String dn = "cn=11,cn=groups,dc=test,dc=co,dc=kr";
    try {
     LDAPModificationSet mods = new LDAPModificationSet();
     LDAPAttribute attr = new LDAPAttribute("uniquemember", fullDn);
     mods.add(LDAPModification.DELETE, attr);
     ldapCon.modify(dn, mods);
     flag = true;
    } catch (LDAPException e) {
     e.printStackTrace();
   
    }

 }


// java api이용
public void testRemoveUniqueMember() throws NamingException  {
    DirContext    ctx  = null;
    ctx  = getLdapConnection(); // ldap 접속
    ModificationItem[] modificationItems = new ModificationItem[1];
   

    String dn= "uid=123,cn=11,cn=users,dc=test,dc=co,dc=kr";  

    String uniqueUserDn= "cn=11,cn=groups,dc=test,dc=co,dc=kr"
    modificationItems = new ModificationItem[1];
    modificationItems[0] = new ModificationItem(ctx.REMOVE_ATTRIBUTE, new BasicAttribute("uniqueMember", uniqueUserDn));
    ctx.modifyAttributes(dn, modificationItems);

}

+ Recent posts