2012-03-13 3 views
1

idle_time의 프로필을 특정 값 (분)으로 설정하고이 프로필을 사용하여 사용자를 생성하면 유휴 상태 일 때 해당 사용자 세션의 상태를 강제로 적용해야합니다 (SNIPED). idle_time 이상. 사용자가이 문제가 발생한 후에 쿼리를 실행하려고하면 다시 연결해야한다는 메시지를받습니다.오라클 : idle_time이 무시됩니다.

첫 번째 질문 : 맞습니까?는이 경우에 읽기 : (분명히 자리없이) SQLPLUS에서 다음과 같이

내가 테스트 스크립트를 실행 해요 :

connect system/<password>@<tns> 
CREATE PROFILE test_profile LIMIT idle_time 1; 
CREATE USER test_user PROFILE test_profile IDENTIFIED BY test_user; 
GRANT CREATE SESSION TO test_user; 
GRANT ALTER SESSION TO test_user; 
GRANT SELECT ON <schema>.<table> TO test_user; 
disconnect; 
connect test_user/[email protected]<tns> 
SELECT * FROM <schema>.<table>; 

모든이 시점까지 작동합니다 sqlplus 창이 여전히 열려 있습니다. 지금은 추가 sqplus 창을 열고, 시스템 계정을 사용하여 잠시 동안 다른 물건을 수행 한 후 다음 쿼리를 실행 연결 :

USERNAME STATUS SECONDS_IN_WAIT 
--------- -------- --------------- 
TEST_USER INACTIVE   1166 

왜 상태가 있습니다

SELECT username, status, seconds_in_wait FROM v$session WHERE username = 'test_user'; 

내가 좋아하는 뭔가를 얻을 SNIPED으로 설정되지 않았습니까?

분명히 test_user의 sqlplus 창에서 다른 쿼리를 실행하면 다시 연결하라는 메시지가 표시되지 않습니다.

답변

4

프로필의 리소스 제한을 적용하려면 데이터베이스의 RESOURCE_LIMIT 매개 변수를 TRUE으로 설정해야합니다. 당신이 PMON 그것은 몇 분 간격으로 깨어 때 IDLE_TIME 초과 한 세션을 저격 시작해야한다, 그렇게되면 당신은 SPFILE을 사용하는 가정

ALTER SYSTEM SET resource_limit = TRUE scope = BOTH 

을 (그렇지 않으면 scope = BOTH 부분을 생략).

관련 문제