사이트를 관리하다 보면 오라클 계정에 있는 특정 값을 검색해야 되는 경우가 있습니다. 예를 들어서 개인정보 보호법 때문에 주민번호를 지워야 되는 경우가 되겠지요. 그런데, 관리하는 사이트가 커서 컬럼이름을 알고는 있는데 어느 테이블에 값이 있는지 확인할 수가 없다면 일일이 하나씩 살펴보면서 확인을 해야 되는데 아래 쿼리는 한 번에 모든 칼럼의 값을 검색하여 특정 값을 찾는 방법입니다. 인터넷 뒤지다가 발견한건데 쿼리를 조금 수정해서 사용하려고 했는데, 일이 복잡해질 것 같아서 일단 보류하고 있는 중입니다. 왜냐하면 일단 칼럼 이름으로 검색을 한 뒤 그 칼럼 이름으로 검색한 값들을 다시 조회해야 하기 때문인데, 펑션이나 함수로 만들어서 처리하기에는 초보자분들이 따라 하기 힘들 것 같아서 글 쓰는 의미가 없..
실수로 디비 테이블을 날려먹고 아뿔싸... 하는 생각을 하신 분들이 꽤 되실 거라 생각 듭니다. 개발자로서 일을 처음 시작할 때 저 역시 작업하다 데이터를 날려먹고 사수한테 엄청 혼났던 기억도 났고, 후임으로 들어온 신입이 패스워드 칼럼을 전부 날려먹어서 복원했던 기억도 납니다. 롤백하면 되겠지 생각했는데 이미 커밋까지 다 해버렸고, 신입은 혼자서 어쩌지 하면서 시간을 보내고 있었네요^^ 이런 경험 들은 전부 가지고 계시죠? 오라클은 데이터를 FLASHBACK이라는 임시 저장소를 가지고 있습니다. 자료가 쌓이는 로그죠. 그래서 일정 시간 이내의 자료들은 어느 정도 복구가 가능합니다. 기준자료의 데이터가 바뀐 경우 TIMESTAMP라는 함수를 써서 아주 쉽게 복원할 수 있습니다. 하지만 테이블의 칼럼을 변..
특정기간을 기준으로 부서의 부분합계전 전체 통계를 구할경우 ROLLUP 함수가 아주 유용하게 쓰일 수 있습니다. 쿼리상이 아니라 소스상에서 따로 합계를 구해서 뿌려주려면 소스가 지저분해지며, 유지보수상에도 어려움이 생기기 때문이죠. 간단한 통계양식 쿼리입니다. 특정날짜에 자료가 있으면 1건 카운터를 하는 쿼리이며, 개수에 대한 카운티이 아니라 특정값에 대한 카운팅이면 특정값을 따로 넣어서 합계를 구하시면 됩니다. 특별히 어려운 쿼리가 아니니 천천히 분석해보시면 바로 이해하실꺼에요. SELECT 그룹기준값 , CASE WHEN 세부부서명 IS NULL THEN NVL(세부부서명,'부분합계') ELSE NVL(세부부서명,'총합') END AS 세부부서명 ,SUM(day01) AS day01 ,SUM(day0..
오늘포스팅은 내용이 좀 짧을것 같습니다. 별달리 설명드릴게 없는데요. 오라클 내장함수인 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..
예전에는 컬럼명, 테이블명, 계정별 테이블명, 코멘트를 조회하는 방법을 알려드렸는데요. 2015/08/10 - [개발관련/ORACLE] - 오라클 컬럼명, 테이블명, 계정별 테이블명, 코멘트 조회 오늘은 프로시저와 잡을 조회하는 방법을 알려드리겠습니다. 특별하게 어려운점은 없으니 그냥 조회만 하시면 문제없이 사용가능하실 꺼에요. 1.프로시저 조회 SELECT * FROM user_procedures WHERE object_name LIKE '%%' 2.프로시저 내용 SELECT text FROM user_source WHERE NAME LIKE '%%' 3.프로시저 내용 변수 조회 SELECT * FROM sys.user_arguments WHERE object_name LIKE '%%' 4.잡스케쥴러조..
계층형 쿼리는 워낙 많이 쓰이고 있고, 프로젝트 개발환경에 따라서 다양한 방법을 사용하고 있으니 그에 따라 적용을 하시면되시구요. 제가 설명드리는건 간단한 개념만 말씀드릴께요. 계층형쿼리를 들어가기전에 LEVEL에 대해서 잘모르시겠으면 아래 포스팅을 참고하세요. 참고 : 오라클 LEVEL 잘 사용하기(가로컬럼을 세로로 변환) 아래쿼리는 간단하게 계층형 쿼리를 만드는 예제입니다. 계층을 만드실려면 일단 구조부터 파악을 하셔야 되는데요. 기본적으로 필요한건 3가지가 있습니다. 첫번째 메뉴의 순번입니다. 핵심적인 부분은 아니지만 정렬해서 목록을 보여줄때 필요한 부분입니다. 넘버링 개념으로 생각하시면 됩니다. 두번째 해당되는 메뉴의 계층이 필요합니다. 상위부서와 하부부서를 구분할 수있게 계층을 나뉘어야 합니다...