查看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的後臺進程,不要對這些會話進行任何操作.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章