728x90

이제는 필요할때마다 초기화 작업을 하고 있는데 이제는 생각없이 하게 되네요.

 

그래도 참고용 자료를 적어 봅니다.

 

더보기
SHOW DATABASES;

CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
CREATE DATABASE 데이터베이스명;
GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '아이디'@'%';
FLUSH PRIVILEGES;

CREATE USER 'firstuser'@'%' IDENTIFIED BY 'userpass';
CREATE DATABASE basedb;
GRANT ALL PRIVILEGES ON basedb.* TO 'firstuser'@'%';
FLUSH PRIVILEGES;

 

qdrant 맛보기

더보기
docker pull qdrant/qdrant

docker run -d -p 6333:6333 -p 6334:6334 -v "[db가 저장될 경로]/qdrant_storage:/qdrant/storage:z" -e QDRANT__SERVICE__API_KEY=[생성한 암호화 키] qdrant/qdrant

docker run -d -p 6333:6333 -p 6334:6334 -v "d:/dev/database/qdrant_storage:/qdrant/storage:z" -e QDRANT__SERVICE__API_KEY=[생성한 암호화 키] qdrant/qdrant

qdrant용 암호화 키생성

728x90

'database > mariadb' 카테고리의 다른 글

mariadb docker 설치(2025.10.27)  (1) 2025.10.27
database관련 잡학정리  (0) 2024.09.05
심심풀이_온라인강의사이트 DATABASE(2024.07.07~)  (0) 2024.07.07
계정 권한 주기  (0) 2023.08.19
mariadb docker 설치(2023.07.11)  (0) 2023.07.11
728x90

자다말고 일어나서 갑자기 MariaDB Docker 설치를 하고 싶어 정리된 글을 찾다 보니 옛날 자료만 있어서 갱신차원에서 적어 봅니다.

- port랑 접속 설정 추가(2025.10.28)

 

어려운 내용은 아니고 바뀐 부분만 알고 있으면 쉬운 내용인데 찾아 다니기 귀찮아서 최신화 글을 적어 봅니다.

 

참고원문글

일단 기존 마리아디비를 사용하신 적이 있다면 도커로 오면서 MSSQL에서 MARIA로 명칭이 조금 바뀐 내용이 있다는 것은 기억할 듯 싶은데 정확한 내용을 찾아 왔을 것이라 생각합니다. 

일단 저도 가끔 셋팅하다보면 외워서 사용하는 것들이 아니라서 주기적으로 찾아보거나 있던거 사용해서... 사실은 오류가 나면 찾아 보고있습니다.

자다가 일어나서 오류를 보고 싶지는 않아서 찾아서 정리하고 한방에 해볼까해서 적어봅니다. 

1. 우선 도커 사용 기본 설명

더보기

포트는 호스트포트:도커내부포트

도커끼리 연결할때는 네트워크 명칭을 생성해서 묶어서 사용

볼륨정할때 호스트폴더경로:도커내부경로

env 옵션으로 내부 시스템 설정 지정 ex) --env MARIADB_ROOT_PASSWORD=my-secret-pw

2. 설명없이 바로 기본설정하고 실행하기

더보기

** 실행문 **

$ docker network create dockernet01 

$ docker run --detach --network dockernet01 -p 8306:3306 --name mariadb01 --env MARIADB_USER=firstuser --env MARIADB_PASSWORD=userpass --env MARIADB_ROOT_PASSWORD=ospass mariadb:latest

# 도커 접속
$ docker exec -it mariadb01 bash

# 버전확인 ( 오늘확인한 lastest 버전은 12.0.2 버전으로 설치되네요 )
$ mariadb --version
# or 구버전
$ mysql --version

#데이터베이스 접속하기
$ mariadb -u firstuser -p
# or 구버전
$ mysql -u [사용자명] -p

# 원격 접속 허용 설정하기
$ docker exec -it mariadb01 bash
$ mariadb -u root -p  
# pass: ospass
$ grant all privileges on *.* to 'firstuser'@'%';
$ flush privileges;

# localhost:8306 접속

참고1. 마리아DB 실행시 유저, 패스워드, 데이타베이스 생성하고 도커 실행바로 하기

$ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=exmple-database --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest

 

참고2. 로컬 도커 네트워크 묶어서 마리아DB실행

$ docker network create some-network 

$ docker run --detach --network some-network --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest

$ docker run --detach --network some-network --name some-application --env APP_DB_HOST=some-mariadb --env APP_DB_USER=example-user --env APP_DB_PASSWD=my_cool_secret some-application

 

3. 마리아디비 도커 실행 기본

더보기

최소 실행

$ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
or:

$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:latest
or:

$ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:latest

 

compose.yaml 파일

# Use root/example as user/password credentials

services:

  db:
    image: mariadb
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

 

호스트 볼륨 연결( -v 호스트볼륨:/var/lib/mysql:Z)

$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql:Z -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest

이전과 변경점 보고 싶은 분들을 위해..

2023.07.11 - [database/mariadb] - mariadb docker 설치(2023.07.11)

 

mariadb docker 설치(2023.07.11)

마리아db 최신버전 설정 옵션명칭이 바뀌었네요 이전 버전 글을 남기고 최신것을 위에 적어 봅니다. 2023.10.31 - [분류 전체보기] - mariadb docker (2023.10.31) 아래글을 참고만하시고 위에 글보고 하세요

jsi0.tistory.com

 

728x90
728x90

예전 카페에서 폐지 공지가 와서 자료를 옮겨 놓습니다.

 

SELECT/*+ ordered use_hash( sw l ) */
  s.sid
 ,s.serial#
 ,s.module
 ,s.program
 ,sw.seconds_in_wait Sec
 ,TO_CHAR(l.sid) ||','||TO_CHAR(s1.Serial#)|| ':' || sw1.event ||decode(sw1.seconds_in_wait,0,NULL,'('||sw1.seconds_in_wait||'secs)')  holder
 FROM  
        v$session_wait sw
,       v$session      s
,       v$lock         l
,       v$session s1
,       v$session_wait sw1
WHERE  sw.event like 'enq%'
AND    S.sid    = sw.sid
AND    l.id1(+) = sw.p2
AND    l.id2(+) = sw.p3
AND    l.lmode(+) > 0
AND    l.sid(+) <> sw.sid
AND    s1.sid=sw1.sid
AND    l.sid=s1.sid
ORDER BYl.sid, sw.seconds_in_wait DESC;

 

 

참고자료 추가(2025.5.21)

더보기

✅ 1. Blocker vs Waiter 세션 쿼리

📌 쿼리 1: Blocker / Waiter 세션 매핑 (10g ~ 23c 사용 가능)

-- Oracle 10g, 11g, 12c, 18c, 19c, 21c, 23c 전부 사용 가능
SELECT
    s1.sid AS blocker_sid,
    s1.serial# AS blocker_serial,
    s1.username AS blocker_user,
    s2.sid AS waiter_sid,
    s2.serial# AS waiter_serial,
    s2.username AS waiter_user,
    s2.seconds_in_wait,
    s2.event
FROM
    v$lock l1,
    v$session s1,
    v$lock l2,
    v$session s2
WHERE
    l1.block = 1
    AND l1.sid = s1.sid
    AND l2.request > 0
    AND l2.sid = s2.sid
    AND l1.id1 = l2.id1
    AND l1.id2 = l2.id2;

✅ 2. DBA_BLOCKERS  DBA_WAITERS 

📌 사용 가능 버전

뷰 이름 10g 11g 12c 18c 19c 21c 23c
DBA_BLOCKERS
DBA_WAITERS
 
-- 락을 보유한 세션 
SELECT * FROM dba_blockers; 
-- 대기 중인 세션 
SELECT * FROM dba_waiters;

✅ 3. v$session + v$lock + v$process 활용 (10g ~ 최신)

-- ✅ Oracle 10g ~ 23c 모두 사용 가능
SELECT
    l.session_id,
    s.serial#,
    s.username,
    s.status,
    s.machine,
    l.lock_type,
    l.mode_held,
    l.mode_requested,
    l.blocking_others
FROM
    dba_locks l
JOIN
    v$session s ON l.session_id = s.sid
WHERE
    l.blocking_others = 'Blocking';

✅ 4. SQL 실행 중인 쿼리 추적 (12c 이상: SQL_ID 방식)

 
-- ✅ Oracle 12c 이상에서 정확한 추적 가능
SELECT
    s.sid, s.serial#, s.username, s.status,
    q.sql_text
FROM
    v$session s
JOIN
    v$sql q ON s.sql_id = q.sql_id
WHERE
    s.sid = <Waiter SID>;


🔸 10g/11g는 s.sql_hash_value로 연결 필요

-- Oracle 10g/11g용
SELECT s.sid, s.serial#, q.sql_text
FROM v$session s, v$sql q
WHERE s.sql_hash_value = q.hash_value AND s.sid = <SID>;

✅ 5. 프로세스 종료용 SPID 조회 (10g ~ 최신 동일)

-- Oracle 10g ~ 23c 공통
SELECT p.spid
FROM v$session s, v$process p
WHERE s.paddr = p.addr
  AND s.sid = <SID>;

✅ 6. 세션 종료

sql
 
-- Oracle 10g ~ 최신 버전 공통
ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;

-- SPID 조회 방법 (Oracle → OS 매핑)
SELECT
    s.sid,
    s.serial#,
    p.spid AS "OS_PID",
    s.username,
    s.program
FROM
    v$session s,
    v$process p
WHERE
    s.paddr = p.addr
  AND s.sid = <SID>;
bash
 
-- OS 강제 종료 (Linux/Unix)
kill -9 <spid>

📚 출처 및 확인 문서


✍️ 요약

쿼리 목적 사용 가능 버전
v$lock, v$session 매핑 10g ~ 23c
DBA_BLOCKERS, DBA_WAITERS 10g ~ 23c
SQL 추적 (SQL_ID 방식) 12c 이상 (정확도 ↑)
SPID 확인 및 종료 10g ~ 23c
세션 Kill 10g ~ 23c
 

 

728x90
728x90

예전 카페에서 폐지 공지가 와서 자료를 옮겨 놓습니다.

 

show parameter ACKGROUND_DUMP_DEST;

 

로그 확인 주기 : 수시로 확인!!!

 


오라클 로그 확인하기

✅ 1. Oracle 로그 파일 종류 및 위치

 

로그 종류 설명 기본 위치 예시 (UNIX/Linux)
Alert Log DB의 주요 이벤트, 오류, 시작/중지 정보 기록 $ORACLE_BASE/diag/rdbms/<DB_NAME>/<SID>/trace/alert_<SID>.log
Trace Log 세션별 상세 오류 및 트레이스 정보 위와 동일 디렉터리 내의 .trc 파일들
Listener Log 클라이언트 접속 이력, 오류 기록 $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log
Audit Log 보안 관련 작업 기록 (로그인/권한 변경 등) $ORACLE_BASE/admin/<SID>/adump/
Archive Log 아카이브 모드일 때 Redo 로그 백업 파일 db_recovery_file_dest에 설정된 디렉터리

📌 로그 위치는 Oracle 11g부터 Automatic Diagnostic Repository (ADR) 구조로 통일됨.

📅 2. 권장 모니터링 주기

로그 종류 모니터링주기 비고
Alert Log 매일 또는 실시간 시스템 상태, 오류 감지
Listener Log 매일 또는 주간 접속 오류, 보안 로그 확인
Audit Log 주간 또는 월간 보안 감사, 로그인 기록
Trace Log 문제 발생 시 디버깅 용도, 크기 증가 시 주의
Archive Log 매일 또는 실시간 FRA 공간 모니터링, 로그 적재 실패 감지
🔍 3. 모니터링 시 확인해야 할 핵심 포인트

✅ Alert Log

  • DB 시작/종료 시점 기록
  • ORA- 에러 (예: ORA-00600, ORA-01555)
  • Tablespace 자동 확장 실패
  • Archiver error (ARCH: Error)
  • Flashback, Undo 관련 에러
  • Block corruption 경고

🛠 확인 방법 (bash)

tail -f $ORACLE_BASE/diag/rdbms/<DB_NAME>/<SID>/trace/alert_<SID>.log

✅ Listener Log

  • 비정상 접속 시도 감지
  • 접속 에러 (e.g., ORA-12514, ORA-12541)
  • 접속 거부 또는 반복 접속 감지 (보안 이슈)

🛠 확인 방법 ( bash )

tail -f $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log

✅ Audit Log

  • 로그인/로그아웃 기록
  • GRANT/REVOKE, DDL 변경 로그
  • 비인가 사용자 로그인 시도

🛠 확인 방법 (bash)

cat $ORACLE_BASE/admin/<SID>/adump/*.aud

✅ Archive Log

  • 적재 실패 여부 (ARCH error)
  • FRA 공간 임계 도달 (unable to archive, disk full 등)
  • 백업 대상 여부 확인

🛠 RMAN으로 확인 (sql)

RMAN> list archivelog all;

📊 4. 자동화 및 모니터링 팁

도구 설명
Oracle Enterprise Manager (OEM) 실시간 로그/성능/오류 모니터링
Shell Script + Crontab tail, grep, awk 등으로 에러 필터링 및 알림
SIEM 도구 (예: Splunk, ELK) 로그 수집 및 시각화, 보안 이벤트 감지
Nagios, Zabbix 로그 기반 알림 연동 가능
 

예: Shell 기반 Alert Log 오류 감지 스크립트 (bash)

grep "ORA-" $ORACLE_BASE/diag/rdbms/<DB_NAME>/<SID>/trace/alert_<SID>.log | tail -10
 

📚 출처 및 참고자료

728x90

+ Recent posts