오라클 DB 13

오라클 시퀀스는 한 개인데 NEXTVAL이 다르게 올라간 날

▶개요 최근 원래는 개별 테이블의 시퀀스를 사용하던 시스템을 늘 사용하다가 이번에 시스템이 개편되면서 모든 테이블이 한 개의 시퀀스를 바라보게 되었어요. 이런 경우에는 특정 개발자가 데이터를 적재할 때 NEXTVAL로 적재하면 문제가 생길 수 있었습니다. 어느 날 데이터가 들어가는데 시퀀스 때문에 오류가 나서 모니터링을 하던 도중 고객의 시퀀스가 저의 PC에서 올라가는 시퀀스보다 훨씬 높게 올라가고 있더라고요. 이게 말이 되는 건가 선배님들한테 물어보고 다니던 도중 어떤 부장님이 오셔서 알려주셨어요. ▶ 시퀀스 NEXTVAL이 다르게 올라감 해당 현상은 시퀀스에 설정된 캐시 때문이었습니다. 만약 시퀀스에 캐시가 100이 설정되어 있다면 오라클의 멀티 인스턴스 환경에서 [인스턴스 1]은 1부터, [인스턴스..

오라클 DB 2024.03.09

[Oracle] 오라클 잡 스케줄러 이름 변경 [JOB NAME CHANGE]

--올바르지 않은 SQL EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('기존 잡 이름','JOB_NAME','바뀔 잡 이름') 위 SQL은 스케줄러 속성 변경 명령어인데 COMMENTS 속성을 잘 변경해서 JOB NAME도 저렇게 변경해 볼라니까 잘 안되더라고요. 그래서 여기저기서 찾다가 스택오버플로우에서 JOB NAME 변경하는 법을 찾아봤어요. -- 올바른 SQL RENAME '기존 잡 이름' TO '바뀔 잡 이름' JOB은 DB 객체이기 때문에 이런식으로 RENAME을 해주어야 합니다. 정상적으로 변경 후 잡 수행 확인 완료.

오라클 DB 2023.06.08

VsCode Git Bash 터미널 사용 세팅 [React 리액트 Yarn]

리액트를 공부하던 도중 Git Bash에서는 되던 yarn 명령어가 VsCode 터미널에선 에러가 생겼어요. 왜그런지 해결법을 한번 찾아봤습니다. 세팅파일 수정 전 VsCode 터미널에서 실행되지 않던 yarn 버전확인 명령어. 이게 Git Bash에선 잘 되길래 VsCode 세팅쪽 문제가 아닐까 생각했어요. Vscode 세팅파일 수정을 진행하겠습니다/ Ctrl+, 로 세팅메뉴 오픈 후 오른쪽 상단에 종이모양의 Open Setting JSON접근. JSON 형식의 세팅값 입력. "terminal.integrated.shell.windows":"C:\\Program Files\\Git\\bin\\bash.exe" 터미널을 열어 yarn --version이 정상적으로 수행됨을 확인했습니다. VsCode를 사..

오라클 DB 2022.12.21

[Oracle] 오라클 그룹별 랭크 순위 [RANK OVER PARTITION BY | DENSE_RANK 차이]

[Oracle] 오라클 그룹별 랭크 순위 [RANK OVER PARTITION BY | DENSE_RANK 차이] 개요 그룹별 순위 데이터가 필요한 상황. 테이블에 여러 학급이 있다면 학급별 학생성적순 RANK 순위가 필요하여 데이터를 추출. RANK () OVER SELECT CLASS, RANK () OVER ( PARTITION BY CLASS ORDER BY STUDENT_SCORE DESC ) AS RNK FROM TABLE; PARTITION BY 다음에 오는 CLASS(반)는 그룹이 될 데이터. ORDER BY 다음에 STUDENT_SCORE(학생성적)은 순위를 매길 데이터. 학생 성적순으로 순위 데이터를 추출한다. 학생 성적은 높은순으로 높은 순위가 매겨지기 때문에 정렬을 DESC를 사용했..

오라클 DB 2022.08.01

[Oracle] 오라클 ORA-02292 무결성 제약조건 자식레코드가 발견되었습니다 처리내용

[Oracle] 오라클 ORA-02292 무결성 제약조건 자식레코드가 발견되었습니다 처리내용 개요 컬럼 데이터를 변경하려 시도하던 도중 에러가 발생. ORA-02292 무결성 제약조건 (SCHEMA.FK_NAME)이 위배되었습니다 - 자식 레코드가 발견되었습니다. 예전에 본 적이 있기도 한데 오랜만에 봐서 기억이 잘 안나서 구글링하여 처리했어요. 해당 에러는 부모의 데이터를 자식이 참조하고 있을 경우 표출됩니다. 1. 제약조건 검색 SELECT TABLE_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_NAME'; TABLE_NAME 검색 후 테이블설계 Script를 확인하여 어떤 컬럼에 FK가 생성되었나 확인. 2. 자식레코드 제거 & 데이터 수정 FK..

오라클 DB 2022.07.20

[Oracle] 오라클 다중 Replace의 대안 [Replace 여러개 방법]

[Oracle] 오라클 다중 Replace의 대안 [Replace 여러개 방법] 개요 컬럼이 약 600개정도가 있는 조회절이 있었는데 이 모든 컬럼을 다른 테이블의 매치되는 컬럼과 텍스트 REPLACE가 필요한 상황. 손으로 변경하면 시간도 꽤 오래걸리고 정확성도 떨어질 것 같아서 고민을 하다가 반복문을 사용해보기로 했어요. 1. CLOB테이블 생성 쿼리를 담을 CLOB 테이블 생성, SQL 저장. CREATE TABLE TMP_CLOB ( QUERY CLOB ); 2. 컬럼정보 테이블 생성 REPLACE할 컬럼정보 테이블 생성 후 데이터 적재. TMP_COL - TARGET_ID - 타겟컬럼 TMP_COL - REPALCE_ID - 변경될 컬럼 COL1 COL2 3. 반복문 작성 BEGIN FOR X ..

오라클 DB 2022.07.19

[Oracle] 오라클 잘못된 기본 키입니다 에러 [ORA-02437 을 검증할 수 없습니다]

[Oracle] 오라클 잘못된 기본 키입니다 에러 [ORA-02437 을 검증할 수 없습니다] 개요 오라클 기본키 생성 도중 만난 에러. 테이블 데이터 형태가 ID 하나에 여러개의 데이터가 속해있는 그런 형태였다. 예를들어 학급 하나에 20명의 학생이 존재하는 그런 데이터 형태. PK 지정을 학급아이디까지만 했는데 학급아이디는 테이블에 여러개이기 때문에 생긴 에러. ※ 최종으로 지정한 기본키가 테이블에 복수개인 경우 표출되는 에러 해결 PK지정을 시퀀스나 하위 아이디(학생아이디)까지 지정하여 해결. ALTER TABLE TMP_TEST ADD(PRIMARY KEY (RECORD_ID, SEQUENCE));

오라클 DB 2022.07.13

[Oracle] 오라클 TRUNCATE TABLE의 활용 [ORACLE 테이블 조회속도 향상]

[Oracle] 오라클 TRUNCATE TABLE의 활용 [ORACLE 테이블 조회속도 향상] 개요 어느 날 설계해놓은 데이터 조회 화면이 점점 느려지면서 제니퍼 모니터링 시스템에 빨간 점이 찍히기 시작했어요. 인덱스를 적용하고 오라클 플랜을 확인해도 별 다른 문제가 없는데 속도가 참을 수 없을 정도로 느려서 테이블스페이스 관련 문제가 아닌가 생각하기 시작했어요. 결국 테이블 TRUNCATE를 진행해보기로 합니다. 본 테이블은 데이터 DELETE / INSERT 등 데이터 변동이 자주 있고 약 80만건의 데이터가 있는 테이블입니다. 1.동일 테이블의 생성 CREATE TABLE TMP_TABLE AS SELECT * FROM T_BASE; 테이블 생성 후 동일한 WHERE절 조건으로 조회하니 속도가 빨라..

오라클 DB 2022.06.27