목록Oracle (17)
말랑말랑제리스타일

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 SQL에서 간혹 다른 컬럼을 우선순위로 지정해서 특정 값을 가져와야할 경우가 있습니다. 예를 들어서 급여가 가장 높은 사원의 사번을 가져오는 경우라던지 가격이 가장 높은 제품의 제품 코드를 가져오는 경우가 있겠죠. 이런 경우 급여나 가격을 기준으로 사번과 제품 코드를 가져와야하는데 서브쿼리를 사용하면 많이 복잡해지죠. 서브쿼리를 사용해 다른 컬럼을 우선순위로 값을 가져오는 방법 그럼에도 쿼리가 상당히 단순한 경우 서브쿼리를 이용하는 방법도 존재하기 때문에 이론적으로 쉽게 이해할 수 있는 서브쿼리를 사용해 다른 컬럼을 우선순위로 값을 가져오는 쿼리를먼저 알려드리겠습니다. 아래 예시는 어떤 제품의 가격타입별로 가격이 들어있는 테이블에서 가격 타입이 가장 낮은, 쉽게 말해 어떤 제품 A에 대해 a..
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'가 나오고..

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 수도 생각해야되고 확장 관련된 요소도 테이블 사이즈에 영향을 미치는데요 그런 상황을 다 고려해서 실제 테이블의 크기 순으로 뽑아볼 수 있..
DCL 구문 즉 , Data Control Language 중 가장 대표적인 Oracle 구문이 바로 Grant, Revoke로 권하는 주거나 빼는 구문인데요 특정 직무 담당자가 아닌 이상 자주 쓰는건 또 아니다보니 헷갈리죠 근데 또 막상 써보면 Grant 구문으로 Oracle 테이블 권한 주는건 간단합니다 GRANT 권한 ON 테이블명 TO 유저명 으로 유저에게 테이블 권한을 부여할 수 있는데요 여기서 권한에는 SELECT,DELETE 등 권한을 줄 구문이 들어가고 테이블 명과 유저명은 말안해도 알겠죠 GRANT SELECT,DELETE,INSERT,UPDATE ON TAB1 TO USER1 좀 더 바로 쓸 수 있는 예시 Oracle SQL로 표현하면 위와 같겠죠 SQL 실행시키거나 Oracle 프로시..