블로그 이미지
프로그램을 가장 훌륭하게 작성하는 방법은 상태가 변경되는 오브젝트들과 수학적인 값을 나타내는 오브젝트들의 조합으로 표현하는 것이다. -Kent Beck 초초초보

카테고리

Programming (184)
ASP.NET (9)
Silverlight (2)
Javascript (20)
C# (8)
java (25)
SQL (14)
Oracle (3)
MyBatis (3)
기타 (52)
개발방법론 (1)
trouble shooting (2)
Linux (5)
스칼라 (5)
html (2)
grails & gradle (3)
Spring (2)
rabbitmq (1)
(3)
spark (0)
docker (3)
Total
Today
Yesterday

달력

« » 2025.1
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

공지사항

최근에 올라온 글

Oracle 에서 데이터 중에 자바 프로퍼티가 들어가야 할 경우가 있다.

이때 자바 컨벤션에 맞게 치환해주는 함수를 만들어 봄.

예) DATA_FIELD_SET - > dataFieldSet

 

--함수만들기

------------------------

CREATE OR REPLACE FUNCTION UF_REPLACE_CONVENTION( V_P IN VARCHAR2)
RETURN VARCHAR2  IS
    V_RESULT VARCHAR2(1000) := '';
    V_TEMP VARCHAR2(1000) := '';
    V_TEMPINDEX NUMBER := 0;
BEGIN

V_TEMP :=  LOWER(V_P);

WHILE INSTR(V_TEMP, '_' ) > 0
LOOP
 V_TEMPINDEX := INSTR(V_TEMP, '_' );
    V_TEMP := SUBSTR(V_TEMP, 0, V_TEMPINDEX-1)|| UPPER(SUBSTR(V_TEMP, V_TEMPINDEX + 1, 1))|| SUBSTR(V_TEMP, V_TEMPINDEX + 2);
END LOOP;

 V_RESULT := V_TEMP;
RETURN V_RESULT;

END UF_REPLACE_CONVENTION;

 

 

--사용

SELECT UF_Replace_convention('DATA_FIELD_SET' )
FROM DUAL;

Posted by 초초초보
, |

log4sql - query log

java / 2013. 4. 3. 17:19

ibatis - log 대신 쓰면 설정도 편하고 좋은득!


http://dev.naver.com/projects/log4sql

Posted by 초초초보
, |

Conditionally Defining Spring Beans

http://robertmaldon.blogspot.kr/2007/04/conditionally-defining-spring-beans.html

 

Spring Custom XML Namespace 만들기 2. 레퍼런스

http://whiteship.me/?p=12878

 

jar 묶기

http://june7753.egloos.com/337816

Posted by 초초초보
, |

스프링 시큐리티 기초

java / 2012. 12. 23. 20:41

http://springmvc.egloos.com/504862

Posted by 초초초보
, |

svn comment 강제하기

기타 / 2012. 12. 22. 09:40
http://junghun.com/xe/index.php?document_srl=5069&vid=textyle

 

1. pre-commit 파일 작성

cd ~Repository/hooks/
cp pre-commit.tmpl pre-commit

 

2. 작성 내용

REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep [a-zA-Z0-9] | wc -c)
if [ "$LOGMSG" -lt 5 ]; then
/bin/echo -n "(Empty commit log) & (length(log) < 5) is NOT ALLOWED" 1>&2
exit 1
fi
exit 0

 

Posted by 초초초보
, |

JReBel

java / 2012. 11. 21. 11:10

http://belong2jesus.tistory.com/44

Posted by 초초초보
, |

 

출처 : http://whitecastle.tistory.com/37

 

펌...

EXP-00008: ORACLE 오류 6552가 발생했습니다
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다

character set 이 섞였기 때문이다.

/* Formatted on 2009/01/31 00:30 (Formatter Plus v4.8.8) */
SELECT DISTINCT (NLS_CHARSET_NAME (CHARSETID)) CHARACTERSET,
DECODE (type#,
1, DECODE (CHARSETFORM,
1, 'VARCHAR2',
2, 'NVARCHAR2',
'UNKOWN'
),
9, DECODE (CHARSETFORM,
1, 'VARCHAR',
2, 'NCHAR VARYING',
'UNKOWN'
),
96, DECODE (CHARSETFORM,
1, 'CHAR',
2, 'NCHAR',
'UNKOWN'
),
112, DECODE (CHARSETFORM,
1, 'CLOB',
2, 'NCLOB',
'UNKOWN'
)
) types_used_in
FROM SYS.col$
WHERE CHARSETFORM IN (1, 2) AND type# IN (1, 9, 96, 112);


결과에서

CHARACTERSET TYPES_USED_IN
-----------------------------------------------------
AL16UTF16 NCHAR
AL16UTF16 NVARCHAR2
AL16UTF16 NCLOB
AL32UTF8 CHAR
AL32UTF8 VARCHAR2
AL32UTF8 CLOB


위처럼이 아니라

CHARACTERSET TYPES_USED_IN
-----------------------------------------------------
AL16UTF16 NCHAR
AL16UTF16 NVARCHAR2
AL16UTF16 NCLOB
US7ASCII CHAR
US7ASCII VARCHAR2
WE8DEC VARCHAR2

US7ASCII CLOB


