連線Oracle DB的程式出現ora-01012: not logged on

 有一個連線自動取得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;