1
根據我的理解,創建一個配置文件,其中idle_time
設置爲某個值(以分鐘爲單位)並創建一個擁有此配置文件的用戶應該強制該用戶會話的狀態爲SNIPED
,以防他閒置長於idle_time
。當用戶嘗試執行查詢後,他會收到一條消息,表明他必須再次連接。Oracle: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窗口,並使用系統帳戶,做其他的東西了一段時間後,運行下面的查詢連接:
SELECT username, status, seconds_in_wait FROM v$session WHERE username = 'test_user';
我得到的是這樣的:
USERNAME STATUS SECONDS_IN_WAIT
--------- -------- ---------------
TEST_USER INACTIVE 1166
爲什麼有狀態未被設置爲SNIPED
?
顯然,如果我從test_user的sqlplus窗口運行另一個查詢,我不會收到一條消息,要求我重新連接。