이런 식으로 하나의 varchar2 에 대해 2개의 characterset 이 나온다면 mix 된 것이다.

이 문제에 대한 처리는 아래처럼 하도록 한다.

a) INIT.ORA 안에 있는 parallel_server parameter 가 false 거나 아예 세팅되어있지 않은지 확인한다
SQL>show parameter parallel_server

b) 다음스크립트를 SQLPLUS 에서 "as sysdba"로 수행한다.
(물론 백업을 해두는 것도 있지 말자!)

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SHUTDOWN IMMEDIATE;
STARTUP;
-- yes, 2 times startup/shutdown . This is not a typo
SHUTDOWN IMMEDIATE;
STARTUP;

c) 만약 parallel_server parameter 를 고쳤다면 다시 원상복구한다.

This script doesn't change anything for the data that is already stored, but it
re-enforces database character set to be known in all places where it should be
stored

위 스크립트는 이미 저장된 데이터들을 바꾸지는 않는다. 단지 database 의 character set 을 그것이 저장되어지는 모든 장소에 다시 강제적으로 세팅할 뿐이다.

Posted by 초초초보
, |

Maven을 넘어 Gradle로 가자.

java / 2012. 10. 15. 15:39

http://kwon37xi.egloos.com/4747016

Posted by 초초초보
, |

해커스쿨 리눅스 연습

Linux / 2012. 9. 10. 19:41

http://www.hackerschool.org/Sub_Html/HS_FTZ/html/ftz_start.html

Posted by 초초초보
, |

출처 : http://support.microsoft.com/kb/601430/ko

(SET TRANSACTION ISOLATION LEVEL SERIALIZABLE )


NF: Transaction Isolation Level을 이해하기

기술 자료: 601430 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR601430

요약

이 문서는 한 세션 상의 모든 SELECT 문장에 대한 디폴트 트랜잭션 잠금 동작을 제어하는 Transaction Isolation Level에 대하여 설명합니다.

추가 정보

트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 Isolation Level이라고 합니다. 예를 들어, 한 사용자가 어떠한 데이터를 수정하고 있는 경우 다른 사용자들이 그 데이터에 접근하는 것을 차단함으로써 완전한 데이터만을 사용자들에게 제공하게 됩니다. 또한, 많은 사용자들의 수정 작업으로 인하여 통계 자료를 작성할 수 없는 사용자를 위하여 읽기 작업을 수행할 수 있도록 Isolation Level을 변경할 수 있습니다. 
ANSI에서 작성된 SQL-92 표준은 네 종류의 Isolation Level을 정의하고 있으며 SQL Server 7.0은 이 표준을 준수합니다. Isolation Level을 조정하는 경우 동시성이 증가되는데 반해 데이터의 무결성에 문제가 발생할 수 있거나, 데이터의 무결성을 완벽하게 유지하는 데 반하여 동시성이 떨어질 수 있으므로 그 기능을 완벽하게 이해한 후에 사용해야 합니다. 

다음은 SQL Server에서 지원하는 네 종류의 Transaction Isolation Level입니다.
- Read Uncommitted

- Read Committed

- Repeatable Read

- Serializable
  1. Read Uncommitted Isolation Level

    - SELECT 문장을 수행하는 경우 해당 데이터에 Shared Lock이 걸리지 않는 Level입니다. 따라서, 어떤 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 B라는 아직 완료되지 않은(Uncommitted 혹은 Dirty) 데이터 B를 읽을 수 있습니다.
  2. Read Committed Isolation Level

    - SQL Server가 Default로 사용하는 Isolation Level입니다. 이 Level에선 SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸립니다. 그러므로, 어떠한 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 해당 데이터에 접근할 수 없습니다.
  3. Repeatable Read Isolation Level

    - 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리므로 다른 사용자는 그 영역에 해당되는 데이터에 대한 수정이 불가능합니다. 가령, Select col1 from A where col1 between 1 and 10을 수행하였고 이 범위에 해당하는 데이터가 2건이 있는 경우(col1=1과 5) 다른 사용자가 col1이 1이나 5인 Row에 대한 UPDATE이 불가능합니다. 하지만, col1이 1과 5를 제외한 나머지 이 범위에 해당하는 Row를 INSERT하는 것이 가능합니다.
  4. Serializable Isolation Level

    - 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리므로 다른 사용자는 그 영역에 해당되는 데이터에 대한 수정 및 입력이 불가능합니다. 예를 들어, Repeatable Read의 경우 1에서 10 사이에 해당되는 데이터에 대한 UPADTE이 가능하였습니다. 하지만 이 Level에서는 UPDATE 작업도 허용하지 않습니다. 

    사용 방법:
    SET TRANSACTION ISOLATION LEVEL 
        {
            READ COMMITTED 
            | READ UNCOMMITTED 
            | REPEATABLE READ 
            | SERIALIZABLE
        }
    					
    즉, SET 문장을 이용하여 Transaction Isolation Level을 정의하게 되므로 해당 Session에서만 Isolation Level이 적용됩니다.

참조

현재 설정된 Isolation Level을 보고자 하는 경우 DBCC USEROPTIONS 를 이용합니다.

속성

기술 자료: 601430 - 마지막 검토: 2004년 3월 3일 수요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드: 
KB601430

Posted by 초초초보
, |