본문 바로가기
  • 읽고보고쓰고

PROGRAMMING/Database51

[ORACLE] DB Object 목록 가져오기 쿼리 원하는 DB Object를 쿼리로 호출해서 찾아야할 때가 있다. 언제일까? 2 개의 동일한 DB의 Object를 비교해야 하는 상황이라고 할까? 개발 DB와 운영 DB를 비교해야 하는 상황에도 필요하겠다. /* 오라클 Function 목록 가져오기 */ select Object_Name from user_objects where object_type = 'FUNCTION' order by Object_Name; /* 오라클 Procedure 목록 가져오기 */ select Object_Name from user_objects where object_type = 'PROCEDURE' order by Object_Name; /* 오라클 View 목록 가져오기 */ select Object_Name from .. 2022. 9. 4.
[ORACLE] 테이블 스페이스 확인 쿼리 테이블 스페이스의 정보를 확인 하는 쿼리다. SELECT A.TABLESPACE_NAME, ROUND(A.BYTES_ALLOC / 1024 / 1024, 2) CURRENT_SIZE, ROUND(NVL(B.BYTES_FREE, 0) / 1024 / 1024, 2) FREE_SIZE, ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024, 2) USED_SIZE, ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) FREE_RATE, 100 - ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) USED_RATE, ROUND(MAXBYTES/1048576,2) MAX.. 2022. 9. 4.
[ORACLE] 테이블 설명과 Row 수 확인 테이블 설명과 Row수를 확인해야 할 때가 있다. 간혹 count(*) 로 테이블 row 카운트를 구하는 경우도 있는데, 전체 테이블에 대한 것은 아래로 구해도 될 것 같다. SELECT A.TABLE_NAME , B.COMMENTS , A.num_rows FROM ALL_TABLES A , ALL_TAB_COMMENTS B WHERE A.TABLE_NAME = B.TABLE_NAME and A.owner = B.owner and A.owner = 'HR' ORDER BY A.TABLE_NAME; 2022. 9. 4.
[ORACLE] DB Lock 확인 쿼리 DB Lock 걸렸는지를 확인하는 절차를 아래의 쿼리를 순차적으로 처리하여 알 수 있다. /* 1. check lock object */ SELECT OBJECT_ID , SESSION_ID , ORACLE_USERNAME , OS_USER_NAME FROM V$LOCKED_OBJECT; /* 2. check sid, serial no , object name */ SELECT A.SID , A.SERIAL# , OBJECT_NAME , A.SID || ', ' || A.SERIAL# AS KILL_TASK FROM V$SESSION A INNER JOIN V$LOCK B ON A.SID = B.SID INNER JOIN DBA_OBJECTS C ON B.ID1 = C.OBJECT_ID WHERE B.T.. 2022. 9. 4.
[ORACLE] 테이블 명세서 추출 쿼리 오라클에서 사용하는 테이블명세서 추출 쿼리다. SELECT A.OWNER , A.TABLE_NAME , A.COLUMN_ID , A.COLUMN_NAME , B.COMMENTS , A.DATA_TYPE , A.DATA_LENGTH , A.NULLABLE FROM ALL_TAB_COLUMNS A inner join ALL_COL_COMMENTS B on A.owner = B.owner and A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME WHERE A.OWNER = 'HR' /*DB 소유자를 넣어줌*/ ORDER BY A.TABLE_NAME, A.COLUMN_ID; 2022. 9. 4.
[ORACLE] 로그 찍어 보기 대개 로그는 아래와 같이 찍어야 볼 수 있다. DBMS_OUTPUT.PUT('로그 내용'); 하지만, 이렇게 찍어도 보여지지 않을 때가 있는데 이유는 아래의 설정을 하지 않았기 때문이다. 아래의 2줄을 모두 호출하여 결과 값에 ON 이 나오도록 한다. (간혹 OFF가 나오면 다시 호출해 주면 됨) SHOW SERVEROUTPUT; SET SERVEROUTPUT ON; 그럼 이제 원하는 로그를 찍어서 볼 수 있을 것이다. 2022. 9. 4.
[ORACLE] Oracle Developer에서 Template 기능 사용하기 Oracle Developer 에서 내가 매우 잘 쓰는 기능은 단연 불필요한 키보딩을 줄여주는 Template 기능이다. 내가 사전에 만들어놓은 약어, 가령 "ord" 를 치고 Ctrl + Spacebar를 누르면 자동완성된다. 같은 키워드가 포함된 template이 많은 경우, 목록이 표시된다. Template 설정은 Oracle Developer 의 [도구] > [환경설정] 을 클릭 해야 하며, 열린 팝업에서는 아래 처럼 [데이터베이스] > [SQL편집기 코드 템프리트] 를 선택해야 한다. 목록에서 왼쪽 컬럼의 ID는 키워드를 의미하고, 오른쪽 (템플리트) 컬럼은 코드조각이 위치하는 곳이다. 템플리트 컬럼에 마우스를 갖다대면, 오른쪽에 연필모양(수정) 버튼이 나오고, 이를 클릭하며 아래와 같이 코드 .. 2022. 9. 4.
[데이터베이스] ORA-01013 사용자가 현재 작업의 취소를 요청했습니다. (user requested cancel of current ope ORA-01013 오류는 TimeOut 오류다. 대부분의 글들을 보면, TimeOut 시간을 늘려주라해서 문제를 해결했는가 본데, 내경우는 달랐다. Java 에서 해당 Insert 문을 프로시저를 통해 처리했는데, 아직 Transaction이 완료되지 않은 상황에서 바깥에서 한 번 더 Insert 문을 처리한 경우였다. (결국 중복) 원인은 한 번 더 Insert를 생성하던 부분에서 아래와 같은 어노테이션이 발견된 것인데, 이런 연유는 이커머스 결제 특성상 PG사 결제를 처리해야했기 때문에 별도의 Transaction을 넣어준게 원인이었던 것. @Transactional(propagation=Propagation.REQUIRES_NEW) 하지만 위 코드의 문제는 아니다. 지금까지 문제는 없었다. 그저 앞.. 2022. 8. 28.
Oracle 날짜의 두자리를 한 자리로 표현 이것을 찾으려고 하면, 뭐라고 검색할지 참 당혹스럽다. 결국 구글링에서 다음과 같은 검색어로 "oracle to_char one digit month" 찾을 수 있었다. select to_char(sysdate, 'DD') from dual; 이라고 하면, 해당 날짜가 02 이렇게 표현된다. 원하는 것은 이것이 2 로 표현되어 보이도록 하는 것이었다. select to_cha.. 2018. 11. 23.
Oracle SP 결과를 목록으로 받기 간단하게 아래와 같이 하면 될 듯. MS-SQL 과 뿌려주는 방식이 너무 다른 이 기능 때문에, 오히려 어렵게 느껴질수도 있겠다 싶음. create or replace PROCEDURE SP_CHK_WEB_MEM ( I_USER_ID IN VARCHAR2 , I_USER_PW IN VARCHAR2 , RESULT_LIST OUT sys_refcursor ) AS BEGIN OPEN RESULT_LIST FOR SELECT usernm, telnum, email FROM tb_user WHERE usernm.. 2018. 10. 19.
공휴일 목록 (1949~2200년) 엑셀로 정리해야 하는데, 이 프로젝트 룸에서는 모두 DRM이 걸리니, 일단 TXT 파일로 처리함. 모두 복사해서 엑셀에 붙이면 됨. 휴일목록.txt 2018. 10. 1.
공통테이블과 조인 다양한 로직 구현을 한 번의 쿼리로 끝낼 수 있는가는 쿼리를 다루는 사람들에게 있어서는 일종의 장인정신에 가까운 영역이다. 물론 속도 최적화를 위한 고도의 영역과는 별개라고 생각한다. 거기는 내가 아직 도달하지 못한 영역이라 자신 할 수 없다. 최근에 with cte as 로 시작.. 2018. 5. 5.
반응형