ORACLE
HOME > DB > ORACLE
2018.12.07 / 17:45

[OracleDB] 접속, 연결이 되다가 종료되는 경우(ORA-03113 혹은 connect close) 확인, 조치사항

hanulbit
추천 수 22

1. Oracle DB 에 접속이 되었다가, 연결이 종료되는 경우


  A. 특정 사용자 Profile 에 설정된 limit 때문에 연결이 종료 되는 경우 일수도 있음


    -- 확인


      > Profile 을 사용하려면, resource_limit 이 true 로 설정되어 있어야 함 -- 11gR2 Default 는 false


        SQL> select name, value from v$parameter where name like '%resource%' ;

        SQL> alter system set resource_limit = true scope=spfile ; -- 설정방법


      > 생성되어 있는, Profile 들을 확인 : PROFILE 명이 Dafault 인 것이 기본설정 Profile 입니다.


        SQL> select profile, resource_name, limit from dba_profiles where profile = '%NEW';

   

    -- 조치방법


      > 해당 Limit 을 제거한 Profile 을 생성하여, 해당 User 에 부여 (아래는 Sample)

      > 특정하지 않은 limit 은 Default profile 을 따름

 

        SQL> ALTER PROFILE Profile_NEW limit 

              PASSWORD_GRACE_TIME UNLIMITED 

              FAILED_LOGIN_ATTEMPTS UNLIMITED

              PASSWORD_LIFE_TIME UNLIMITED

              PASSWORD_LOCK_TIME UNLIMITED 

              idle_time UNLIMITED  ; 


        SQL> alter user user_new profile Profile_new  ; 


    -- 참조값

      

      > sessions_per_user 2 => 유저당 2개의 세션을 허용

      > idle_time 1 => 접속후 1분 동안 아무런 작업이 일어나지 않는다면 자동으로 Session을 종료

      > connect_time 480 => Open 된 세션을 8분(480초) 동안만 사용 허락,  분단위의 연결시간 제한

      > LOGICAL_READS_PER_SESSION 1028 => SESSION이 열려있는 동안 disk나 memory에서 읽을 수 있는 data block 수가 1024 Block



  B. DB Instance Lelvel 로 설정된 limit 때문에 연결이 종료 되는 경우일 수도 있음


    -- 확인


 SQL> select * from v$resource_limit ; 


RESOURCE_NAME

 CURRENT UTILIZATION

 MAX UTILIZATION

 INITIAL ALLOCATION

 LIMIT VALUE

 processes

 31

 1800

 2000

 2000

 sessions

 39

 3024

 3024

 3024

 enqueue_locks

 25

 61

 34780

 34780

 enqueue_resources

 22

 59

 13524

 UNLIMITED

 ges_procs

 0

 0

 0

 0

 ges_ress

 0

 0

 0

 UNLIMITED


      위의 셈풀 결과에서 processes 가 프로세스 갯수(백그라운드+Dedicate Process), 그리고 session 이 동시접속 세션 수 입니다.

      current_utilization 이 현재 접속 카운트이고... (1명 접속할 때 마다 1씩 증가)

      max_utilization  이 오라클을 시작한 이래로 최대로 접속했을 때 피크 수치입니다


    -- 조치 


      session (동시접속 세션 수) 가 3024 로 설정되어 있는데 ( Defailt 값도 3024 , 현 설정값도 3024 임), 

      현재는 session (동시접속 세션 수) 가 39 입니다만, DB 구동 후 동시접속 세션 수가 3024 에 도달할 적이 있으므로, 

      이 때, 더 이상의 session 들이 DB 에 연결되지 못하는 상황이엇을 것입니다. ==> 따라서 session 을 5000 개 정도로 늘릴 필요가 있습니다.


      sessions 과 processes 는 함꼐 증가 되어야 하며, sessions 은 processes * 1.1 + 5개 이상이 되어야 합니다. (DB 버전에 따라 상이)


 SQL> alter system set sessions = 5550 scope = spfile ; 

 SQL> alter system set processes = 5000 scope = spfile ; 


 SQL> shutdown immediate ; 

 SQL> startup ; 





출처: http://datacloud.tistory.com/12 [DataCloud]