목록데이터베이스 (33)
말랑말랑제리스타일
오라클에서 create user 쿼리로 계정을 생성시 "ORA-65096: invalid common user or role name" 에러가 발생했습니다.원인은 오라클 세션에 있는 oracle script라는 것 때문으로 추측이 되는데 해결 방법을 알아봤습니다.일시적으로 계정 생성 테스트하기일시적으로 계정 생성을 해보기 위해서는 계정에 C샵샵을 붙여주면 됩니다.예를 들어 아래와 같이 생성해봅시다.create user "C##testusr" identified by "1111";이렇게 생성하면 ora-65096 에러 없이 유저 생성이 완료되죠.단, 이렇게 생성하면 유저 명에 C샵샵이 붙게 됩니다.따라서 세션 설정을 바꿔주는 쪽이 좋을 것 같습니다.세션의 oracle script 값 바꿔서 생성하기말이 ..

설치된 토드 버전 확인하는 방법과 설치된 오라클 클라이언트 버전을 간단하게 확인하는 방법을 정리해 봤습니다. 오라클 클라이언트 버전 확인 방법 설치된 오라클 클라이언트 버전을 확인하는 방법은 정상적으로 오라클이 설치되어 있다면 생각보다 간단합니다. 커맨드 창을 열고 아무 위치에서나 아래 명령어를 입력하면 됩니다. tnsping 이렇게 입력하면 "TNS Ping Utility for " 어쩌고 문구가 나올 텐데요. 이 "for 뒤에 있는 게 설치된 오라클 클라이언트 버전입니다. 예를 들어 "TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0"이라고 나오는 경우 오라클 클라이언트 11.2의 윈도 32비트 버전이 설치되어있다고 볼 수 있죠. 토드 버전 확인 방법..
한국 데이터 산업 진흥원에서 주관하는 SQL 자격시험인 SQLD와 SQLP 자격증을 비전공자가 취득 가능한지 자격 요건과 실제 비전공자가 합격할 수 있을지 자격증 시험 내용을 알아봅시다. SQLD, SQLP 응시 자격과 합격 기준 먼저 SQLD와 SQLP는 응시 자격이 서로 다릅니다. 통상적으로 큐넷 자격증과 비교하면 SQLD는 기능사 자격증, SQLP는 기사 자격증이라고 생각하면 되는데요. SQLD와 SQLP의 응시 자격 요건도 마찬가지입니다. SQL 개발자 자격증인 SQLD의 경우 응시 자격 제한이 없습니다. 즉, 누구나 응시 가능하고 당연히 비전공자도 응시 가능하다는 거죠. 그러나 SQL 전문가 자격증인 SQLP의 경우 SQLD보다는 자격 요건이 까다롭습니다. 1. 학사 학위 이상 취득자(4년제 대..

오라클 LIKE 절에서 언더바(_)나 퍼센트 문자(%)가 들어간 문자열을 조회하기 위해 탈출 문자를 사용하는 방법과 따옴표(')가 들어간 문자를 조회하는 방법입니다. ESCAPE 구문을 사용해 언더바(_)나 퍼센트 문자(%)가 들어간 문자열 조회 오라클에서는 ESCAPE라는 구문을 사용해 유저가 탈출 문자를 줄 수 있습니다. SELECT * FROM USER_SOURCE WHERE TEXT LIKE '%TESTA_DB%' ESCAPE 'A' 예를 들어 TEST_DB라는 문자가 들어간 프로시저를 조회할 때 이런 쿼리를 쓸 수 있는데요. A_를 LIKE 절에 넣고 뒤에 ESCAPE 'A'로 탈출 문자를 지정해주면서 TEST_DB라는 문자열이 포함된 프로시저를 조회할 수 있게 되는 거죠. 오라클에서 따옴표 들..

오라클에서 잘 쓰던 프로시저가 갑자기 "Ora-01839 : 지정한 월에 대한 날짜가 부적합합니다."라는 에러를 뱉는 경우가 생겼는데요. 이런 경우 Inverval month를 사용해서 날짜 연산을 한 경우일 수 있습니다. 이 에러가 발생하는 상황과 변경 쿼리에 관한 내용을 알아봅시다. 오라클에서 Interval month로 날짜 연산 시 에러 발생하는 상황 오라클에서 Interval month로 날짜를 계산할 경우 앞서 말한 것처럼 "Ora-01839 : 지정한 월에 대한 날짜가 부적합합니다."라는 에러가 발생할 수 있는데요. 이 에러가 발생하는 상황을 확인해보면 연산의 결과에 해당하는 날짜가 해당 월의 마지막 날을 지나는 경우 발생합니다. 예를 들어 5월 30일 기준으로 아래 쿼리를 실행했다고 합니다..

오라클에서 LISTAGG 기능을 사용해서 여러개의 ROW를 하나의 문자열로 합치는게 가능하죠. 그렇다면 반대로 하나의 문자열을 구분자로 분리해 여러개의 ROW로 뽑아내는 쿼리는 어떻게 만들 수 있을까요? 일단 오라클에서 기본적으로 LISTAGG와 반대의 기능으로 지원하는 함수는 없고 REGEXP_SUBSTR을 이용해 쿼리를 구성해줘야합니다. REGEXP를 이용해 생성한 LISTAGG와 반대로 작동하는 쿼리 LISTAGG로 만든 문자열은 대부분 콤마(,)로 구분되어있는 경우가 많은데요. 예를 들어 '1,2,3,4,5' 라는 문자열을 하나 만들어주고 이 문자열을 콤마로 구분해 각각의 ROW로 리턴하는 쿼리를 예시로 보여드리겠습니다. SELECT REGEXP_SUBSTR(NUMS,'[^,]+',1,LEVEL)..

오라클 DB를 사용하다 보면 간혹 대량의 데이터를 한 번에 INSERT 한 이후 속도가 저하되는 경우가 발생합니다. 다양한 이유가 있겠지만 SQL문이 아무 이상이 없고 INDEX도 올바른데 이런 현상이 나타나는 경우 테이블 ANALYZE 기능을 이용해볼 수 있습니다. 오라클에서 TABLE ANALYZE로 속도를 향상시킬 수 있는 경우 오라클에서 TABLE ANALYZE를 통해 속도를 향상시킬 수 있는 경우를 확인해보는 방법은 다음과 같습니다. 1. COUNT를 이용해 해당 테이블의 전체 ROW 수를 확인해봅니다. SELECT COUNT(*) FROM 테이블명 2. DBA_TABLES 테이블에서 해당 테이블의 데이터를 조회해봅니다. SELECT * FROM DBA_TABLES WHERE TABLE_NAME..

토드 재설치 후 A TNSNames.ora 파일을 찾을 수 없다는 에러가 발생했는데요. 간단하게 환경변수 설정을 통해서 해결이 가능합니다. 우선 에러 전문을 보면 "A TNSNames.ora file was not fount. Toad will find this file if it exists in either of the following locations:"라는 문구가 나옵니다. 그리고 밑에 TNS_ADMIN이라는 문구가 포함된 해결 방법과 Toad.exe 파일이 존재하는 폴더 내에 TNS 파일을 넣으라는 해결 방법이 나오죠. 두 가지 방법 모두 알려드립니다. TNS Names 파일을 Toad.exe와 같은 경로에 붙여 넣기 우선 TNS 파일을 찾아줍니다. 일반적으로 C:\\app\\유저명\\prod..