집에 있는 노트북이 점차 느려짐에 따라 포맷을 한 지 꽤 되었는데 그 후로 일이 시달리다 보니 간단한 일 외에는 노트북을 쓸 일이 없었습니다. 그러다가 이 번에 문득 생각이 들어 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을 컬럼에 넣지 않고도 ..
교육 다닐때는 항상 SQL Developer만 썼었는데, 회사를 들어오고 나서는 Toad for Oracle을 쓰게 되었습니다. 토드가 더 좋다는 말을 많이 들었기에 별 거리낌없이 설치하고 사용했습니다. 그런데, 지금까지는 뭐 딱히 DB를 쓸 일도 없었거니와 어떤 테이블이 안에 들어있는지만 확인하던 차였습니다. 그러다가 오늘 DB값이 잘 못들어가서 고쳐야할 상황이 와서 처음으로 토드를 실행시킨 후 쿼리를 작성하여 실행시켰습니다. 근데, 이게 왠걸? 다음과 같은 에러가 발생했습니다. 저는 처음에 제가 하도 SQL문을 날린지가 오래돼서 SQL문 작성하는데 실수를 했나? 싶었습니다. 그런데, 아무리 봐도 제가 쓴 SQL문에서 틀린 점을 찾을 수 없었습니다. 이게 뭔가?싶어서 구글에 검색해보니.... 한줄씩 실..
- Total
- Today
- Yesterday