집에 있는 노트북이 점차 느려짐에 따라 포맷을 한 지 꽤 되었는데 그 후로 일이 시달리다 보니 간단한 일 외에는 노트북을 쓸 일이 없었습니다. 그러다가 이 번에 문득 생각이 들어 Java도 다시 깔고 Oracle도 다시 깔려고 받아서 해봤는데, 예전에는 없던 에러가 마구 나타나기 시작했습니다. 처음에는 Oracle 12c로 설치하려 했는데 결국에 실패해서 11g로 다시 우회했다가 이것도 정상적으로 되지 않아서 삭제 후 또다시 12c로 갔다가 결국 포기하고 현재 11g로 다시 시도 중입니다. 끝나지 않았다는 사실이 가장 놀라운 포인트이긴 한데 어쩌면 Oracle을 노트북에 못 깔지도 모르겠다는 생각이 듭니다. 하긴 이 노트북 쓴 지가 6년이 넘어가니 혹사를 당하는 노트북이 죽여달라고 지르는 비명일지도 모르..
어디 프로젝트에 들어가냐에 따라 다르겠지만 계정들을 딱 용도에 맞게 분리시켜 생성하여 각 종 Synonym 및 권한을 주는 형식의 프로젝트가 있기 마련입니다. 그러다보니 일반적인 Delete가 아니라 아예 Table을 리셋 시키려 Truncate하고 싶은데 다른 계정에서 실행해보면 권한이 충분하지 않다면서 실행이 되지 않습니다. 다른 계정의 Table을 Truncate하기 위해서는 두 가지 방식이 있습니다. 1. 권한 주기 1 GRANT DROP ANY TABLE TO A cs 이렇게 ANY 권한을 주게 되면 A 계정에서 어떤 Table이든 간에 Truncate 시키는 게 가능합니다. 다만 이렇게 무지막지한 권한을 줬다가는 모든 Table들을 Truncate할 수 있으므로 위험할 수 있습니다. 따라서 아..
가끔 일하다보면 결과값이 여러개가 나온 쿼리 중에 하나 만을 골라야할 때가 있습니다. 그런데, 하필 불행하게도 후진 프레임워크를 맞이하게 되었거나 불가피하게 SQL문의 결과로 나온 결과값을 Map에 담지 못했다고 가정해 보겠습니다. 이럴 때면 여러 조건들을 추가해서 나오는 결과값을 줄여주거나 DISTINCT를 통해 중복값을 없애주거나 ROWNUM을 넣어서 결과값이 SQL문으로 감싸 그 중 ROWNUM값이 1인 것을 선택해주는 방식이 있을겁니다. 지금 제가 적으려는 방식은 ROWNUM을 컬럼에 넣지 않고 바로 ROWNUM을 사용하는 방식입니다. 1SELECT * FROM JOBS WHERE ROWNUM = 1 ORDER BY MAX_SALARY;cs 이런 식으로 사용하면 ROWNUM을 컬럼에 넣지 않고도 ..
회사가 자체적인 솔루션이나 Framework 안에 Paging 처리를 포함하고 있다면 볼 필요가 없는 사항이지만, SI 업계 특성상 자신의 회사의 Framework를 적용하지 못하는 일도 빈번하고 있다고 하더라도 찾아서 적용시키는 일은 시간이 걸립니다. 따라서, 간단하게 Oracle을 통해서 Paging처리를 하는 것에 대해 정리하고자 합니다. 시작은 ROWNUM을 통한 가장 간단하고 기초적인 Paging처리 부터 시작해서 ROW_NUMBER() OVER()를 통한 순서 정리와 COUNT(*) OVER()를 통한 Paging Navigation 대처까지 해보도록 하겠습니다. 1. ROWNUM을 통한 Paging 먼저 ROWNUM을 통한 가장 간단한 Paging을 진행하도록 하겠습니다. 기본적인 형태는 아..
- Total
- Today
- Yesterday