본문 바로가기

DataBase/Oracle

문자열의 각 문자사이에 공백 삽입하기 아래 SQL문은 문자열에 있는 각 문자 사이에 공백을 삽입하는 문입니다. 참고하세요 =================================================================== WITH A AS ( SELECT SUBSTR(INPUT_STRING, LEVEL , 1) ch , ROWNUM RNUM FROM (SELECT 'OracleJava' AS INPUT_STRING FROM DUAL) CONNECT BY LEVEL 더보기
튜닝 대상 SQL문 & cursor_sharing 튜닝 대상 SQL문 & cursor_sharing DBA가 해야 하는 일중 중요한 한가지는 SQL문을 튜닝 하는 것인데 그러기 위해서는 우선적으로 튜닝의 대상이 되는 SQL문장을 찾아야겠죠…? 아래 스크립트는 parse call의 횟수가 SQL executions의 두 배 이상인 것을 추출하는데 이 SQL의 결과로 나타나는 SQL문장이 튜닝의 대상이 되는 것이죠^^ 또한 SQL문이 embedded literals(library Cache)에서 재 사용 성이 좋지 않은 SQL문을 추출합니다. --------------------------------------------------------------------------------- select sql_text, parse_calls, execution.. 더보기
중복 레코드 삭제 Primary Key나 Unique 제약조건을 만들기 전에 중복된 데이터를 삭제하는 방법 입니다. 우선 EMP TABLE에 처음엔 Primary Key 없었다고 가정을 할때... 나중에 EMPNO 컬럼으로 Primary Key를 만들기 전에 아래 처럼 삭제를 하면 되겠죠^^ DELETE FROM EMP WHERE rowid not in (SELECT MIN(rowid) FROM EMP GROUP BY EMPNO; 더보기
SQL * Loader ============ SQL * Loader ============ 이 툴을 만지리라 생각하셨다면..이미 테이블에 대한 설계가 끝난 상태일 것입니다.. 난 아닌디....하시는 분은... 머..기냥 보시구여.. SQL*Loader라는 툴은 테이블에 데이타를 집어 넣는 것입니다... 문자형에서 숫자형...이미지 까지 집어 넣을 수 있습니다.. 집어 넣는거야..insert문을 쓰거나 해서 집어 넣을 가 있습니다.. 그러나 1만건...10만건 또는 그 이상의 데이타를 집어 넣으려면.... 테이블은 만들었는데...데이타는 엑셀파일로 되어있다...쩝.. 보통의 노가다로는 해결할 수 없습니다... 그래서 등장한 툴이 바로 SQL*Loader입니다... 아주 멋진 툴입니다...막바로..기냥 테이블에 데이타를 때려 부.. 더보기
SQL* Loader 사용법 개발을 하다보면 대용량의 데이터를 handling 해야 하는 경우가 종종 있다. 나도 그렇게 많은 데이터를 다뤄보진 않았지만 1억건 정도의 데이터를 다뤘던 경험이 있다. 이런 큰 데이터는 한번 update를 하기만 해도 몇일씩 걸리는 경우가 허다했기 때문에 무척애를 먹었다. 배치 작업을 돌릴때, 타 시스템 에서 데이터 파일을 interface 받아서 테이블에 올려야 할 경우 빠른 속도로 데이터를 올릴 수 있는 방법으로 SQL* Loader를 사용 했었다. 그 사용법에 대해서 알아보자. SQL*LOADER =========================== - 외부 파일의 데이타 를 ORACLE 데이터베이스의 테이블에 넣는 유틸리티. - SQL*Loader를 사용하려면 외부 데이터화일과 콘트롤 파일이 필요함.. 더보기
SQL Loader 사용법 1.삽입할 DATA의 준비 "," 형식으로 뽑던지 TAB으로 구분되는 형식으로 뽑던지 알아서 한다. 파워빌더로 TAB형식으로 뽑을 수 있음 2.CTL파일의 작성 파일이름.ctl 을 아래와 같이 작성한다. LOAD DATA INFILE '부어넣을 데이터파일이름' APPEND INTO TABLE POST FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (칼럼이름목록) 만약 ","형식으로 분리할 경우에는 위의 X'09' TRAILING NULLCOLS 대신 "," 를 넣어준다. 칼럼이름목록 의 입력 예 code,codenm,codenm2 예를 들어 post.txt란 TAB으로 구분되는 형식의 데이터 파일을 post라는 테이블에 넣는 다면 소스는 다음과 같다. LOAD DATA .. 더보기
분석함수의 사용 분석함수의 사용 =============== 분석함수는 8i 버전에서 persnal edition, enterprise edition에서 지원하고, 9i버전에서는 모든 버전에 지원된다. 문법은 다음과 같다. SELECT Analytic_Function ( arguments ) OVER( [ PARTITION BY 칼럼 ] [ ORDER BY 절 ] [ Windowing 절] ) FROM 테이블 명; - Partition By : 전체 집합을 기준에 의해 소그룹으로 나눔 - Order By : PARTITION BY에 나열된 그룹을 정렬함 - Windowing : 펑션의 대상이 되는 행 기준으로 범위를 세밀하게 조정 (메뉴얼: window IS a physical or logical SET of rows).. 더보기
[Oracle]ora-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다 해결 방법 아래내용은 오라클 Bulletin 에 있는 내용입니다. ==================================================== ORA-54 WHEN DROP A TABLE(LOCK SESSION KILL) Bulletin no : 10060 ===================================================== ORA-54 WHEN DROP A TABLE(LOCK SESSION KILL) TABLE에 LOCK이 걸려 있어 DML 및 DDL 명령 사용 시 ORA-54 ERROR가 나오는 경우가 있다. 00054, 00000, "resource busy and acquire with NOWAIT specified" // *Cause: Resource.. 더보기
ORA-01786: FOR UPDATE 구는 사용할 수 없습니다 실행 쿼리 select max(nvl(SEQ_NO,0)) SEQ_NO from LAC_COLLATERAL_INOUT where COLLATERAL_NO = '801187336900' and BRANCH_ID = '8011' for update nowait Caused by: java.sql.SQLException: ORA-01786: FOR UPDATE 구는 사용할 수 없습니다 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processErr.. 더보기
오라클 8080포트 변경 1. Configuration and Migration Tools -> Database configuration assistant 실행 2. 데이터베이스의 데이터베이스 옵션구성 선택 3. DB 선택 4. 데이터베이스 기능창 -- >표준데이터베이스 기능 --> 사용자정의 버튼 5. Oracle XML DB 창에서 포트번호 바꾸고 확인버튼 이렇게 하면 된다. 추가) 포트를 아예 안쓰고 싶다면 5번 단계에서 'XML 프로토콜 비활성화'를 체크 추가) 포트를 아예 안써도 톰켓으로 8080포트를 사용할수 없습니다. 그니까 5번까지만 하시고 톰켓 사용하면 된다. 이 글은 cafe.naver.com/role에서 발췌, 수정 하였습니다. 더보기