프로젝트 개발을 한참을 하다보면 DB 설정을 도대체 어디에 했는지 잊어 버릴수가 있습니다.특히 sqlplus로 개발이 아니라 DB 툴로 개발 하다보면 더욱더 그렇습니다. 아니면 누군가에게 인수인계시에 그 사람의 tns file이 어디에 있는지 확인 시에는 더욱더 그렇고요 우연히 PL/SQL Developer에서 tns file 정보를 찾는 방법을 찾았습니다. 아래의 화면에서 help를 클릭 하면 팝업이 뜨는데 거기에서 i를 클릭하면 아래와 같이 내용을 확인 할 수 있습니다.PL/SQL Developer 버전정보나 어디에서 실행 파일이 있는지 (Parameters)설정 위치나(Preference Files) oracle Aliases나 오라클 Homes 위치 TNS File 파일 위치언어셋 등을 확인 할 ..
고객사에가서 소스 배포를 할때 가장 어려운일은 DB관련 작업입니다. 제가 생각하기에는 대부분의 개발자 분들이 오라클로 개발을 할때는 sqlDeveloper나 toad 등 툴을 이용해서 개발을 하는데 실제로 고객사에 가서 작업을 하게 되면 SQLPLUS로 작업을 하게 됩니다. 그럴때는 정말로 여러가지 면에서 어렵습니다. 예를들어서 프로시져를 실행시킬때나 실행계획을 볼때나 그중 저에게 가장 어려운일은 한글입력이 되지 않을때가 가장 힘들었습니다. 해결 방법을 찾아보면 여러가지 내용이 있겠지만 가장 시도할만한 사항은 리눅스 서버일경우 오라클 계정의 .bash_profile를 수정하는 것입니다. 제가 만난 오류는 ora-01756 : quoted string not property teminated의 오류 메시지..
쿼리를 작성을 할때 보면 쿼리안에서 여러가지 이유로 select문에서 함수를 사용할 때가 많습니다.예를 들어서 select emp_no, get_emp_info(emp_no) as emp_info from emp_tab 처럼요.이때 get_emp_info가 어떤 함수일지는 모르지만 이런식으로 사용하게 되면 데이터가 많을 수록 쿼리의 속도가 많이 느려집니다.그렇다고 해서 함수를 사용하지 않고 inner join, left outer join를 하는 것도 추후 유지보수 시 힘들게 되고요.만약 사용하고 있는 오라클 DB 버젼이 10g 이상이라면 쿼리를 스카라 서브쿼리를 사용하는 것을 권유합니다.* 스칼라 서브쿼리이란 : SELECT문에 있는 서브쿼리[이전]select emp_no, get_emp_info(em..
프로젝트를 하다보니 이것저것 오류를 많이 만나게 됩니다.select query를 짜다가 보니깐 in으로 받게 되었는데 이때 받아오는 개수가 1000개가 넘어가니깐 아래와 같은 오류를 만나게 되었습니다.ORA-01795: maximum number of expressions in a list is 1000 인터넷에서 찾아보니깐 여러가지 방법이 있겠지만 가장 손수운 방법으로 찾은 것은 Multiple-Column Subquery으로 쿼리를 짜는 것이였습니다.* Multiple-Column Subquery : 결과 값이 두 개 이상의 컬럼을 반환하는 Subquery예를 들면 아래와 같이 짜면 됩니다.select t.id from tablename t where (t.name, 1) in ( (? ,1), (?..
프로젝트 도중에 제약조건을 모두 다 걸어 놓고 테스트를 진행 도중초기화(?) 쿼리를 준비해야 했었는데.. 제약조건을 걸때 개발자가 알기 쉽게 건 것이 아니라 SYS 블라블라로 되어있었어 초기화 쿼리를 준비하기가 어려웠다. 그럴때 아래의 쿼리을 확인 해보자..ㅎㅎ --테이블명으로 찾기SELECT* FROM ALL_CONSTRAINTS WHERETABLE_NAME = '테이블명'; --제약조건명으로 찾기SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = '제약조건' --관련된 제약조건 삭제ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 CASCADE;
오라클 문자열 컬럼에 숫자와 문자가 섞여있다면 어떻게 정리를 할까? 고민을 해보았는데데이터가 A-1, A-100, A-2을 A-1, A-2, A-100으로 정렬를 하고 싶다면 완벽하지는 않지만 아래의 방식이 어느정도 통하는 것 같다. 오라클 에서 정규식이라니.. ㅎㅎ 대박이다. 문자만 추출--SELECT REGEXP_REPLACE(c, '[0-9]') 숫자만 추출--SELECT REGEXP_REPLACE(c, '[^0-9]') SELECT 컬럼명FROM TABLEORDER BY REGEXP_REPLACE(컬럼명, '[0-9]') , to_number(REGEXP_REPLACE(컬럼명, '[^0-9]'))
고객사에서... 오라클 job이 돌아가지 않는다고 연락이 왔습니다. ㅜ.ㅜ 한참을 고민을 하다가... 제가 job를 잘못 만들었다는 것을 알게 되었습니다. 웹에서 일반적으로 job에 등록하는 프로시져를 파라미터가 없는 것을 위주로 설명을 해주는데요... 제가 만든 프로시져에서는 in 뿐만 아니라 out도 있기 때문에... 한참을 고민을 했습니다. 오라클 사이트 중 그루비를 통하여 아래와 같이 실행을 하고 해결 했습니다. DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( X ,'declare o_success_yn varchar2(1000); o_err_msg varchar2(1000); begin test(to_char(sysdate,''YYYYMM''), :o_succe..
유지보수를 하다보면은 DB 서버를 이전 할 경우가 있습니다. 뭐 여러가지로 확인 사항이 있겠지만은 제 생각에는 아래와 같이 쿼리를 준비해서 가면될 것 같은 생각이 있습니다. 혹시나 나중에 써 먹을 것 같아서 기록을 남겨요 오라클 버전 확인SELECT * FROM v$version WHERE banner LIKE 'Oracle%';오라클 문자셋 확인"SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET';SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_NCHAR_CHARACTERSET';"오라클 언어셋 확인SELECT name, value$ FROM sys.props$ WHERE name = ..
오라클을 사용하다 보면 가장 좋은 점은 오라클 만의 예약어(?)가 많다는 것입니다. 맞는지는 모르지겠지만 그 중 하나가 계층형 예약어 입니다. [예제 출처] http://www.gurubee.net/lecture/2223 아래와 같이 start with, connect by prior은 정말로 많이 쓰는 예약어 중 하나입니다. [사용법] start with ==> 루트노드 connect by prior ==> 부모와 자식노드들간의 관계를 연결 그런데 개발을 하다가 보니 현재 속해있는 계층형 데이터에 두번째 레벨의 데이터를 한개의 row에 표시해야 하는 경우가 생겼습니다. 한참을 고민을 하다가 sys_connect_by_path를 사용했습니다. sys_connect_by_path를 사용하면 특정 문자열로 ..
- Total
- Today
- Yesterday
- 덤프
- 가평팬션
- 오라클
- 부천역
- ora-01940
- 토드
- 임자도
- jdk
- 인천
- 보성녹차밭
- java api
- 테라로사
- 제주도여행
- 밀리세컨드
- PPTX
- 파주여행
- 인스타그램
- 담양 죽녹원
- 맛집
- 가평여행
- 이클립스
- 정동지
- 인천여행
- pdf ms워드 변환
- 대관령양떼목장
- oracle
- 산외한우마을
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |