검색결과 리스트
글
!markdown
Tested by 11g
## 최대세션수 제한하기
최대 접속SESSION수를 2000으로 제한해 두었는데 이를 초과하여 DB를 다루는데 불편한 지경에 이르렀다.
- 접속중인 SESSION수 확인
```sql
select * from v$resource_limit where resource_name = 'processes'
```
- 최대 접속SESSION수치 설정
```sql
alter system set processes=2000 scope=spfile
```
## 특정 DB_USER에서 너무 많은 세션을 사용중이었다.
특정 DB_USER에서 `과도하게 SESSION을 많이 사용`하는 것을 발견하였고 `이에 제약을 두어서 미연에 방지`한다면 SESSION관리에 호용성이 있을 것으로 생각되었다. 방법을 찾던 중 Profile을 이용하여 `DB_USER당 접속가능 Session수를 제한`하는 방법을 적용키로 했다.
바로 `PROFILE`의 `SESSIONS_PER_USER` 속성을 이용하여 제약을 줄 수 있다.
우선 다음과 같이 설정을 바꿔줘야한다.
## 시스템 설정 변경
- DB자원사용을 제한할 수 있도록 변경하기.
```sql
alter system set resource_limit=true scope=both;
```
## 방법1. 모든 DB_USER에 적용하기
Default Profile에 설정하면 모든 DB_USER에 적용할 수 있다.
- DB_USER당 100개의 세션제한 두기 예
```sql
alter profile default limit sessions_per_user 100;
```
## 방법2. 특정 DB_USER에 적용하기
기본적으로 Profile은 DEFAULT로 설정되어 있어 DEFAULT를 변경하면 되지만 사용자별로 Profile을 설정하고 싶다면 아래와 같이 수행하면 된다.
1. 특정 설정을 가진 PROFILE을 생성하기
```sql
create profile PROFILE_A;
```
```sql
alter profile PROFILE_A limit sessions_per_user 100;
```
2. 생성한 PROFILE을 DB_USER마다 적용하기
- 이미 존재하는 DB_USER에 적용하는 법
```sql
alter user MY_DB_USER profile PROFILE_A;
```
- DB_USER를 새로 생성하면서 해당 설정을 적용하는 법
```sql
create user MY_DB_USER identified by my_password profile PROFILE_A;
```
```sql
grant connect, resource to MY_DB_USER;
```
### 참고
특정 DB USER의 SESSION수를 제한하는 방법:
[http://support.dbworks.co.kr/?document_srl=3308&mid=ora_tb&listStyle=viewer](http://support.dbworks.co.kr/?document_srl=3308&mid=ora_tb&listStyle=viewer)
'TOOL > DATABASE' 카테고리의 다른 글
[MySQL] 5.5이하 버전은 트랜젝션이 없다.??? (0) | 2018.12.03 |
---|---|
[Oracle] 계층형 쿼리 (Start (0) | 2017.09.29 |
[Oracle] 계정(ACCOUNT) 암호만료(EXPIRED), 잠김(LOCK) 대처 (0) | 2017.04.06 |
[Oracle] 쉼표(,) 구분자로 목록화(리스팅)된 문자열에 포함한 컬럼의 행(row)만 출력하기 (0) | 2017.03.15 |
[Oracle] 특정 함수 원하는만큼 여러 줄(row) 출력하기 (0) | 2017.03.15 |