728x90
반응형
세션
What is Oracle Sessions?
애플리케이션과 데이터베이스 간의 연결을 의미한다.
출처: docs.oracle
세션의 주요 역할
- 클라이언트와 데이터베이스 사이의 연결을 유지한다.
- SQL 실행 상태, 트랜잭션 상태 등을 관리한다.
- 세션에 대한 정보는 v$session 뷰에서 확인할 수 있다.
SELECT * FROM v$session WHERE username = '사용자명'
SELECT * FROM v$session WHERE username = '사용자명'
SID | SERIAL# | USER# | USERNAME | STATUS | OSUSER | PROGRAM |
---|---|---|---|---|---|---|
1 | 41 | 0 | NULL | ACTIVE | oracle | oracle@e150c35f568d (J001) |
2 | 445 | 61 | imfra | INACTIVE | root | JDBC Thin Client |
11 | 31 | 61 | imfra | INACTIVE | root | JDBC Thin Client |
12 | 15 | 55 | developer | INACTIVE | root | JDBC Thin Client |
프로세스
What is Oracle Process?
Oracle 데이터베이스에서 수행되는 실행 단위를 의미한다.
출처: docs.oracle
포어그라운드 프로세스
- 사용자 세션과 직접 연결된 프로세스
- SQL 쿼리를 실행하거나 데이터를 수정하는 작업을 처리
- 각 세션에 대해 하나의 포어그라운드 프로세스가 존재
백그라운드 프로세스
- DB서버에서 주기적으로 실행되며 시스템 전체의 작업을 처리
- 사용자 세션과 직접 연결되지 않음
- 데이터베이스의 성능, 안정성, 복구 작업 등을 보장
리소스 제한
v$resource_limit 뷰의 역할
DB 내에서 사용자나 세션에 대해 설정된 리소스 제한에 대한 상태 정보를 제공한다.
#리소스 사용량 및 리미트값 확인
SQL > SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
RESOURCE_NAME |
CURRENT_UTILIZATION |
MAX_UTILIZATION | INITIAL_ALLOCATION | LIMIT_VALUE |
---|---|---|---|---|
processes | 92 | 139 | 300 | 300 |
sessions | 94 | 157 | 480 | 480 |
RESOURCE_NAME | 제한을 적용할 리소스의 이름 |
---|---|
CURRENT_UTILIZATION | 현재 사용 중인 값 현재까지 사용된 CPU 시간이나 연결된 세션 수가 표시됨 |
MAX_UTILIZATION | 최대 사용량 리소스를 사용한 세션 중에서 최대 사용량을 기록한 값 |
INITIAL_ALLOCATION | 리소스 제한의 초기 설정 값 |
LIMIT_VALUE | 리소스에 대해 설정된 최대 허용 값 최대 세션 수, 최대 CPU 시간 등이 설정될 수 있다. |
리소스 제한으로 발생하는 에러
ORA-00018 | LIMIT_VALUE를 초과하면 발생 |
---|---|
ORA-00020 | 최대 프로세스 수를 초과 |
ORA-00037 | 최대 프로세스 수를 초과 |
컨테이너 환경에서 리소스 제한 수정 방법
docker-compose.yaml
version: "3.8"
services:
oracle:
image: wnameless/oracle-xe-11g-r2 # 이미지 이름
container_name: oracledb-11g # 컨테이너 이름
restart: always
ports:
- "6521:1521"
environment:
ORACLE_SID: xe
ORACLE_USERNAME: system
ORACLE_PWD: oracle
TZ: Asia/Seoul
ORACLE_ALLOW_REMOTE: true
volumes:
- data:/u01/app/oracle/oradata
- /home/bxuser/docker/oracle11g/backup:/oradata
networks:
- bridge
volumes:
data:
networks:
bridge:
driver: bridge
#오라클 컨테이너 Bash 실행
[root@]$ docker exec -ti oracledb-11g bash
#SQLPLUS 실행
[root@oracledb-11g]$ sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Wed Apr 2 08:41:15 2025
Copyright (c) 1982, 2011, Oracle. All rights reserved.
#DBA 계정으로 로그인
Enter user-name: sys@xe as sysdba
#세션, 프로세스 LIMIT 수정
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL>ALTER SYSTEM SET SESSIONS=300 SCOPE=spfile;
SQL>ALTER SYSTEM SET PROCESSES=300 SCOPE=spfile;
#컨테이너 bash를 종료시킨다
#shutdown immediate 커맨드로 DB를 정지시키면 안된다
SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
root@e150c35f568d:/# exit
exit
[root@]$
#docker-compose 명령어를 사용해 재기동한다
[root@]$ docker-compose restart
728x90
반응형
'데이터베이스' 카테고리의 다른 글
[레디스] 스프링4.0 레투스 풀 설정(XML, JAVA) 샘플코드 (2) | 2023.12.22 |
---|---|
[Redis] 스프링4.0 xml 설정파일을 사용한 레디스 센티널 연결 (0) | 2023.10.09 |
[Redis] Redis Starts with Docker And WebFlux(2) (0) | 2023.04.09 |
[Redis] Redis Starts with Docker And WebFlux(1) (0) | 2023.04.02 |
[DB]SELECT - ORDER BY, WHERE, JOIN (0) | 2021.06.11 |
댓글