오래만에 오라클 관련 글을 포스팅 하게 되었습니다. 일반적인 게시판이라고 하면, varchar2(4000) 이나 clob으로 게시판을 구성하는 편인데, 특이하게도 long type 컬럼을 사용하는 경우가 생겼습니다. 평소에는 데이터를 담아 두고 꺼내쓰기만 하는데 검색기능이 급하게 추가가 되었는데, 신입 개발자분이 이걸 처리를 못하고 있는 듯해서 함수를 만들어서 long type을 varchar2(4000)으로 변환해서 사용할 노 있는 함수를 알려주게 되었는데요. 까먹을듯 해서 블로그에 올려 둡니다. 내용은 간단합니다. long으로 되어있는 컬럼 타입을 varchar2형태로 함수에서 임시변수에 담아 그걸 검색하는 방법으로 검색을 구현하게 되어 있었습니다. 당연하게도 rowid를 이용한 함수를 거친 검색이기..
사이트를 관리하다 보면 오라클 계정에 있는 특정 값을 검색해야 되는 경우가 있습니다. 예를 들어서 개인정보 보호법 때문에 주민번호를 지워야 되는 경우가 되겠지요. 그런데, 관리하는 사이트가 커서 컬럼이름을 알고는 있는데 어느 테이블에 값이 있는지 확인할 수가 없다면 일일이 하나씩 살펴보면서 확인을 해야 되는데 아래 쿼리는 한 번에 모든 칼럼의 값을 검색하여 특정 값을 찾는 방법입니다. 인터넷 뒤지다가 발견한건데 쿼리를 조금 수정해서 사용하려고 했는데, 일이 복잡해질 것 같아서 일단 보류하고 있는 중입니다. 왜냐하면 일단 칼럼 이름으로 검색을 한 뒤 그 칼럼 이름으로 검색한 값들을 다시 조회해야 하기 때문인데, 펑션이나 함수로 만들어서 처리하기에는 초보자분들이 따라 하기 힘들 것 같아서 글 쓰는 의미가 없..
실수로 디비 테이블을 날려먹고 아뿔싸... 하는 생각을 하신 분들이 꽤 되실 거라 생각 듭니다. 개발자로서 일을 처음 시작할 때 저 역시 작업하다 데이터를 날려먹고 사수한테 엄청 혼났던 기억도 났고, 후임으로 들어온 신입이 패스워드 칼럼을 전부 날려먹어서 복원했던 기억도 납니다. 롤백하면 되겠지 생각했는데 이미 커밋까지 다 해버렸고, 신입은 혼자서 어쩌지 하면서 시간을 보내고 있었네요^^ 이런 경험 들은 전부 가지고 계시죠? 오라클은 데이터를 FLASHBACK이라는 임시 저장소를 가지고 있습니다. 자료가 쌓이는 로그죠. 그래서 일정 시간 이내의 자료들은 어느 정도 복구가 가능합니다. 기준자료의 데이터가 바뀐 경우 TIMESTAMP라는 함수를 써서 아주 쉽게 복원할 수 있습니다. 하지만 테이블의 칼럼을 변..
특정기간을 기준으로 부서의 부분합계전 전체 통계를 구할경우 ROLLUP 함수가 아주 유용하게 쓰일 수 있습니다. 쿼리상이 아니라 소스상에서 따로 합계를 구해서 뿌려주려면 소스가 지저분해지며, 유지보수상에도 어려움이 생기기 때문이죠. 간단한 통계양식 쿼리입니다. 특정날짜에 자료가 있으면 1건 카운터를 하는 쿼리이며, 개수에 대한 카운티이 아니라 특정값에 대한 카운팅이면 특정값을 따로 넣어서 합계를 구하시면 됩니다. 특별히 어려운 쿼리가 아니니 천천히 분석해보시면 바로 이해하실꺼에요. SELECT 그룹기준값 , CASE WHEN 세부부서명 IS NULL THEN NVL(세부부서명,'부분합계') ELSE NVL(세부부서명,'총합') END AS 세부부서명 ,SUM(day01) AS day01 ,SUM(day0..
오래만에 블로그 주제에 걸맞는 글을 적어봅니다. 이것저것 블로그 테스트겸해서 생활정보를 계속올리고 있습니다. 사실 아이티쪽에 큰 이슈가 없어서 나태해진것도 있고, 공부도 할 시간이 안나서 글을 적기가 매우 힘드네요 ㅎㅎ 자바강의나 혹은 PHP 등을 공부하면서 블로그에 틈틈히 적을려고 하는데 이상하게 공부를 하련 회식에 야근에 그래서 생활정보 글도 때우고 있는 상태입니다. 이전에 중복제거에 관련해서 글을 쓴적이 있습니다. 2015/07/04 - [개발관련/ORACLE] - [오라클팁] 그룹함수로 중복된 컬럼 제거하기 이전에는 ROWID 가 아닌 그룹을 설정해서 처리를 하였는데요. 보다 간단하게 처리할 수 있는 오라클 중복제거 방법이 있어서 소개해 드립니다. 우선 중복제거를 위해서 ROWID란 부분을 살펴보..
오늘포스팅은 내용이 좀 짧을것 같습니다. 별달리 설명드릴게 없는데요. 오라클 내장함수인 Base64에 관한 인코딩,디코딩에서 알려드리겠습니다. 자바스크립트혹은 자바에서 사용하던 Base64 암호화 처리를 오라클에서 인코딩 디코딩을 할 수 있게 지원을 하고 있습습니다. 아래 인코딩, 디코딩 예제를 살펴보세요. /* 오라클 Base64 인코딩 함수*/ SELECT UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW('123456789'))) FROM dual; select UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW('123456789')) from dual; 복잡해보이지만 결국 단순합니다. [123..