반응형

전체 글 748

ORA-00604 나 ORA-01000 오류가 날 때

java.sql.SQLException: ORA-00604: 순환 SQL 레벨 1 에 오류가 발생했습니다ORA-01000: 최대 열기 커서 수를 초과했습니다 위와 같은 오류가 날 때는 Statement 나 ResultSet 을 open 하기만 하고 close 가 없어서 나는 오류 입니다. 특히 while, for 같은 루프문에서 적절한 위치에서 close 를 하고 있는 지 확인할 필요가 있습니다. 아래와 같은 샘플 코드가 있다고 했을 때 rsColumns.close(); 를 누락시켰을 때 위와 같은 오류가 발생되었다. 실제 코드는 while loop 가 길어서 ResultSet 닫는 것을 놓쳐도 눈에 잘 띄지 않아서 오류를 찾는데 어려움이 있었다. ResultSet rsTables = dbMeta.get..

JVM Garbage Collection 순간 포착

자바머신에서는 일정시간이 지나면 GC(Grabage Collection)라는 작업을 해 준다. 개발자로서는 일일이 메모리를 해제하지 않아도 된다는 생각에 마음껏 오브젝트를 생성해서 사용하겠지만 이정도의 출렁임임을 안다면 경계해야 할 것이다. 그래프에서 보듯이 이 순간에 시스템의 성능이 현저히 떨어지는 현상을 경험하게 된다. (거의 50%로 떨어짐) 안정적인 거래가 보장되어야 하는 금융거래에서 이런 출렁임은 정말 끔찍한 경우가 될 것이다. JVM 을 띄울 때 heap memory를 충분히 잡아 준다하더라도 이런 출렁임의 시간간격을 줄일 수 있을 뿐이다. heap메모리가 적을 경우 이런 멈칫 하는 출렁임을 더 자주 경험하게 되는 것이다. 이런 GC 작동은 예측할 수 없는 순간에 갑자기 찾아온다는 것이 치명적..

제5회 호주 부동산 세미나 (유칼리랜드 주최)

호주가 참 경기가 안 좋습니다. 물론 부동산 경기도 안 좋습니다. 지난 5월1일 호주 RBA 에서 기준금리를 0.5%를 내리면서 3.75%가 되었지요. 과거 2008년 금융위기 때에 금리가 3%대로 내려갔었던 것을 감안하면 불경기 임은 확실하네요. 미국과 일본은 초저금리 기조를 유지하고 있고 유럽과 캐나다의 기준금리는 1%이며 이웃국인 뉴질랜드도 2.5%인 것을 감안하면 호주의 기준금리는 여전히 다른 선진국에 비하면 매우 높은 현실입니다. 유럽 금융위기가 계속되고 있고 중국 경기가 하강추세에 있는 것을 고려한다면 호주 금리는 좀 더 내려가게 될 것이고 그러다보면 슬슬 부동산 가격 하락추세도 멈추게 되지 않을까 싶습니다만.. 그렇다면 지금 부동산을 투자해야 할까요. 더 기다려야 될까요? 경기가 좋던 나쁘던..

소나무와 잣나무를 구분하는 방법

소나무와 잣나무를 구분할 수 있는 방법은 일반인들이 잘 모르더라고요. 설마 아래 사진 처럼 구부정하면 소나무, 곧으면 잣나무 이렇게 구분하시는 분은 없지요? 이런 나무는 자란 환경이 안 좋아서 이렇게 휘어진 겁니다. 관상용으로는 멋있어 보이지만요. 애국가에 나오듯이 "남산위의 저 소나무 철갑을 두른듯" 소나무의 밑둥은 정말 갑옷을 입은 것 처럼 울퉁불퉁합니다. 소나무의 껍질은 이렇게 울퉁불퉁합니다. 그리고 나뭇잎은 두개입니다. 품종에 따라 잎이 세개인 소나무도 있습니다. 솔방울도 이렇게 달려 있습니다만. 모르는 사람은 잣방울인지 솔방울인지 잘 모릅니다. 잣나무는 소나무에 비하여 껍질이 매끈합니다. 그리고 잎이 5개입니다. 잎의 개수를 세어보면 잣나무인지 소나무인지 바로 구분이 가능하지요. 잣나무든 소나무..

한국생활기 2012.05.12

프로젝트 오픈

