반응형

db 6

sh 활용 파일 비교

매일 파일을 받아 데이터를 갱신하는 경우 어떤 데이터가 갱신되었는지 확인해야 하는 일이 있다.db로 처리하기에는 너무 오래 걸리기에 sh에서 diff 명령어 파일끼리 비교하기로 했다.#!/bin/bashPREV_FILE=$1LACAL_FILE=$2diff 이렇게 하면 이전 파일과 현재파일을 sort한 후 행 끼리 비교하게 된다. 모든 행을 비교하면 차이가 나는 경우 다음과 같이 결과가 출력된다. 예시:$PREV_FILE의 정렬된 내용이 다음과 같고applebananacherry그리고 $LOCAL_FILE의 정렬된 내용이 다음과 같은경우.applebananadate이때 diff 3c3 date이는 $PREV_FILE의 3번째 줄 "cherry"가 $LOCAL_FILE의 3번째 줄 "date"로 변경되었음을..

리눅스 2025.06.02

인덱스와 DB통계

오라클에서 쿼리를 실행시키는데 이상하게 특정 쿼리가 무한로딩이 걸리는 일이 생겼다.정확히는 특정 테이블에서만 발생했었다. 선결론 : 테이블의 통계정보 문제였다.ANALYZE 명령어로 해결되었다. 다음과 같은 쿼리였다.select COUNT(1) AS CNTfrom (select * from T_TAA where F_STATUS in ('W', 'P')) T1 join T_TBB T2 on T2.F_CD = T1.F_CD;일단 실행계획부터 확인해봤다.정상적으로 인덱스도 타고 cost 소모도 크지않았다. 두번째로 TEMP 사용량 체크SELECT tablespace_name, used_blocks, free_blocksFROM v$sort_segment;용량 문제 없었다. 세번째로 PGA 메모리..

DB/Oracle 2025.04.30

리눅스 DB 백업 및 복원

오라클 백업# 기본 명령어exp [사용자 이름]/[비밀번호] tables=[테이블 이름] file=[백업 파일 이름].dmp# 특정 테이블 백업exp 사용자이름/비밀번호 tables=테이블명 file=백업파일이름.dmp log=로그파일명.log direct=y compress=n statistics=none# 특정 테이블 여러개 동시백업exp 사용자이름/비밀번호 tables=TABLE1,TABLE2,TABLE3 file=백업파일이름.dmp statistics=none# 특정 사용자의 테이블 백업exp 사용자이름/비밀번호 owner=사용자이름 file=백업파일이름.dmp log=로그파일명.log direct=y compress=n statistics=none# DB전체백업(DBA 비밀번호필요)exp sys..

리눅스 2025.04.09

쿼리 조건절 유의점

어찌보면 당연하지만 가끔씩 깜빡하는게 하나있다. 간단한 예시를 하나 들자면난 t_main 테이블의 f1 필드에 test 라는 데이터를 제외한 모든 데이터를 불러오려고 한다. 아래와 같이 쿼리를 짰다.select * from t_main where f1 != 'test';얼핏보면 문제가 없어 보이지만 저렇게 하게되면 f1필드의 데이터가 test가 아님에도 불구하고 검색되지 않는 것들이 발견된다.바로 f1이 null 인 데이터들은 결과로 나오지않는다... 이걸 주의해서select * from t_main WHERE f1 IS NULL OR f1 != 'test';or null 처리를 하거나 nvl 처리를 해주자(가급적 or 처리가 좋다)

DB 2024.08.24

오라클 DB링크

오라클의 DB의 실제 운영서버에서 개발서버 쪽으로 데이터를 옮겨야하는 상황이 있었다.예전이였으면 데이터를 파일로뽑고, 그 데이터를 sqlldr로 넣는 방식으로 옮겼겠지만 이번엔 DB링크로 옮기게 되었다. 기존에 같은 서버에서 다른 스키마의 DB까지는 접근해서 사용했는데 다른 서버의 DB를 가져오는 링크는 처음 만들어봤다. (DBA한테 허락을 받았다) 자 만들어보자CREATE DATABASE LINK LIVE_MY_MAP -- 링크로 사용할 이름CONNECT TO MYMAP -- 링크할 서비스 DB 이름IDENTIFIED BY "TESTPWD123" -- 비밀번호 쌍따옴표 필수USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =..

DB/Oracle 2024.07.05

웹서버, DB서버 분리 및 연동

virtualbox 로 가상머신 2대를 만들어 웹과 db서버를 분리하는 과정을 진행했다. 처음에는 둘다 net 설정으로 했다가 웹서버는 net과 host-only 설정 DB서버는 host-only 설정으로 하여 외부에서 DB서버로는 직접 접근이 불가능하도록 계획을 하고 진행하였다. 기본적인 각 서버 세팅은 모두 완료되었다. 웹서버에 php를 깔고 oci와 instant client를 깔고 DB서버에 오라클을 깔고 등등... 자세한 설치는 설치,세팅 카테고리의 [Oracle 19c + CentOS7 사일런트(Silent)] 참고 아무튼 설치는 끝나고 DB서버에서 sqlplus 로 확인해보니 잘 되었다. 개인 pc에서 DB로 붙어서 select 를 해보니 잘 되었다. 외부 pc에서 DB서버로 직접 붙지도 못..

서버 2024.03.27
반응형