TOOL/DATABASE 2017. 5. 30. 18:29

!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)