목록DB (16)
말랑말랑제리스타일

Kyma에 Oracle DB를 올리는 방법입니다. 사실 Kyma도 쿠버네티스 환경이라 다른 쿠버네티스 환경에 Oracle DB를 올리는 것과 방식은 동일합니다.따라서 Kyma를 비롯한 쿠버네티스 환경에 Oracle 19c DB를 올리는 방법을 한번 작성해봤습니다.Oracle 공식 Github에서 docker image 다운로드 아래 Oracle 공식 Github 사이트에서 docker-image를 다운로드할 수 있습니다. GitHub - oracle/docker-images: Official source of container configurations, images, and examples for Oracle products and projectOfficial source of container con..
ORACLE 함수 중 SUBSTR을 이용해서 문자열을 자르는 방법은 크게 2가지가 있고 세분화하면 4가지가 있을 수 있는데요. 이 방법들을 한번 알아보겠습니다. ORACLE SUBSTR 사용법 SUBSTR은 기본적으로 2개 또는 3개의 매개변수를 사용할 수 있습니다. SUBSTR(문자열, 시작할 위치, 자를 개수) 이런 방식으로 사용이 가능한데요. 여기서 자를 개수를 비우고 2개의 매개 변수만 사용하면 자동으로 시작 위치부터 끝까지 문자열을 자르게 됩니다. SELECT SUBSTR('ABCDEF',3,2) FROM DUAL; SELECT SUBSTR('ABCDEF',3) FROM DUAL; 이런 식으로 테스트해보면 첫 번째 ORACLE 쿼리의 결과는 3번째 글자부터 2개의 글자를 잘라서 'CD'가 나오고..
오라클 SQL문 중 NULL을 처리하는 다양한 구문이 있는데 그 중 가장 대표적인 DECODE, NVL,NVL2의 사용법과 차이점을 알아봅시다.DECODE,NVL,NVL2 사용법먼저 DECODE와 NVL과 NVL2의 사용법입니다. 엄연히 말하면 DECODE는 NULL 처리용 함수는 아니지만 DECODE를 이해하면 NVL과 NVL2를 이해하기 훨씬 쉽기 때문에 DECODE의 사용법 먼저 설명드립니다.DECODE 사용법DECODE의 구문은 아래와 같습니다.DECODE(값,비교값,일치할 경우,불일치할 경우)만약 이 DECODE를 다중으로 사용할 경우 아래의 형태로도 사용 가능합니다.SELECT DECODE(VAL,'1','T1','2','T2','T3') FROM (SELECT '1' AS VAL FROM D..

[ERR0000]ORA-01861: literal does not match format string Oracle DB를 프로그램에서 쓰다 보면 정말 자주 발생하는 Oracle 에러 중 하나입니다. 이 Oracle 에러가 상당히 골치아픈 이유는 토드나 SQL 디벨로퍼에서 쿼리로 실행하면 발생하지 않는데 프로그램에서 프로시저로 호출시 발생하기 때문이죠. 그럼 자세히 Ora-01861 에러의 발생 원인과 처리 방법을 알아보겠습니다. 1. Ora-01861 에러의 발생 원인 텍스트에 나온 것처럼 문자열이 포맷 스트링과 매칭되지 않는 에러입니다. 제가 이 Ora-01861 에러 많이 봤는데 발생 원인의 90프로가 날짜형을 문자열 형과 비교할 때 발생했습니다. Oracle DB에서 날짜 데이터를 Varchar2(..

Oracle DB에서 UNION, UNION ALL, MINUS 등 집합 연산을 하는 경우 "ORA-12704: 문자 집합이 일치하지 않습니다" 라는 에러가 발생할 수 있습니다. 그럼 이 ORA-12704 에러가 왜 발생하는지 알아보겠습니다. ORA-12704 의 발생원인 ORA-12704의 에러 문구에서도 짐작 가능하듯이 집합 연산의 대상이 되는 데이터 타입이 상이한 경우 ORA-12704 에러가 발생합니다. 주로 NVARCHAR2와 VARCHAR2를 집합연산 하는 경우 이 에러를 마주하게 됩니다. VARCHAR2와 NVARCHAR2의 차이 VARCHAR2는 데이터를 ASCII 코드 형태로 저장하고 NVARCHAR2는 UNICODE 형태로 저장합니다. 따라서 NVARCHAR2는 기본적으로 CHAR 단위..

Oracle에서 Start With, Connect By Prior 구문으로 계층형 쿼리를 간단하게 만들 수 있습니다 계층형 쿼리가 뭐냐?? 트리 형태의 구조를 쿼리 즉 Oracle SQL로 나타낸거죠 일단 계층형 쿼리를 사용할 수 있는 간단한 테이블을 만들어줍니다 이런 형태의 테이블을 만들거고 Material에는 자신의 이름, Parent_mat에는 부모 노드 즉 상위 명칭이 들어갑니다 CREATE TABLE TREE_TAB_TMP ( MATERIAL VARCHAR2(10) PRIMARY KEY, PARENT_MAT VARCHAR2(10) ); INSERT INTO TREE_TAB_TMP VALUES ('M1',NULL); INSERT INTO TREE_TAB_TMP VALUES ('M2','M1');..

네 Char 타입을 전부 Byte로 바꾸라는 업무를 받았네요 일단 Oracle의 Varchar2 자료형은 Char 단위와 Byte 단위로 쓸 수 있죠 근데 이걸 다 Byte로 통일을 시키라네요 뭔 통일을 이렇게 좋아하는지...그냥 통일부에서 이런거 해주면 안되냐는 헛소리와 함께 일단 찾아봅시다 SELECT * FROM DBA_TAB_COLUMNS WHERE OWNER = '유저명' AND CHAR_USED 'B' DBA_TAB_COLUMNS라는 ORACLE DBA 테이블에서 OWNER에 DB 유저명을 넣고 조회를 할텐데 CHAR_USED가 B이면 BYTE 단위, C이면 CHAR 단위입니다 우왕...더럽게 많네여ㅠㅠ 어느 세월에 다하지...일하러 갑니다ㅠㅠ
Oracle 테이블을 정리하다보면 Row 수 또는 사이즈로 정렬해서 테이블 정리의 우선순위를 뽑아볼 수 있을 것 같은데요 일일이 Count(*)로 테이블 Row 수를 조회하면 속도가 느리고 한참 기다려야 하죠 그런 상황 대신 한번에 전체 테이블을 Row 수로 정렬해서 뽑아볼 수 있는 쿼리 전달합니다 SELECT TABLE_NAME,NUM_ROWS FROM USER_TABLES ORDER BY NUM_ROWS DESC; 이건데요 이렇게 조회하면 해당 유저의 전체 테이블과 Row 수를 뽑아볼 수 있습니다 그럼 Row 수가 많다고 단순히 큰 테이블일까요? 아니죠 Column 수도 생각해야되고 확장 관련된 요소도 테이블 사이즈에 영향을 미치는데요 그런 상황을 다 고려해서 실제 테이블의 크기 순으로 뽑아볼 수 있..