728x90
Last night, I have got request from my customer. He wanted to know how many XML nodes are there in XML log table placed in Oracle. I tried to find sufficient oracle function but couldn`t. So I make slightly dirty SQL query but it was very helpful to reduce manual job. Let`s see SQL query first.

SELECT xml_seq, 
       to_char((length(xml_recv)-length(replace(xml_recv,'<ITEM>',''))) / length('<ITEM>')) as item_count
  FROM tbl_xml_log
Look above SQL carefully. It looks dirty calculation about length of column but very simple. You can change <ITEM> to string that you want to count on specific column. It would be helpful for guys who want to count repeated character in specific column.

- NoPD -
728x90
728x90
오라클의 테이블에 DML 관련 작업을 하다보면 ORA-00054 에러를 종종 만나게 된다. (종종 만나지 말아야 하나, 어쩔 수 없이 만나는 듯) 인덱스 관련된 작업의 Lock 이나 기타 DML 작업에서 Lock 이 걸린 경우 이같은 증상을 많이 만날 수 있다.

STEP 1 : Lock 이 발생한 OBJECT 확인
SELECT object_id, object_type
    FROM dba_objects
  WHERE object_name='테이블 / 인덱스 이름';

STEP 2 : Lock 을 잡고 있는 세션 ID 확인
SELECT *
    FROM v$locked_object
  WHERE object_id='STEP1에서 검색한 object_id';

(오라클 사용자 이름과 세션 ID 를 기억해 둔다)

STEP 3 : Lock 을 잡고 있는 세션의 Serial 번호 확인
SELECT sid, serial#, command, taddr
    FROM v$session
  WHERE sid='STEP2의 세션 ID 번호';

STEP 4 : 세션 강제 종료
ALTER SYSTEM KILL SESSION '<세션 ID, Serial#>';

STEP 5 : 세션 종료 확인 및 Rollback 체크
SELECT used_ublk
    FROM v$transaction
  WHERE ADDR='<STEP3의 TADDR>';

참고 URL : http://kr.forums.oracle.com/forums/thread.jspa?messageID=1457903

- NoPD -
728x90
728x90
개인적인 용도로 오라클 리모트 쿼리를 하기 위한 간단한 웹서비스를 만드는데 엉뚱한 문제에 봉착을 했습니다. 로컬에 설치된 Toad, Aqua Data Studio 할 것 없이 오라클 서버에 아주 잘 접속하는 환경에서, 개발 작업을 진행하고 있었는데, 계속 " ORA-12154 : TNS:could not resolve the connect identifier specified " 에러가 발생하더군요.

일반적으로 오라클을 DB로 사용하는 개발업무 초기 / 환경설정 작업시에 늘 겪는 것과 마찬가지로 tnsnames.ora 파일등의 설정이 잘못된건가 싶어 확인을 해봤습니다. 아무런 이상이 없더군요. (Toad, Aqua가 도니 당연하겠네요;;;) 한참을 헤메인 끝에 원인을 엉뚱한 곳에서 찾았네요. (참고 URL : http://hoons.kr/Board.aspx?Name=Free&Mode=2&BoardIdx=14754&Key=&Value=)

처음 프로젝트를 생성했던 경로 이름에 "한글"이 포함되어 있는 것이 원인이었습니다. OracleClient 가 왜 프로젝트의 경로명에 영향을 받는지 까지는 정확히 원인을 모르지만 (사실 알고 싶지도 않고 ;;;) 따지지도 말고 묻지도 말고 이름이 영문으로만 구성된 경로로 이동시키니 아주 깔끔하게 오라클 DB에 엑세스를 하기 시작했습니다.

가끔 업무 편의를 위해서 간단한 프로그램을 만들다가 본의 아니게 이번 경우처럼 삼천포로 빠져서 색다른 사실들을 접하는 경우가 있습니다. 우리나라 개발자 여러분들의 생산성 향상! 을 위해서 이런 말도 안되는 팁은 적극적으로 공유를 해야할 것 같습니다. 되도 않는 네이뇬의 지식인보다 훈스 닷넷의 게시판에서 더 주옥같은 정보를 얻게 되서 나름 기쁜 마음을 감추기가 힘들군요. (경훈님께 막 아부하고 막이래?) 비슷한 원인불명의 오류로 고생하시는 분들, tnsnames.ora 파일 탓하지 마시고 경로 한번 확인해 보세요!

- NoPD -
728x90

+ Recent posts