查詢的腳本:
select count(*) from v$process; --取得數據庫目前的進程數。 select value from v$parameter where name = 'processes'; --取得進程數的上限。 -- 修改的腳本, 須用 system 用戶或是 sys 用戶進行修改 alter system set processes=1000 scope=spfile; alter system set sessions=1100 scope=spfile;
我是用這一段來解決的
SQL> connect sys/test as sysdba Was connected to an idle instance. SQL> show parameters dispatchers; ORA-01034: ORACLE not available SQL> connect SYS/SYSADMIN as sysdba Was connected to an idle instance. SQL> select count(*) from v$session; SQL> show parameter processes SQL> alter system set processes=1000 scope=spfile; SQL> alter system set sessions=1100 scope=spfile; SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher ; 重新登錄就可以了
環境:windows XP +Oracle 10g R2 一、listener文件中的GLOBAL_DBNAME ,SID_NAME可能與實例名稱不符,修改后,重啟listener. 二、專有服務器模式下processes值設的過小。 可通過以下方法解決: 1.cmd 2.sqlplus 3.connect sys/test as sysdba 4.查看會話數、processes、sessions SQL> select count(*) from v$session; COUNT(*) ---------- 45 SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 50 SQL> show parameter sessions NAME TYPE VALUE java_soft_sessionspace_limit integer 0l icense_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 60 shared_server_sessions integer 5.修改processes和sessions值:sessions=(1.1*process+5) SQL> alter system set processes=300 scope=spfile; 系統已更改。 SQL> alter system set sessions=335 scope=spfile; 系統已更改。 6.重啟數據庫,使更改生效 (不過我沒有重啟) 三、共享模式下 1.show parameters dispatchers; show parameters dispatchers; NAME TYPE VALUE dispatchers string (protocol=tcp)(service=oracle10xdb) max_dispatchers integer 2.確定是否有足夠的dispatchers SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher ; NAME dispatcher busy rate ---- -------------------- D000 .000121704 D001 .000042597 D002 .004935402 如果超過50%,則需要考慮增加更多的dispatchers; 3.改變dispathchers: SQL>alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)'; system altered 四、PGA內存設置太小 注:該方法沒試過。 ------------------------------------------------------------------------------------------------------------------------------------------------ 按照如上我的解決方案: cmd調出命令行窗口 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 月 2月 20 13:45:30 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> connect sys/test as sysdba Was connected to an idle instance. SQL> show parameters dispatchers; ORA-01034: ORACLE not available SQL> connect SYS/SYSADMIN as sysdba Was connected to an idle instance. SQL> select count(*) from v$session; SQL> show parameter processes SQL> alter system set processes=1000 scope=spfile; SQL> alter system set sessions=1100 scope=spfile; SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher ; 重新登錄就可以了