또 하나의 프로젝트를 마무리하게 된다. 지난 번 프로젝트는 한번 했던 업무라 수월한 면도 있었지만 이번 프로젝트는 새로운 환경과 기술, 새로운 역할을 부여받아서 고생을 많이 했다. 다행히 주위의 많은 분들이 도와주셔서 자리보존하고 끝까지 버틸 수 있었다. 주말없이 매일 출근에 8시 출근해서 10시 이전에 퇴근해 본 적이 없는 거 같다. 그런 덕분으로 많은 것을 경험할 수 있었던 프로젝트가 되었다. 그러나 아직도 어디가서 자바기술자로 대접받으려면 더 많이 배우고 익혀야 한다. ▲ 1년간 진행되었던 프로젝트가 오픈되면서, 프로젝트 AA, 공통업무PL로서 시스템의 안정적인 유지가 중요하다. 프로그램 코딩도 하고 시스템 모니터링도 하고 발생하는 오류에 대한 트러블슈팅을 해서 수정하도록 가이드하느라 밤을 새는 줄..

시스템 모니터링 전문 솔루션 온튠 설정법

온튠은 팀스톤이라는 회사에서 개발한 시스템 모니터링 솔루션이다. 설치가 간단하고 사용법도 어렵지 않아서 프로젝트 초기 오픈할 때 설치해서 시스템을 상황을 모니터링하는 용도로 활용하면 좋은 제품이다. 제품 설치 후 라이센스는 회사로 메일을 보내면 바로 받을 수 있다.부지런한 개발자라면 프로젝트 초기부터 설치해서 사용하면 더욱 좋다. 온튠은 시스템 상황을 모니터링하고 분석하는데 타의 추종을 불허할 만큼 탁월한 제품이기 때문이다. 분석 자료를 파워포인트 문서로 이쁘게 리포팅을 해 주는 기능은 정말 신기하다. 온튠시스템은 모니터링을 할 서버에 설치되는 에이전트 프로그램과 각 서버에서 수집된 정보를 전송받아 집계하는 매니저 프로그램으로 구성되어 있다. 또한 매니저서버에 접속하여 그래픽환경으로 보여주는 TeemVi..

디렉토리별 디스크 사용량 조사하여 정리하기

디스크가 꽉 차게 되면 로그를 쓸 수가 없어서 시스템이 멈춰 서게 된다. 그 전에 미리미리 디스크 스페이스를 관리해 줘야 한다. 예를 들어 /user01 디스크가 96% 사용되고 있는데 누가 이렇게 많이 쓰고 있을까? [/user01/app]df -k 파일시스템 1024블록 사용가능 %사용 Iused %Iused 마운트위치 /dev/hd4 5242880 4789020 9% 12024 2% / /dev/hd2 10485760 3058428 71% 73460 10% /usr /dev/hd9var 3145728 2775232 12% 7487 2% /var /dev/hd3 3145728 2078792 34% 289 1% /tmp /dev/hd1 3145728 3144680 1% 60 1% /home /dev/h..

java 문자열 처리

C에서는 strcpy 를 쓰면 간단히 해결될 일을 java 에서는 아주 어렵게 해결한다. 아직 자바가 익숙하지 않아서 인가?일단 String 은 char 의 배열이 아니라 객체 이므로 C 에서 처리 한글자를 지정해서 바꿀 수 없다. toCharArray() 메소드를 통해서 char[]로 변환한 다음에라야 C에서처럼 한글자를 바꾸거나 할 수 있다. 아래 로직은 매번 째 숫자에 정해진 가중치를 곱한 후 누적 합한 다음에 10으로 나눈 나머지를 구하여 체크디지트를 한자리 만드는 로직이다. class test { public static void main(String args[]) { String ticket1 = "123456789012"; String ticket2 = " "; int i, sum, rema..

Transaction rolled back because it has been marked as rollback-only

오픈을 앞둔 시점에 transaction 관리를 강화하기 위하여 transaction.xml 에 아래와 같은 AOP 를 추가하였다. 여기서 ${service.basePackage} 는 profile.properties 에 정의 되어 있다. 파일명이 Service로 끝나는 파일은 일괄 적용한다는 의미이다. 물론 이것의 구현체도 대상에 포함된다. 그랬더니 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has ..

중복 로그인 방지 로직

중복 로그인을 체크하는 로직을 구현하는 미션이 프로젝트 마지막 단계에 주어졌다. 중복 로그인했을 때 먼저 로그인한 사용자가 세션 아웃 되는 것을 표준으로 정하였다. 이 때 최종 접속자의 IP와 로그인시각을 안내 받아야 한다는 전제조건이 있다. 스프링에서 제공하여 security 기능을 이용하여 구현해 보고자 했으나 생각대로 잘 되지 않았다. 스프링 설정으로 중복 로그인을 체크할 수는 있었으나 최종 접속자의 IP와 접속시각을 보여주고자 하는 곳에서 난관을 만났다. 세션이 invalid 되었기 때문에 세션아이디를 비롯한 사용자아이디, 접속IP등 세션에 보관되어 있는 정보가 싸그리 사라져 버린 상황이었기 때문이다. 그래서 결국 로그인 히스토리를 보관하고 있는 테이블에서 정보를 추출하여 중복로그인을 체크하도록 ..

반응형