查看oracle鏈接數

SQL> Select count(*) from v$session where status='ACTIVE' ;
  COUNT(*)
  ----------
  20
  SQL> Select count(*) from v$session;
  COUNT(*)
  ----------
  187
  SQL> show parameter processes;
  NAME                               TYPE        VALUE
  ------------------------------------ ----------- ----------
  aq_tm_processes                   integer     0
  db_writer_processes                integer     1
  gcs_server_processes                 integer     0
  job_queue_processes                integer     10
  log_archive_max_processes          integer     2
  processes                         integer     450
  SQL>
  併發指active,I SEE
  SQL> select count(*) from v$session   #鏈接數
  SQL> Select count(*) from v$session where status='ACTIVE' #併發鏈接數
  SQL> show parameter processes   #最大鏈接
  SQL> alter system set processes = value scope = spfile;重啓數據庫   #修改鏈接
  unix 1個用戶session 對應一個操做系統 process
  而 windows體如今線程
  DBA要定時對數據庫的鏈接狀況進行檢查,看與數據庫創建的會話數目是否是正常,若是創建了過多的鏈接,會消耗數據庫的資源.同時,對一些"掛死"的鏈接,可能會須要DBA手工進行清理.
  如下的SQL語句列出當前數據庫創建的會話狀況:
  select sid,serial#,username,program,machine,status
  from v$session;
  輸出結果爲:
  SID SERIAL# USERNAME PROGRAM MACHINE STATUS
  ---- ------- ---------- ----------- --------------- --------
  1 1 ORACLE.EXE WORK3 ACTIVE
  2 1 ORACLE.EXE WORK3 ACTIVE
  3 1 ORACLE.EXE WORK3 ACTIVE
  4 1 ORACLE.EXE WORK3 ACTIVE
  5 3 ORACLE.EXE WORK3 ACTIVE
  6 1 ORACLE.EXE WORK3 ACTIVE
  7 1 ORACLE.EXE WORK3 ACTIVE
  8 27 SYS SQLPLUS.EXE WORKGROUP\\WORK3 ACTIVE
  11 5 DBSNMP dbsnmp.exe WORKGROUP\\WORK3 INACTIVE
  其中,
  SID 會話(session)的ID號;
  SERIAL# 會話的序列號,和SID一塊兒用來惟一標識一個會話;
  USERNAME 創建該會話的用戶名;
  PROGRAM 這個會話是用什麼工具鏈接到數據庫的;
  STATUS 當前這個會話的狀態,ACTIVE表示會話正在執行某些任務,INACTIVE表示當前會話沒有執行任何操做;
  若是DBA要手工斷開某個會話,則執行:
  alter system kill session \'SID,SERIAL#\';
  注意,上例中SID爲1到7(USERNAME列爲空)的會話,是Oracle的後臺進程,不要對這些會話進行任何操做.數據庫

相關文章
相關標籤/搜索