Category Archives: etc

oracle characterset 확인.

ORA-29275
서버와 클라이언트 간의 characterset이 상이한 경우에 발생한다고 하는데…이 경우에는 아래와 같은 방법으로 서버측의 characterset을 확인해서 client의 characterset을 변경하거나…..아니면 서버측의 characterset을 변경하는 방법이 있으나….서버측의 characterset을 변경하면 해당 DB에 접근하는 모든 사용자들이 로컬 환경에서 characterset을 변경해야 하니, 서버측의 characterset을 확인하고 자신의 로컬 캐릭터셋을 변경하는게 정신 건강에 이롭다.

select *
  from nls_database_parameters
 where parameter like '%CHARACTERSET%'

위의 쿼리를 실행해보면 NLS_CHARACTERSET 이 조회되는데, 이게 서버에 현재 설정된 캐릭터셋이니, 이대로 로컬 환경을 설정을 변경해주면 된다.

개인적으로 Windows 7 64bit 버전을 사용하는 관계로 regedit로 레지스트리 편집기를 실행하면 아래 경로에서 NLS_LANG의 값을 서버측과 동일하게 변경해주면 된다.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1
32bit OS를 사용중이라면 Wow6432Node가 없고, SOFTWARE바로 아래에 ORACLE이 존재한다.

서버측의 NLS_CHARACTERSET에 UTF8 이라면 NLS_LANG 값을.. KOREAN_KOREA.UTF8 처럼 변경하면 된다.

 

오라클 에러코드만 보고 검색을 하면 위와 같은 내용이 대부분이고… 실제로 서버와 클라이언트 간에 characterset이 일치함에도 불구하고 계속 동일한 에러코드를 반환하는 경우에는 컬럼 내부에 해당 characterset으로 인식이 안되는 문자가 포함된 경우라 볼 수 있다.

일단 어떤 컬럼에 데이터가 문제인지를 찾기 위해, 테이블 내 컬럼중 의심되는 컬럼만 제외하고 조회를 해서 정상적으로 조회가 안되는 컬럼명을 찾고…… 그 다음으로 대략적인 조건으로 조회건수를 조절해서 문제가 되는 row를 찾아서 해당 컬럼의 값을 update시키거나, 삭제하면…잘 작동함.

 

eclipse에서 메소드 구현부를 바로 찾아가도록 설정하는 방법

현재 파견나와 있는 고객사의 개발환경에서 spring을 사용중인데, Service 레벨의 Mgr 선언부 class가 존재하고, 실제 구현부에 해당하는 MgrImpl 파일이 따로 존재한다.

eclipse에서 다른 클래스의 메소드를 호출하고 있는 경우 해당 메소드로 바로 이동하여 구현내역을 확인하고 싶다면 메소드 위에 커서를 옮기고 F3 버튼을 누르면 해당 클래스의 해당 메소드로 이동하게 된다.

그런데 현재 프로젝트와 같이 메소드의 선언부와 구현부가 *Mgr.java와 *MgrImpl.java 형태로 분리되어 있는 경우 F3버튼을 누르면 그냥 *Mgr.java로 이동하기 때문에 실제 구현내역을 확인하는데 애로사항이 있다.

물론 마우스의 ctrl 키를 누른 상태에서 해당 메소드에 커서를 올려두면 Open Declaration과 Open Implementation 중에서 선택해서 바로 이동할 수도 있긴하다.

하지만 키보드를 주로 사용하는 내 경우에는 일일이 마우스에 손을 옮기는게 귀찮아서….키보드 단축키를 아래와 같은 방법으로 등록해서 사용한다.

Window – Preferences – General – Keys 메뉴를 열어서….
Open Implementation 항목을 찾아보면 Binding 부분이 비어있는게 단축키가 설정된게 없음을 확인할 수 있다.

Binding에 커서를 옮기고 Shift + F3을 누르고 적용버튼을 클릭해주면 이후에는 Shift+F3만 누르면 바로 해당 메소드의 구현부로 이동할 수 있다.

아울러 eclipse 안에서 여러개의 파일을 열어서 편집하는 도중에 이전/다음 파일을 오가는 경우 보통 윈도우 환경에서 공통적으로 사용하는 Ctrl + Tab 버튼이 아니라, Ctrl + F6 버튼으로 설정되어 있는데, 같은 방법으로 Next Editor 항목을 찾아서 기존의 설정된 Ctrl + F6을 지우고, Ctrl + Tab으로 변경하여 사용할 수도 있다.