有一個連線自動取得Oracle DB資料的程式與資料庫斷線了,這個程式出現了一個訊息:
ora-01012: not logged on
登入DB後查看log,發現有下列的訊息,應該就是原因了:
KILL SESSION for sid=(124, 55212):
Reason = profile limit idle_time
很明顯有一個session受到profile的限制而被kill掉。
連到db並查詢是否有啟用資源限制:
SQL> show parameter resource_limit;
NAME TYPE VALUE
-------------- -------- -------
resource_limit boolean true
查詢USER TEST001的profile:
SQL> select profile from dba_users where username = 'TEST001';
PROFILE
--------
A_PROFILE
查詢profile的時間限制:
SQL> select PROFILE,RESOURCE_NAME,LIMIT from dba_profiles where profile='A_PROFILE' and resource_name in ('IDLE_TIME','CONNECT_TIME');
PROFILE RESOURCE_NAME LIMIT
----------- --------------- -------
A_PROFILE IDLE_TIME 30
A_PROFILE CONNECT_TIME DEFAULT
把限制改長一點:
SQL> ALTER PROFILE A_PROFILE LIMIT IDLE_TIME 60;
或是把限制取消:
SQL> ALTER PROFILE A_PROFIEL LIMIT IDLE_TIME UNLIMITED;