본문 바로가기

DBMS(DataBase Management System)72

728x90
반응형
[윈도우] MariaDB 데이터를 SQL 파일로 백업하는 스크립트 데이터베이스 백업은 아주 중요하다. 백업하는 방법은 여러가지가 있겠지만 본 글에서는 특정 데이터를 SQL 파일로 가공하는 방법을 설명한다. 백업 스크립트 SQL 파일로 MariaDB 데이터베이스를 백업하는 스크립트는 아래와 같다. 필자의 경우 아래와 같이 파일명에 작업일시를 붙여서 파일을 저장하도록 스크립트를 작성한다. @echo off set YEAR=%date:~0,4% set MONTH=%date:~5,2% set DAY=%date:~8,2% set HOUR=%time:~0,2% set MINUTE=%time:~3,2% set SECOND=%time:~6,2% set date_format=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND% mysqldump -u[계정명] -p[.. 2023. 3. 8.
[MariaDB] 함수 생성 때 'SQL Error (1418): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in ....' 오류 발생시 조치 방법 함수를 생성할 때 아래처럼 오류가 발생하는 경우가 있다. SQL Error (1418): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 이런 경우 아래의 명령어를 입력하여 함수 생성 설정을 확인하고 'OFF'로 설정되어 있는지 확인한다. SHOW GLOBAL VARIABLES LIKE 'log_bin_trust_function_creators'; 'OFF'로 설정되어 있으면 함수 생성이 되지 않기 때문에.. 2023. 2. 21.
[티베로] 오류 설명 - 'JDBC-90603:Invalid Operation: disconnected from the server.' 오류의 의미 티맥스 티베로(Tmax Tibero)를 데이터베이스로 활용하는 프로그램을 운영하다보면 'JDBC-90603:Invalid Operation: disconnected from the server.'라는 오류를 볼 수 있다. 이 오류는 티베로 데이터베이스 서버가 세션(연결)을 끊어서 발생한다. 오류 원인 'JDBC-90603'는 세션(연결)이 없어져서 발생한다. 이 오류가 반복적으로 발생하는 경우 세션 관련 설정을 확인한다. 조치 방법 이 오류가 발생하면 데이터베이스 서버가 정상인지를 확인해야 하며 응용 프로그램에게는 적절한 예외처리 기능이 구현되어 있어야 한다. 주로 티베로 데이터베이스 세션을 새로 생성(연결)하는 기능으로 처리한다. 참고문서 "제31장 90000 ~ 90999", Tibero.. 2023. 2. 5.
[티베로] 오류 설명 - 'JDBC-90405:I/O error while reading from the server. - End Of Stream' 오류의 의미 티맥스 티베로(Tmax Tibero) 데이터베이스를 활용하는 프로그램을 개발하다보면 'JDBC-90405:I/O error while reading from the server. - End Of Stream'라는 오류를 볼 수 있다. 이 오류는 티베로 데이터베이스 서버가 통신 중에 연결을 끊어 버려서 발생한다. 오류 원인 'JDBC-90405'의 경우 다양한 원인이 있을 수 있으므로 가장 의심이 되는 것부터 조치하는 것이 좋다. 세션과 메모리, 운영체제, 티베로 버전, 쿼리, 네트워크 설정, 네트워크 하드웨어 상태 등 다양한 원인으로 오류가 발생할 수 있다. 조치 방법 이 오류가 발생하면 데이터베이스 서버가 정상인지를 확인해야 하며 응용 프로그램에게는 적절한 예외처리 기능이 구현되어 있어야 .. 2023. 2. 4.
[티베로] 세션 목록 확인하고 세션 강제 종료하기 세션 목록을 확인하고 강제로 세션을 끊어야 하는 상황이 종종 생긴다. 나의 경우 티맥스 티베로(Tmax Tibero) 또는 데이터베이스 서버의 운영체제나 하드웨어 자체에 문제가 생겨서 백엔드(Back-End) 쪽 프로그램과 연결이 끊어진 경우를 테스트할 때 세션 강제 종료를 한다. 세션 목록 조회 세션 목록을 조회하는 쿼리(Query)는 아래와 같다. 이 쿼리를 실행하면 아래의 사진처럼 결과가 나타난다. SELECT * FROM V$SESSION 세션 강제 종료 아래의 쿼리를 실행하면 특정 세션이 종료된다. 종료할 세션을 특정하기 위한 파라미터로 'SID'와 'SERIAL#'을 받는데 세션 목록에서 확인가능하다. ALTER SYSTEM kill SESSION(SID, SERIAL#); 2023. 2. 3.
[티베로/SQL] UPPER 대문자로 변환, LOWER 소문자로 변환 값을 대문자나 소문자로 변환해야 하는 경우가 있다. 이 경우 티베로에서는 UPPER 함수와 LOWER 함수로 대소문자 변환이 가능하다 대문자로 변환 아래의 쿼리(Query)처럼 UPPER 함수를 사용하면 대문자로 문자열을 변환할 수 있다. UPPER(문자열) SELECT UPPER('aBcDe12345') FROM dual; 소문자로 변환 아래의 쿼리처럼 LOWER 함수를 사용하면 소문자로 문자열을 변환할 수 있다. LOWER(문자열) SELECT LOWER('aBcDe12345') FROM dual; 참고문서 "4.2.182. UPPER", Tibero 6, Tibero SQL 참조 안내서, 티맥스데이터, 2020년 8월 21일. @원문보기 "4.2.80. LOWER", Tibero 6, Tibero .. 2023. 1. 27.
[티베로] SQLGate for Tibero Developer 6개월 사용 후기 티베로를 GUI(Graphical User Interface)로 제어하는 도구가 여러가지 있겠지만 나는 그 중에서 최근에 SQLGate for Tibero를 몇달 써봤다. 무료 라이센스로 사용한거라 제약이 있었지만 꽤 사용하기 편했다. 당장 무료로 사용가능한 도구를 사용해야 했기에 지금까지 써보지 않았던 SQLGate를 써봤는데 쓸만 했다. 웨어밸리 사의 오렌지라는 도구 위주로 썼었던 나에게는 조금 불편한 것도 있었지만 이제 나에게 SQLGate는 다음에 예산이 생겨서 유료 라이센스 구매가 가능할 때 긍정적으로 도입을 검토할 수 있는 도구이다. 2023. 1. 23.
[티베로] LPAD, RPAD - 부족한 문자열 길이를 특정 문자로 채우거나 특정 길이를 넘는 문자열을 자르기 입력된 값을 보고 원하는 형식으로 바꿔줘야 하는 경우가 있다. 특히, 문자열 길이를 맞춰야 하는데 부족한 길이에 해당하는 영역을 특정 문자로 채우는 함수로 티베로에서는 LPAD 함수와 RPAD 함수를 제공한다. 1. RPAD 함수 RPAD 함수를 쓰면 지정한 길이로 문자열을 자르고 부족하면 오른쪽부터 채운다. 문법은 아래와 같다. RPAD(문자열, 길이, 문자) 2. RPAD 함수 예제 아래와 같이 RPAD 함수를 사용할 수 있다. 2-1. 지정한 길이보다 입력값이 긴 경우 SELECT RPAD('20230117010101000', 14, '0') FROM dual 2-2. 지정한 길이보다 입력값이 짧은 경우 SELECT RPAD('20230117', 14, '0') FROM dual 3. LPAD 함수.. 2023. 1. 18.
[티베로] 'TBR-8027: Column name is ambiguous' 해결 방법 오류 발생 이유 쿼리(Query)를 작성하다보면 'TBR-8027: Column name is ambiguous'를 만날 때가 있다. 이 경우는 조인(Join) 등의 이유로 컬럼(Column)의 명칭이 중복되는 경우에 발생한다. 오류 예시 아래의 쿼리 처럼 A 테이블과 B 테이블을 가게명(STORE_NAME)으로 조인할 때 A 테이블의 가게명과 B 테이블의 가게명이 존재하게 되므로 명시적으로 어느 테이블의 가게명을 사용할 것인지를 지정해야 한다. SELECT STORE_NAME, STORE_SALES, PRODUCT_PRICE FROM (SELECT 'APPLE' AS STORE_NAME, '100' AS STORE_SALES FROM dual) A LEFT JOIN (SELECT 'APPLE' AS S.. 2023. 1. 16.
[MySQL] 3306 포트를 사용 중인 프로그램을 종료하는 방법 MySQL을 설치할 때 3306 포트를 사용하도록 설정했는데 나중에 MySQL을 실행하려고 보니 해당 포트가 이미 사용 중이어서 사용이 되지 않을 때 해결하는 방법을 안내한다. 동영상 설명 3306 포트를 사용 중인 프로그램을 종료하는 방법 해당 포트를 사용 중인 프로그램 확인 아래의 명령어를 입력하여 해당 포트를 사용 중인 프로그램을 확인한다. 제일 오른쪽에 나타난 PID 번호를 기억해둔다. netstat -ano | findstr 포트번호 아래의 명령어를 입력하여 해당 PID의 프로그램을 확인한다. tasklist | findstr PID번호 해당 프로그램 종료 프로그램을 종료하면 해당 포트가 비어지기 때문에 설치한 MySQL을 실행할 수 있다. 대게 3306 포트의 경우 서비스 프로그램에 가서 My.. 2023. 1. 10.
[오라클/티베로] 특정 범위의 숫자 생성 일을 하다보면 SQL 만으로 특정 범위의 숫자를 생성해야 할 때가 있다. 그 경우에 활용 가능한 방법은 아래와 같다. 특정 숫자 이하의 일련의 수를 생성하는 쿼리 먼저 설명하는 방법은 ROWNUM 또는 LEVEL을 활용하는 방법인데 오라클에서 제공하는 CONNECT BY 문을 활용한다. 아래와 같은 형식으로 쿼리(Query, 질의어)를 작성한다. SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM 2023. 1. 4.
[MariaDB] HeidiSQL로 CSV로 저장한 데이터를 불러오는 방법 1. CSV 파일은 무엇인가? 다양한 분야에서 많이 활용하는 파일형식으로 CSV(Comma-Separated Values)가 있다. 간단한 구조이고 라이센스 프로그램에서 주로 데이터를 다른 형식으로 저장할 때 흔히 지원하는 파일 구조이다. 서로 다른 프로그램에서 공통적으로 사용할 수 있는 파일 형식이기에 자료를 공유할 때 흔히 CSV로 주고 받는다. 2. HeidiSQL로 CSV을 MariaDB에 입력하는 방법 CSV 파일의 정보를 읽어서 MariaDB에 입력하는 기능을 HeidiSQL은 지원한다. CSV 파일을 읽을 때 사용할 옵션도 충분히 제공하기에 CSV 파일을 가공할 필요가 없어서 편리하다. 사용하는 방법은 아래와 같다. 2.1. CSV 파일 가져오기 활성화 HeidiSQL을 실행하여 '도구' -.. 2022. 12. 2.
[MariaDB] 전역 로그 설정 및 로그 확인 로깅 기능을 활용하는 이유 MariaDB 환경에서 디버깅(Debugging)을 위해 로그(Log)를 확인하고 싶은 경우가 있다. 로그 기능을 별도로 설정하지 않은 경우에는 가장 쉽게 확인할 수 있는 방법이 전역 로그 기능을 활성화하는 것인데 본 글에서는 전역 로그 기능을 활성화하고 로그를 확인하는 방법을 다룬다. 전역 로그 활성화 먼저 아래의 쿼리(Query, 질의어)를 입력하여 전역 로그 기능이 활성화 되었는지 확인한다. SHOW VARIABLES LIKE 'general%'; 'general_log'의 값이 'OFF'이면 전역 로그가 비활성화 되어 있는 상태이다. 이 경우 아래의 쿼리를 입력하여 전역 로그 기능을 활성화한다. SET GLOBAL general_log=ON; 로그 확인 'general_.. 2022. 11. 24.
[오라클/티베로] "JDBC-10007:UNIQUE constraint violation" SQL(Structured Query Language)을 작성하다보면 아래의 사진처럼 'JDBC-10007:UNIQUE constraint violation" 오류가 나타나는 경우가 있다. 특정 값은 유일해야 하는 유니크 제약조건을 위배했기 때문인데 이 경우는 해당 유니크 제약조건을 살펴서 SQL을 수정하거나 관련 처리 과정을 수정해야 한다. 2022. 11. 1.
[Windows] MariaDB 최대 세션 수 조정하기 MariaDB는 기본적으로 최대 151개의 세션을 허용한다. 현재 연결된 세션 수가 최대 세션 수에 이르면 그 다음 연결 요청부터는 세션을 생성하지 않고 연결을 거부하는데 이 경우 데이터베이스에서 값을 가져오지 못 한다. 그러므로 환경에 따라 MariaDB 최대 세션 수를 조정할 필요가 있다. 방법은 아래와 같다. 현재 세션 관련 설정 확인 아래의 명령어를 입력하여 현재 세션 관련 설정을 확인한다. 'max_connections'를 보면 151개로 설정되어 있는 것을 확인할 수 있다. SHOW VARIABLES LIKE '%connect%' 연결된 세션 수 확인 아래의 명령어를 입력하여 연결된 세션 수를 확인한다. SHOW STATUS LIKE 'Threads_connected' 세션 수 설정 아래와 같.. 2022. 10. 31.
오라클, 사이베이스, MS-SQL를 티베로로 마이그레이션 하는 도구 'TbMigrator' 설치 및 실행 TbMigrator란? 오라클(Oracle), 사이베이스(Sybase), MS-SQL에서 티맥스(Timax) 티베로(Tibero)로 DB(DataBase)를 마이그레이션(Migration) 하고 싶다면 티베로가 제공하는 TbMigrator를 사용할 수 있다. TbMigrator 설치 TbMigrator는 아래의 주소에 압축되어 있다. ('%TB_HOME%'은 티베로 설치 경로가 담긴 환경변수이다) %TB_HOME%\client\bin\tbmigrator.zip 아래의 주소로 이동하여 'tbmigrator.zip'가 있는지 확인한 후 압축해제한다. %TB_HOME%\client\bin\ 'tbmigrator.zip'을 압축해제하면 위와 같이 3개의 폴더가 나타나는데 현재 실행한 환경과 대응되는 폴더로 이동.. 2022. 9. 16.
[오라클/티베로] 사용자 정보 및 목록 확인 사용자 목록 확인 아래의 명령어를 입력하면 전체 사용자 목록이 나타난다. SELECT * FROM all_users; 사용자 정보 확인 좀 더 자세한 사용자의 정보를 확인하고 싶다면 아래의 명령어로 확인할 수 있다. SELECT * FROM DBA_USERS; 참고문서 [1] "6.101 DBA_USERS", 1412 of 2693 pp., Oracle Database Online Documentation 12c Release 1 (12.1), Oracle. @원문보기 2022. 9. 14.
[티베로] tbSQL을 사용하여 대용량 SQL 파일 실행하기 tbSQL이란? tbSQL은 티베로(Tibero)에서 제공하는 SQL(Structured Query Language) 처리용 유틸리티이다. 내가 tbSQL을 사용하는 경우 티베로 관리를 GUI(Graphical User Interface)로 쉽게할 수 있는 'TiberoStudio'와 'SQLGate for Tibero Developer' 등을 사용하면 (현재 기준으로는) 단위 시간당 SQL 처리량이 낮아서 대용량 SQL 파일을 처리할 때 부적합했다. 그래서 tbSQL을 사용했는데 비교도 안 될 만큼 빨리 처리되었고 지금은 이런 경우에 나는 tbSQL을 쓴다. tbSQL 사용 방법 명령 프롬프트(Command Prompt, CMD) 또는 터미널(Termnial)을 실행하여 아래와 같은 명령어를 입력하면 .. 2022. 9. 8.
티베로 6를 시작하는 명령어와 중지하는 명령어 티베로 시작 명령어 명령 프롬프트를 관리자 권한으로 실행한 다음 아래의 명령어를 입력하면 아래의 사진처럼 티베로가 시작된다. tbboot 티베로 중지 명령어 티베로를 중지하는 방법도 시작하는 방법과 유사하게 관리자 권한으로 명령 프롬프르틀 실행한 다음 아래의 명령어를 입력하면 아래의 사진처럼 중지된다. 티베로 상태에 따라 중지할 때 옵션이 나타나는데 적당한 것을 선택하면 된다. tbdown 2022. 9. 6.
[티베로] TBR-28012: Index '인덱스명' is in an unusable state. 최근에 티베로(Tibero) 사용 중 인덱스가 사용불가능한 상태라고 경고가 나와서 리빌드(rebuild)를 했었다. 특정 상황에서 인덱스가 사용 불가능한 상태로 넘어가는 경우가 있는데 이 경우 인덱스 리빌드를 통해 해결할 수 있다. 경고 문구 "TBR-28012: Index 'PDMTCS.PK_BASE_CARINFO' is in an unusable state." 인덱스 상태 확인 SELECT index_name, status from dba_indexes WHERE index_name='인덱스명' 인덱스 리빌드 ALTER INDEX '인덱스명' REBUILD 리빌드 후 인덱스 상태 확인 SELECT index_name, status from dba_indexes WHERE index_name='인덱스명' 2022. 9. 5.