본문 바로가기

Dev. Cookbook/SQL, Oracle, MariaDB9

[MariaDB] MariaDB 10.1, 10.2 시퀀스 기능 구현 cafe24에 포팅 작업을 하면서 DB는 MariaDB로 알고 비교적 최근 버전의 안정화 버전을 사용을 해서 포팅 작업을 진행했습니다. 원래는 포팅 하려는 시스템의 환경과 소프트웨어의 버전을 정확하게 파악하고 작업해야 하는데, 그냥 호스팅 서비스에서 그렇게 오래 전의 버전을 사용할 거라 생각하지 못하고 진행한 게 불찰이었습니다. cafe24의 개별 언어별 호스팅 서비스에서 지원하는 MariaDB 버전은 MariaDB 10.1이었습니다. 이 버전은 2014년 6월에 최초 배포된 버전입니다. 물론 마이너 버전은 최근 22년 5월에 배포되었습니다만 공식 지원 자체가 22년 5월에 중단되기도 했습니다. 제목에서도 언급했지만 MariaDB에서 시퀀스 기능은 10.3 버전부터 지원하고 있습니다. 덕분에 Oracle.. 2022. 11. 5.
[MariaDB,MySQL] 버전 별 사용자 계정 비밀번호 변경 방법 최근 Oracle에서 MariaDB로 마이그레이션을 진행하면서 여러 가지 차이점을 느끼고 있습니다. MariaDB는 MySQL과 거의 동일하지만 버전업을 거치면서 조금씩 차이를 보이고 있습니다. 그러나 MariaDB의 근간이 MySQL이기에 두 DBMS는 공유하고 있는 부분도 많이 있습니다. 소소한 것들이지만 MariaDB의 버전별 차이도 조금은 크고, 불편하게 느껴져서 검색하면서 찾은 내용들을 하나씩 정리하고 있습니다. 1. 사용자 계정 비밀번호 변경 MariaDB(MySQL)에서는 DBMS에서 사용자를 추가하고 관리하는 SQL문이 DB 버전에 따라서 지원하는 방법이 서로 다릅니다. 기본적인 절차는 아래와 같습니다. 1.1 비밀번호 변경 절차 STEP 1. root 계정 로그인 STEP 2. mysql.. 2022. 11. 4.
[Oracle] ORA-00984: 열을 사용할 수 없습니다. "column not allowed here" ORA-00984 : 열을 사용할 수 없습니다. : "column not allowed here" SQL 오류: ORA-00984: 열을 사용할 수 없습니다 00984. 00000 - "column not allowed here" *Cause: *Action: SQL 구문에서 해당 컬럼에 적합하지 않은 값을 대입하려고 시도할 경우에 발생합니다. SQL문에서 문자열에 작은따옴표( ' ) 대신 큰따옴표( " )를 사용한 경우 내장 함수의 이름이 틀린 경우 문자열을 입력해야 하는 데 작은따옴표를 잊어버린 경우 CREATE TABLE person ( name VARCHAR2(30), age NUMBER(3), birthday DATE ); -- name 컬럼의 문자열에 작은따옴표가 없음. INSERT INTO .. 2022. 5. 27.
[Oracle] ORA-08002: 시퀀스 xxx.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다 ORA-08002 : 시퀀스 xxx.CURRVAL은 이 세션에서는 정의되어 있지 않습니다. ORA-08002: 시퀀스 PRODUCT_SEQ.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다 08002. 00000 - "sequence %s.CURRVAL is not yet defined in this session" *Cause: sequence CURRVAL has been selected before sequence NEXTVAL *Action: select NEXTVAL from the sequence before selecting CURRVAL 시퀀스 현재 값을 조회하는 방법은 SELECT 시퀀스명.CURRVAL 입니다. 그러나 CURRVAL 값은 시퀀스값이 한 번 이상 읽히지 않으면 조회가.. 2022. 5. 27.
[Oracle] sys, system 계정 비밀번호 재설정 방법 이제 그만 까먹을 때도 되었는데... 괜스레 비밀번호를 너무 간략하게 사용하는 습관을 들이려고 어려운 비밀번호를 설정했었습니다. 다시금 오랜만에 system 계정으로 접근하려고 보니 비밀번호를 까먹었네요. 다행히 로컬 컴퓨터에 오라클이 설치되어 있기에 간단하게 아래의 방법으로 변경했습니다. 비밀번호 재설정 방법 한 화면으로 설명하면 위와 같습니다. 한 줄씩 살펴보면 다음과 같습니다. 1. Windows CMD 창 띄우기 방법은 여러 가지가 있습니다만 저는 [윈도키+R] 키를 눌러 실행 창을 띄운 다음 'cmd'를 입력하고 실행합니다. Oracle DB가 설치되어 있는 컴퓨터의 cmd 창입니다. 만약 다른 컴퓨터에 오라클이 설치되어 있다면 다른 컴퓨터에서 실행해야 합니다. 2. sqlplus 접속 > sq.. 2022. 5. 24.
[Oracle] Select count(*), count(1), count(column_name), count(DISTINCT column_name) 차이점 Oracle에서 조건에 맞는 행의 숫자를 세는 COUNT 함수가 있습니다. 일반적으로 테이블 전체 혹은 조건에 맞는 ROW(행)의 수를 파악하기 위해서 SELECT COUNT(*) FROM 문을 많이 사용합니다. 그런데 가끔 COUNT(*) 대신 COUNT(1)을 사용하는 것이 성능이 더 좋다는 얘기가 있어서 확인해보고, COUNT문 사용 시 컬럼명을 적용하는 것에 대해서 찾아보고 정리하였습니다. 1. COUNT(*) vs COUNT(1) COUNT(*)과 COUNT(1)에 대한 논쟁은 그동안 많은 포럼에서 차이점에 대한 논쟁이 있었습니다만, 결론부터 얘기하자면 실제 성능에는 차이가 없으므로 보편적인 COUNT(*)을 사용할 것을 언급하고 있습니다. 실제로 제가 실행계획을 분석해봐도 동일했습니다. -- .. 2022. 5. 12.
[Oracle] Cursor와 ROWCOUNT에 대해 이해하기 Oracle에서 커서를 사용하다 보면 커서 속성인 ROWCOUNT를 사용할 수 있습니다. 그렇지만 ROWCOUNT의 조회 범위나 횟수의 정확성에 대해서 좀 더 이해하려면 ROWCOUNT가 어떤 커서 속성인지 정확하게 이해해야 합니다. 1. 커서 속성에서 ROWCOUNT 속성 Oracle 10g 문서에서 아래와 같은 내용이 있습니다. %ROWCOUNT Attribute: How Many Rows Affected So Far? %ROWCOUNT yields the number of rows affected by an INSERT, UPDATE, or DELETE statement, or returned by a SELECT INTO statement. %ROWCOUNT yields 0 if an INSERT.. 2022. 5. 6.
[Oracle] ORA-01403: 데이터를 찾을 수 없습니다. NO DATA FOUND 에러 해결 방법 3가지 PL/SQL을 작성하면서 볼 수 있는 에러입니다. PL/SQL 내에서 SELECT문을 사용하여 테이블에서 어떤 조건에 맞는 데이터를 검색해 INTO 절을 사용하여 데이터를 입력하려 할 때, 조건에 맞는 데이터가 없는, 조건에 맞는 데이터가 0건인 경우 발생하는 에러입니다. BEGIN ... SELECT user_name INTO vs_user_name FROM users WHERE user_id = 123456; ... END; 위 PL/SQL 에서 user_id가 123456인 사용자가 없으면 반환되는 Row 수는 0이 됩니다. 이럴 때 발생하게 됩니다. 해결방법은 3가지가 있습니다만 편법도 있고, 실행 과정에서 에러 처리로 실행이 중단되게 되므로 상황에 맞게 사용하면 됩니다. 1. EXCEPTION .. 2022. 5. 5.
[ORACLE] 시노님(Synonym) 삭제 오류, ORA-01434 : private synonym to be dropped does not exist Oracle에서 Synonym은 Oracle 객체(Table, View, Sqeuence, Procedure 등)에 대체되는 이름을 말합니다. Synonym은 다른 사용자의 객체를 참조할 때 많이 사용합니다. 다른 사용자의 객체를 참조할 경우, Synonym을 생성해서 사용하면 추후 참조하고 있는 객체가 이름을 바꾸거나 이동할 경우 객체를 사용하는 모든 SQL문을 수정하는 것이 아니라 Synonym 만 다시 정의하여 사용할 수 있습니다. 또한 Synonym은 객체의 이름이 길거나 어려운 경우 사용하기 편리한 짧은 이름을 주어 SQL 코딩을 단순화할 수 있습니다. 객체의 소유나 권한을 제한하는 데도 사용되어 Synonym을 사용하려면 이름만 알면 사용할 수 있습니다. 1. Synonym 문법 synonym.. 2022. 4. 26.