반응형

개발 & 데이터베이스/DB 38

오라클 ora-01481: 숫자 형식 모델이 부적합합니다.

해당 오라클 오류는 데이터 타입을 맞춰주지 않아서 생기는 오류입니다. TO_CHAR 함수로 날짜 형식을 변경하려고 할 때 주로 발생하는 오류인데요. 아래 예시로 자세히 살펴보겠습니다. TO_CHAR('20220911', 'YYYYMMDD' // 오류 발생 TO_CHAR(TO_DATE('20220911'), 'YYYYMMDD'), 'YYYYMMDD') // 오류 해결 SELECT TO_CHAR(TO_DATE('20220911'), 'YYYYMMDD'), 'YYYYMMDD') AS TODAY_ FROM DUAL; 테이블 내의 date 컬럼을 넘겨주면 오류가 발생하지 않지만, 다른 형식의 컬럼을 넘겨주면 위와 같은 오류가 발생합니다. 이러한 오류는 TO_CHAR 함수 내에 TO_DATE 함수를 넣어서 쉽게 해..

오라클 사용자 계정 잠금 해제하는 방법 (ALTER USER)

오라클에서 사용자 계정의 잠금을 해제하기 위해선 ALTER USER 문을 사용하면 된다. 사용자 계정의 ACCOUNT 속성이 UNLOCK이면 잠금 해제, LOCK이면 잠금이다. 사용자 계정의 잠금 상태를 확인하고 직접 변경을 해보겠다. 사용자 계정 잠금 여부 조회 SELECT * FROM dba_users WHERE USERNAME = 'SCOTT' 사용자 계정 잠금 상태를 확인하고 싶으면 dba_users (시스템 뷰)를 조회하면 된다. 사용자 계정이 잠금일 경우에는 ACCOUNT_STATUS 컬럼이 LOCKED이고, 잠금이 아닐 경우에는 OPEN으로 되어있다. 현재 SCOTT 계정을 조회해보면 잠금이 해제된 상태인 것을 알 수 있다. 사용자 계정 잠금 / 잠금 해제하는 방법 ALTER USER SCO..

오라클 실수로 삭제한 데이터 복구하는 방법 (TIMESTAMP)

오라클 작업을 하다보면 실수로 데이터를 삭제하거나 수정하는 경우가 생길 수 있습니다. 이런 경우에는 TIMESTAMP를 사용해서 이전의 데이터를 조회하고 복구할 수 있습니다. 오라클 9i Release 2부터 Flashback이라는 기능이 생긴 후에 Flashback의 사이즈만큼의 데이터를 보관하고 있습니다. 사용하는 방법은 아래와 같습니다. SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' SECOND); 위의 쿼리를 실행하면 10초 전 데이터를 조회할 수 있습니다. 또한 숫자와 SECOND를 변경해서 본인이 원하는 시간대를 조회할 수 있습니다. SECOND 초 MINUTE 분 HOUR 시간 DAY 일 특정 시점으로 조회 추상적으로 10초..

오라클 개발 환경 구축하기 (개발 툴 설치 방법)

대형 프로젝트에서는 주로 오라클 데이터베이스를 사용하는데요. 지금부터 오라클 개발 환경을 구축하는 방법에 대해서 알아보겠습니다. 1. 오라클 개발 환경 설치하기 (데이터베이스) 2. SQL Developer 설치하기 (개발 툴) 3. SCOTT 계정 생성하기 오라클 개발 환경 (SQL Plus) 설치하는 방법 1. https://www.oracle.com/database/technologies/xe-prior-release-downloads.html로 접속해서 본인 PC의 운영체제와 맞는 걸 찾아서 Download를 누른다. 2. Download OracleXE112_Win64.zip을 클릭한다. 3. 오라클 계정 로그인은 필수 4. 압축을 풀고 setup.exe를 실행한다. 5. Next를 계속 누르고..

오라클 조회 결과 정렬하는 방법 (ORDER BY 절)

오라클에서 검색 결과를 정렬하려면 ORDER BY 절을 사용합니다. 오름차순(Ascending sort) 와 내림차순(Descending sort) 로 정렬할 수 있습니다. SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 [ASC/DESC] 위의 임시 테이블(emp)로 ORDER BY 절의 사용법에 대해서 알아보겠습니다. 오름차순 (ASC) SELECT * FROM EMP WHERE 1=1 ORDER BY SAL ASC; SAL 컬럼이 작은 값부터 오름차순으로 정렬된 모습을 볼 수 있다. ORDER BY 절에서는 default 값이 ASC이기 때문에 생략해도 무관하다. 내림차순 (DESC) SELECT * FROM EMP WHERE 1=1 ORDER BY SAL DESC; 정..

오라클 숫자 천단위 콤마 찍는 방법 2가지 (TO_CHAR 함수)

어떠한 숫자에 천단위로 콤마(,)를 찍고 싶으면 어떻게 해야할까요? 오라클에서는 TO_CHAR 함수 혹은 정규식 함수 (REGEXP_REPLACE) 를 이용해서 천단위로 콤마(,)를 찍을 수 있습니다. 두 가지 방법에 대한 장단점과 사용 방법에 대해서 알아보겠습니다. 1. TO_CHAR 함수를 이용하는 방법 2. 정규식 함수를 이용하는 방법 TO_CHAR 함수를 이용하는 방법 SELECT TO_CHAR(10000000000, 'FM999,999,999,999') AS MONEY FROM DUAL; 천단위 콤마(,)를 표현하기 위해서는 TO_CHAR 함수의 두 번째 인자값을 이용하면 된다. TO_CHAR 함수를 이용해서 천단위를 표현하면 첫 번째 인자값보다 더 큰 길이의 두 번째 인자값을 미리 작성해야한다..

오라클 디비링크 (DB LINK) 정의 및 생성 권한 부여

디비링크 (DB LINK) 정의 데이터베이스 링크는 오라클 서버들끼리 디비 링크를 만들어서 하나의 데이터베이스처럼 사용하는 방법이다. 좀 더 정확하게 말하자면 데이터베이스 서버에서 다른 데이터베이스 서버로의 단방향 통신경로를 정의하는 포인터이다. 데이터베이스 링크에는 2가지 종류가 존재한다. 1. PUBLIC 데이터베이스 링크 특정한 설정없이 모든 사용자가 사용할 수 있어서 편리함 비교적 보안에 취약함 2. PRIVATE 데이터베이스 링크 각각의 사용자에게 디비 링크를 생성해줘야함 비교적 보안에 우수함 디비링크 조회 SELECT * FROM DBA_DB_LINKS; -- 현재 DB 환경의 모든 DB 링크 조회 SELECT * FROM USER_DB_LINKS; -- 현재 조회된 유저가 생성한 디비링크 조..

오라클 해당 날짜 요일 구하기 (TO_CHAR 함수)

프로그래밍을 하다보면 해당 날짜에서 요일이 필요한 경우가 생기는데요. 오라클에서는 TO_CHAR 함수를 이용해서 쉽게 해당 날짜의 요일을 알 수 있습니다. 그 방법에 대해서 알아보겠습니다. TO_CHAR(날짜, '포맷'); TO_CHAR 함수를 이용해서 해당 날짜의 요일을 구할 때 사용하는 포맷의 종류는 총 3가지가 있다. day : 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일 dy : 일, 월, 화, 수, 목, 금, 토 d : 1 ~ 7 (요일을 숫자로 출력) SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL; # 토요일 SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL; # 토 SELECT TO_CHAR(SYSDATE, 'D') FROM D..

오라클 중복 데이터 쉽고 빠르게 찾는 방법 (GROUP BY, OVER)

안녕하세요. 프로그래머 두부입니다. 일을 하다보면 중복 데이터를 찾아야하는 경우가 생기는데요. 쉽고 빠르게 찾을 수 있는 방법이 없을까요? 오라클에서는 중복 데이터를 찾기 위해서 GROUP BY 절과 집계 함수를 이용하는 방법과 OVER 절과 분석 함수를 이용하는 방법 총 2가지가 있습니다. 지금부터 어떻게 사용하는 것인지 알아보겠습니다. 1. 집계 함수를 이용하는 방법 (GROUP BY 절) 2. 분석 함수를 이용하는 방법 (OVER 절) 위의 예시 데이터에서 HIREDATE 컬럼이 중복된 데이터를 찾아보겠습니다. 집계 함수를 이용하는 방법 (GROUP BY 절) SELECT HIREDATE , COUNT(*) AS CNT FROM JOB_TABLE GROUP BY HIREDATE HAVING COUN..

오라클 간단하고 짧은 조건함수 DECODE 함수 사용 방법

오라클 쿼리를 작성하다보면 조건을 요구하는 상황이 생긴다. 대표적으로 IF문이 있는데 오라클에서 사용하면 쿼리문이 길어질 수 밖에 없다. 이번 포스팅에서는 쿼리문이 짧아지고 간단하게 사용할 수 있는 DECODE 함수를 소개하겠다. 오라클에만 존재하는 함수이므로 SQL에서는 사용할 수 없다. 함수 사용 방법 DECODE(컬럼, 조건, TRUE 결과, FALSE 결과) DECODE 함수 사용 방법은 삼항식(컬럼 = 조건 ? TRUE : FALSE)과 비슷한 형식으로 매우 간단하다. SELECT DECODE(USER_NM, '두부', 'YES', 'NO') AS USER_YN FROM TALBE_NAME 간단한 에제로 USER_YN 컬럼에 USER_NM 컬럼 값이 '두부' 일 때 'YES'를 출력, 아닐 시에..

반응형