Oracle中如何保證使用者只有一個Session登入

xypincle發表於2017-02-20

  1. SQL> create profile one_session limit sessions_per_user 1;

  2. SQL> create user test identified by test;
  3.  
  4. User created. www.2cto.com

  5. SQL> grant connect,resource to test;

  6. Grant succeeded.

  7. SQL> alter user test profile one_session;

  8. SQL> alter system set resource_limit=true;

  9. sqlplus test/test

  10. host sqlplus test/test

  11. ERROR:

  12. ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit

  13. 但有個條件是如果是RAC, 則在其他instance還可以登入。

  14. --可以透過下面的語句檢視修改後的 RESOURCE_LIMIT 中的value欄位的值

  15. SELECT * FROM v_$parameter a WHERE lower(a.NAME) LIKE LOWER('%resource_limit%') ;

  16. --檢視profile檔案的內容
  17. SELECT * FROM dba_profiles a WHERE lower(a.profile) = lower('one_session') ;

  18. --撤銷以上的修改
  19. SQL>alter system set resource_limit=false ;

  20. SQL>alter user U1050 profile default ;

  21. SQL>drop profile one_session ;

  22. --以下是不建立profile,直接修改default profile進行使用者登入限制
  23. SQL>alter profile default limit SESSIONS_PER_USER 1 ;

  24. SQL>alter system set resource_limit=true;

  25. SQL>commit ;

  26. --撤銷以上的修改
  27. SQL>alter profile default limit SESSIONS_PER_USER unlimited ;

  28. SQL>alter system set resource_limit=false;

  29. SQL>commit ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2133925/,如需轉載,請註明出處,否則將追究法律責任。

相關文章