본문 바로가기

데이타베이스(DB)

NULL값이 포함된 컬럼의 LIKE문에서 전체값을 가져오기 쿼리에 LIKE문을 사용할때 컬럼이 KEY 혹은 NOT NULL 항목이 아닌경우 WHERE 컬럼 LIKE ? || '%' 로 사용시 컬럼의 값이 NULL인경우 조회조건에 값이 없어서 전체 리스트를 가져와야 할경우 누락이 되어집니다. 그러므로 LIKE문을 사용시 WHERE (컬럼 LIKE ? || '%' OR ? IS NULL) 이런식으로 처리하시기 바랍니다. 더보기
ORACLE 에러 - ORA-01009 : 필수 매개변수가 없습니다. 에러 메세지 - ORA-01009 : 필수 매개변수가 없습니다. # 원인 - WITH문 사용시 구문 오류 발생 # 해결방법 - WITH문을 SELECT문으로 감싸면 오류 발생하지 않음 예를들어 WITH MASTER_TB AS ( SELECT AAA, BBB FROM TB_TABLE ) SELECT * FROM MASTER_TB 위와 같이 사용시 오류 발생하여 아래와 같이 변경함 SELECT * FROM ( WITH MASTER_TB AS ( SELECT AAA, BBB FROM TB_TABLE ) SELECT * FROM MASTER_TB ) 참고사이트 : http://otamot.tistory.com/101 더보기
ORACLE 에러 - ORA-01031 : insufficient privileges 에러 메세지 - ORA-01031 : insufficient privileges # 원인 - sqlplus / as sysdba 명령어 사용시 오류 발생 윈도우 사용자의 권한에 ora_dba 권한이 없어서 발생 # 해결방법 - 사용자 계정에 ora_dba그룹을 추가해주면 해결 참고사이트 : http://hwangmin84.tistory.com/92 더보기
ORACLE 에러 - ORA-12519: TNS:no appropriate service handler found 에러 메세지 - ORA-12519: TNS:no appropriate service handler found # 원인 - 프로그램에서 DB connect후 close를 해주지 않아서 오라클 프로세서의 수가 설정치를 초과한 경우 ORA-00020 과 동일 현상 # 해결방법 - C:\ORACLE PATH\dbs\init.ora 파일의 설정값중 processes = 150 의 값을 증가시킨후 저장 위와같이 해보니 적용이 안된다;;; 다시 확인 결과 아래와 같이 변경 가능하다 SQLPLUS에 sysdba 권한으로 접속후 alter system set processes=500 scope=spfile; 위 쿼리문 실행 후 DB 재시작 더보기
ORACLE 에러 - ORA-00020: 최대 프로세스 (150) 수를 초과했습니다. # 에러 메세지 - ORA-00020: maximum number of processes (150) exceeded, 최대 프로세스 (150) 수를 초과했습니다. # 원인 - 프로그램에서 DB connect후 close를 해주지 않아서 오라클 프로세서의 수가 설정치를 초과한 경우 # 해결방법 - C:\ORACLE PATH\dbs\init.ora 파일의 설정값중 processes = 150 의 값을 증가시킨후 저장 위와같이 해보니 적용이 안된다;;; 다시 확인 결과 아래와 같이 변경 가능하다 SQLPLUS에 sysdba 권한으로 접속후 alter system set processes=500 scope=spfile; 위 쿼리문 실행 후 DB 재시작 참고쿼리 : 현재 사용중인 세션 갯수 확인 select * .. 더보기
ORACLE 에러 - ORA-06413: 연결이 개방되지 않았습니다. # 에러 메세지- ORA-06413: 연결이 개방되지 않았습니다. # 원인- ORACLE 관리 툴인 Orange 3.0 설치시 64Bit 윈도우7에서 설치후 실행한후 ORACLE Connect시 에러 발생 # 해결방법- C:\Program Files (x86)\WareValley\Orange for ORACLE 3.1 DBA 위치의 프로그램을 C:\Program Files\WareValley\Orange for ORACLE 3.1 DBA 위치로 이동후 실행 더보기
구분자로 입력된 값을 행으로 분류후 통계 내기 WITH RTOTAL AS ( SELECT MAIN_SEQ, COUNT(MAIN_SEQ) AS TOT FROM S_REPLY GROUP BY MAIN_SEQ ) SELECT M.MAIN_SEQ, M.SUB_SEQ, M.IKEY, M.INAME, M.GNAME, NVL(R.CNT, 0) AS CNT, NVL(T.TOT, 0) AS TOT, ROUND((NVL(R.CNT, 0)/NVL(T.TOT, 0))*100, 1) AS RND, M.SORT FROM S_QUEST_MULTI M ,( SELECT IDX, QIDX, EX_SPLIT, COUNT(EX_SPLIT) AS CNT FROM ( SELECT IDX, QIDX, MEMBER_ID, REGEXP_SUBSTR(R.EX, '[^\;]+', 1, L.LEV.. 더보기
테이블 정보 조회 쿼리 SELECT * FROM ( SELECT A.TABLE_NAME, A.COLUMN_ID, A.COLUMN_NAME, A.DATA_TYPE, A.DATA_LENGTH, A.DATA_PRECISION, A.DATA_SCALE, A.NULLABLE, A.DATA_DEFAULT, B.COMMENTS FROM USER_TAB_COLUMNS A, USER_COL_COMMENTS B WHERE A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME ORDER BY A.TABLE_NAME, A.COLUMN_ID ) 더보기
ORACLE 에러 - ORA-01465: 16진수의 지정이 부적합합니다 # 에러 메세지 - ORA-01465: 16진수의 지정이 부적합합니다 # 원인 - INSERT, UPDATE 하러는 컬럼의 TYPE이 BLOB인 경우 문자열인 값을 입력하려는 경우 발생 INSERT INTO TB_TEST (T_BLOB) VALUES ('TEST') 위의 쿼리를 실행하면 에러 발생 # 해결방법 - INSERT INTO TB_TEST (T_BLOB) VALUES (UTL_RAW.CAST_TO_RAW('TEST')) 위와 같이 쿼리를 실행하면 정상적으로 처리됨 UTL_RAW.CAST_TO_RAW 대신 RAWTOHEX 를 사용해도 된다. # 추가사항 변환 저장된 문자열을 확인하려면 아래의 쿼리를 사용하면 된다. SELECT UTL_RAW.CAST_TO_VARCHAR2(T_BLOB) FROM T.. 더보기
Workbench에서 UPDATE 쿼리 실행중 Error Code: 1175 에러 발생시 # 에러 메세지 - Error: 1175 You are using safe update mode and you tried to update a table without a Where that uses a KEY column # 원인 - Safe 모드 상태로 설정되어 있어서 UPDATE시 KEY 컬럼을 이용하지 않을 경우 업데이트할수 없도록 설정됨 # 해결방법 - Workbench -> Edit -> Preferences -> SQL Queries -> "Safe Updates". Forbied UPDATEs and DELETEs winth no key in WHERE clause or no LIMIT clause. Requires a reconnection. 체크 해제 -> OK -> 쿼리창에서 SET .. 더보기