DB/Oracle(75)
-
DB/Oracle
2019.10.31
2
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 에러 해결
오래간만에 개인 PC에 오라클을 설치하고 계정을 만들려고 하니 오류메시지가 하나 출력되었습니다.ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 이라는 오류 메시지인데요. 오라클 12c부터는 공통계정앞에 c##을 붙이도록 네이밍 규칙이 바뀌었더군요. C## 키워드가 붙는 이유는 12c 버전부터 등장하는 CDB, PDB 개념 때문이라고 합니다. 11g까지만 사용해봤었던 저로써는 오늘도 하나 배워갑니다. ㅎㅎ; C##을 붙여주니 정상적으로 계정이 만들어집니다. 권한을 줄때도 앞에 C##을 붙여주어야 합니다. 토드나 sql developer 같은 sql 개발툴에 접속할때도 꼭 앞에 C##을 붙여주셔야 합니다. 그렇지 않으면 위와같이 사용자명/비밀번호가 부적합, 로그온할 수 없습니다. 라는 오류 메..
-
DB/Oracle
2019.10.30
20
[Oracle] 오라클 데이터베이스 19C 설치 / 다운로드 방법
오라클은 오라클이라는 회사에서 배포하는 데이터베이스입니다. 아래에 링크된 오라클 공식 홈페이지에서 다운로드하실 수 있습니다. (오라클 회원이 아니라면 다운로드 하실 수 없으니 회원가입은 꼭 해주세요!!) https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterprise Edition 7/13: Patch Set 11.2.0.4 for Linux and Solaris is now available on su..
-
DB/Oracle
2019.10.29
[Oracle] 오라클 테이블 스페이스 사용법(조회, 생성, 삭제)등 총정리
오라클 테이블 스페이스(Table Space)란 무엇인가? 오라클은 데이터를 관리하는 데이터베이스입니다. 데이터를 어딘가에 저장해놓고 사용하는 시스템이라고 볼 수 있습니다. 그리고 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 합니다. 데이터 저장 단위는 물리적, 논리적단위로 나눌 수 있습니다. 물리적 단위는 파일을 의미하고 논리적 단위는 데이터블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉩니다. 데이터 블록 여러개가 모여 익스텐트 하나를 만들고, 익스텐트 여러개가 모여 하나의 세그먼트를 구성하는 식입니다. 테이블 스페이스는 가장 상위개념입니다. 오라클 테이블 스페이스 사용법 SQL 개발 툴이 있으시면 개발 툴을 실행시키시면 되고 없으시다면 윈도우 실행창을 열고 SQ..
-
DB/Oracle
2019.01.25
[Oracle] 오라클 데이터 타입 변환(TO_CHAR, TO_NUMBER, TO_DATE) 사용법 & 예제
MYSQL이나 MSSQL에서 대표적인 데이터 타입 변환함수는 CONVERT인데요. 오라클에서는 동작하지 않습니다. 오라클에서 데이터 타입 변경을 하고 싶을때는 CONVERT가 아닌 다른 함수를 사용하여야 합니다. 함수명은 TO_[데이터타입]인데요. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있습니다. TO CHAR (CHAR형으로 변경) --사용법-- SELECT TO_CHAR([컬럼명]) FROM [테이블명] --예제-- SELECT TO_CHAR(10000) FROM DUAL --INT TO CHAR SELECT TO_CHAR(SYSDATE) FROM DUAL --DATE TO CHAR SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL --D..
-
DB/Oracle
2019.01.24
[Oracle] 편리한 조건함수 DECODE 함수 사용법 & 예제
오라클에서 조건을 주는 방법은 여러가지가 있습니다. 대표적으로는 CASE문 IF문이 있는데 이런 조건문을 사용하게 되면 쿼리문이 쓸데없이 길어질요소가 존재합니다. 하지만 조건이 동등문(=)일경우에 간단하게 사용할 수 있는 DECODE함수라는것이 있습니다. 이번 포스팅에서는 오라클에서 제공하는 DECODE함수를 통해 간결하게 조건문을 주는 방법에 대해 알아보도록 하겠습니다. 경우에 따라서는 DECODE함수를 중첩해서 쓰거나 서브쿼리와 같이 사용하셔도 됩니다. DECODE함수는 어제 포스팅했었던 NVL함수와 마찬가지로 오라클에서만 존재하는 함수이므로 MY_SQL이나 MS_SQL과의 호환을 염두하신다면 사용을 피하셔야합니다. 사용법 DECODE(컬럼,조건,TRUE 결과값,FALSE 결과값) 예제 --TYPE ..
-
DB/Oracle
2019.01.23
3
[Oracle] Null값을 치환해주는 (NVL,NVL2) 함수 사용법 & 예제
오라클을 사용하다보면 NULL값을 다른 함수로 치환해주어야하는 경우가 많습니다. 이럴경우 오라클에서 제공하는 NVL함수를 써서 쉽게 처리할 수 있는데요. NVL함수는 매우편리하지만 오라클에서만 제공하는 함수이다보니 다른 데이터베이스와의 호환을 염두해둔다면 피해야할 함수이기도 합니다. (이 쿼리로 짜놓고 MY_SQL이나 MS_SQL에서 사용한다면....?? 끔찍합니다. ㅠㅠ) 1. NVL함수 사용법 NVL(컬럼,NULL일경우 반환값) NVL(컬럼,0) -- 컬럼의 값이 NULL일경우 0으로 치환 NVL(컬럼,'') -- 컬럼의 값이 NULL일경우 ''으로 치환 NVL(컬럼,SYSDATE) --컬럼의 값이 NULL일경우 현재날짜로 치환 예제 (COMPANY_NO)가 NULL이면 ''으로 치환 SELECT N..
-
DB/Oracle
2019.01.22
[Oracle] 소수점 처리 올림,반올림,버림 함수 (CEIL,ROUND,TRUNC) 사용법 & 예제
오라클 소수점 처리를 할때 유용하게 사용할 수 있는 함수가 3가지가 있습니다. 바로 CEIL, ROUND, TRUNC 인데요. 각각 소수점을 올림, 반올림, 버림 해줄 수 있는 함수입니다. 소수점 올림 (CEIL) --사용법 SELECT CEIL([컬럼])AS [명칭] FROM [테이블명] --자릿수 지정은 없으며 무조건 소수점첫번째에서 올림 --예제 SELECT CEIL(10.423)AS PAY FROM DUAL --결과 : 11 SELECT CEIL(PAY)AS PAY FROM EMP_TABLE SELECT CASE SUM(ERR) WHEN 0 THEN 0 ELSE --0으로 나눌경우 에러가 나기에 예외처리 CEIL(COUNT(MOD)/COUNT(ERR)*100) END AS TEST_PERCENT ..
-
DB/Oracle
2019.01.21
[Oracle] Union해서 나온 결과 ROW 값 합치기
가끔 저장된 데이터는 다르지만 테이블 구조는 같은 경우가 있습니다. 이 구조가 같은 테이블을 같이 조회할 경우에는 컬럼이같기에 UNION을 사용하면 굉장히 효율적입니다. UNION을 사용하였기에 두 테이블에 있는 값은 합쳐지지 않고 따로따로 조회가 되어 합쳐지는데요. 하지만 가끔은 이렇게 조회된 두테이블의 결과 값을 서로 합쳐줘야할 때가 있습니다. 대표적으로 두 테이블의 통계를 낼때가 있겠군요. 예제 SELECT S.MODULE, SUM(S.ERR)AS ERROR_COUNT, --에러갯수 SUM(S.MOD) AS MOD_COUNT --수정갯수 FROM ( SELECT A.MODULE COUNT(A.ERR) AS ERR, COUNT(A.MOD) AS MOD, FROM ERROR_TABLE_1 A --1번테..
-
DB/Oracle
2019.01.15
[Oracle] 오라클 데이터가 없을경우에만 Insert하기
테이블에 PK로 설정되어있는 컬럼에 데이터가 중복으로 들어가면 무결성 제약조건에 걸리게됩니다. 이것을 예외처리 해주지 않는다면 프로그램에 치명적일 수 있는데요. 이 경우 데이터가 없을경우에만 Insert를 하는 형식으로 변환하여 프로그램의 안정성을 더해줄 수 있습니다. 오라클에 데이터가 없는 경우에만 Insert를 하는방법은 WHERE조건문에 NOT EXISTS(데이터 SELECT) 를 하는 방법으로 구현할 수 있습니다. INSERT INTO DEPT_TABLE ( SQ, COMPANY, DEPT, ) SELECT 1, '테스트회사', '테스트부서' FROM DUAL WHERE NOT EXISTS ( SELECT SQ FROM DEPT_TABLE WHERE SQ = 1, COMPANY = '테스트회사',..
-
DB/Oracle
2019.01.14
1
[Oracle] 오라클 insert 자동증가 컬럼의 최대값 +1하기 (MAX+1)
NVL함수와 MAX함수를 활용하여 오라클 데이터 insert시 컬럼의 최대값+1을 저장하는 방법입니다. INSERT INTO DEPT_TABLE ( DEPT_SQ, COMPANY, DEPT_NM ) VALUES ( (SELECT NVL(MAX(DEPT_SQ),0)+1 FROM DEPT_TABLE),--데이터가없으면 0 데이터가 있으면 최대값 +1 '테스트회사', '테스트회사명' )
-
DB/Oracle 2019.10.31 2[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 에러 해결 오래간만에 개인 PC에 오라클을 설치하고 계정을 만들려고 하니 오류메시지가 하나 출력되었습니다.ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 이라는 오류 메시지인데요. 오라클 12c부터는 공통계정앞에 c##을 붙이도록 네이밍 규칙이 바뀌었더군요. C## 키워드가 붙는 이유는 12c 버전부터 등장하는 CDB, PDB 개념 때문이라고 합니다. 11g까지만 사용해봤었던 저로써는 오늘도 하나 배워갑니다. ㅎㅎ; C##을 붙여주니 정상적으로 계정이 만들어집니다. 권한을 줄때도 앞에 C##을 붙여주어야 합니다. 토드나 sql developer 같은 sql 개발툴에 접속할때도 꼭 앞에 C##을 붙여주셔야 합니다. 그렇지 않으면 위와같이 사용자명/비밀번호가 부적합, 로그온할 수 없습니다. 라는 오류 메..
-
DB/Oracle 2019.10.30 20[Oracle] 오라클 데이터베이스 19C 설치 / 다운로드 방법 오라클은 오라클이라는 회사에서 배포하는 데이터베이스입니다. 아래에 링크된 오라클 공식 홈페이지에서 다운로드하실 수 있습니다. (오라클 회원이 아니라면 다운로드 하실 수 없으니 회원가입은 꼭 해주세요!!) https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterprise Edition 7/13: Patch Set 11.2.0.4 for Linux and Solaris is now available on su..
-
DB/Oracle 2019.10.29[Oracle] 오라클 테이블 스페이스 사용법(조회, 생성, 삭제)등 총정리 오라클 테이블 스페이스(Table Space)란 무엇인가? 오라클은 데이터를 관리하는 데이터베이스입니다. 데이터를 어딘가에 저장해놓고 사용하는 시스템이라고 볼 수 있습니다. 그리고 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 합니다. 데이터 저장 단위는 물리적, 논리적단위로 나눌 수 있습니다. 물리적 단위는 파일을 의미하고 논리적 단위는 데이터블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉩니다. 데이터 블록 여러개가 모여 익스텐트 하나를 만들고, 익스텐트 여러개가 모여 하나의 세그먼트를 구성하는 식입니다. 테이블 스페이스는 가장 상위개념입니다. 오라클 테이블 스페이스 사용법 SQL 개발 툴이 있으시면 개발 툴을 실행시키시면 되고 없으시다면 윈도우 실행창을 열고 SQ..
-
DB/Oracle 2019.01.25[Oracle] 오라클 데이터 타입 변환(TO_CHAR, TO_NUMBER, TO_DATE) 사용법 & 예제 MYSQL이나 MSSQL에서 대표적인 데이터 타입 변환함수는 CONVERT인데요. 오라클에서는 동작하지 않습니다. 오라클에서 데이터 타입 변경을 하고 싶을때는 CONVERT가 아닌 다른 함수를 사용하여야 합니다. 함수명은 TO_[데이터타입]인데요. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있습니다. TO CHAR (CHAR형으로 변경) --사용법-- SELECT TO_CHAR([컬럼명]) FROM [테이블명] --예제-- SELECT TO_CHAR(10000) FROM DUAL --INT TO CHAR SELECT TO_CHAR(SYSDATE) FROM DUAL --DATE TO CHAR SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL --D..
-
DB/Oracle 2019.01.24[Oracle] 편리한 조건함수 DECODE 함수 사용법 & 예제 오라클에서 조건을 주는 방법은 여러가지가 있습니다. 대표적으로는 CASE문 IF문이 있는데 이런 조건문을 사용하게 되면 쿼리문이 쓸데없이 길어질요소가 존재합니다. 하지만 조건이 동등문(=)일경우에 간단하게 사용할 수 있는 DECODE함수라는것이 있습니다. 이번 포스팅에서는 오라클에서 제공하는 DECODE함수를 통해 간결하게 조건문을 주는 방법에 대해 알아보도록 하겠습니다. 경우에 따라서는 DECODE함수를 중첩해서 쓰거나 서브쿼리와 같이 사용하셔도 됩니다. DECODE함수는 어제 포스팅했었던 NVL함수와 마찬가지로 오라클에서만 존재하는 함수이므로 MY_SQL이나 MS_SQL과의 호환을 염두하신다면 사용을 피하셔야합니다. 사용법 DECODE(컬럼,조건,TRUE 결과값,FALSE 결과값) 예제 --TYPE ..
-
DB/Oracle 2019.01.23 3[Oracle] Null값을 치환해주는 (NVL,NVL2) 함수 사용법 & 예제 오라클을 사용하다보면 NULL값을 다른 함수로 치환해주어야하는 경우가 많습니다. 이럴경우 오라클에서 제공하는 NVL함수를 써서 쉽게 처리할 수 있는데요. NVL함수는 매우편리하지만 오라클에서만 제공하는 함수이다보니 다른 데이터베이스와의 호환을 염두해둔다면 피해야할 함수이기도 합니다. (이 쿼리로 짜놓고 MY_SQL이나 MS_SQL에서 사용한다면....?? 끔찍합니다. ㅠㅠ) 1. NVL함수 사용법 NVL(컬럼,NULL일경우 반환값) NVL(컬럼,0) -- 컬럼의 값이 NULL일경우 0으로 치환 NVL(컬럼,'') -- 컬럼의 값이 NULL일경우 ''으로 치환 NVL(컬럼,SYSDATE) --컬럼의 값이 NULL일경우 현재날짜로 치환 예제 (COMPANY_NO)가 NULL이면 ''으로 치환 SELECT N..
-
DB/Oracle 2019.01.22[Oracle] 소수점 처리 올림,반올림,버림 함수 (CEIL,ROUND,TRUNC) 사용법 & 예제 오라클 소수점 처리를 할때 유용하게 사용할 수 있는 함수가 3가지가 있습니다. 바로 CEIL, ROUND, TRUNC 인데요. 각각 소수점을 올림, 반올림, 버림 해줄 수 있는 함수입니다. 소수점 올림 (CEIL) --사용법 SELECT CEIL([컬럼])AS [명칭] FROM [테이블명] --자릿수 지정은 없으며 무조건 소수점첫번째에서 올림 --예제 SELECT CEIL(10.423)AS PAY FROM DUAL --결과 : 11 SELECT CEIL(PAY)AS PAY FROM EMP_TABLE SELECT CASE SUM(ERR) WHEN 0 THEN 0 ELSE --0으로 나눌경우 에러가 나기에 예외처리 CEIL(COUNT(MOD)/COUNT(ERR)*100) END AS TEST_PERCENT ..
-
DB/Oracle 2019.01.21[Oracle] Union해서 나온 결과 ROW 값 합치기 가끔 저장된 데이터는 다르지만 테이블 구조는 같은 경우가 있습니다. 이 구조가 같은 테이블을 같이 조회할 경우에는 컬럼이같기에 UNION을 사용하면 굉장히 효율적입니다. UNION을 사용하였기에 두 테이블에 있는 값은 합쳐지지 않고 따로따로 조회가 되어 합쳐지는데요. 하지만 가끔은 이렇게 조회된 두테이블의 결과 값을 서로 합쳐줘야할 때가 있습니다. 대표적으로 두 테이블의 통계를 낼때가 있겠군요. 예제 SELECT S.MODULE, SUM(S.ERR)AS ERROR_COUNT, --에러갯수 SUM(S.MOD) AS MOD_COUNT --수정갯수 FROM ( SELECT A.MODULE COUNT(A.ERR) AS ERR, COUNT(A.MOD) AS MOD, FROM ERROR_TABLE_1 A --1번테..
-
DB/Oracle 2019.01.15[Oracle] 오라클 데이터가 없을경우에만 Insert하기 테이블에 PK로 설정되어있는 컬럼에 데이터가 중복으로 들어가면 무결성 제약조건에 걸리게됩니다. 이것을 예외처리 해주지 않는다면 프로그램에 치명적일 수 있는데요. 이 경우 데이터가 없을경우에만 Insert를 하는 형식으로 변환하여 프로그램의 안정성을 더해줄 수 있습니다. 오라클에 데이터가 없는 경우에만 Insert를 하는방법은 WHERE조건문에 NOT EXISTS(데이터 SELECT) 를 하는 방법으로 구현할 수 있습니다. INSERT INTO DEPT_TABLE ( SQ, COMPANY, DEPT, ) SELECT 1, '테스트회사', '테스트부서' FROM DUAL WHERE NOT EXISTS ( SELECT SQ FROM DEPT_TABLE WHERE SQ = 1, COMPANY = '테스트회사',..
-
DB/Oracle 2019.01.14 1[Oracle] 오라클 insert 자동증가 컬럼의 최대값 +1하기 (MAX+1) NVL함수와 MAX함수를 활용하여 오라클 데이터 insert시 컬럼의 최대값+1을 저장하는 방법입니다. INSERT INTO DEPT_TABLE ( DEPT_SQ, COMPANY, DEPT_NM ) VALUES ( (SELECT NVL(MAX(DEPT_SQ),0)+1 FROM DEPT_TABLE),--데이터가없으면 0 데이터가 있으면 최대값 +1 '테스트회사', '테스트회사명' )