`
lizhen3708693
  • 浏览: 76316 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ora-12516 tns listener could not find available handler with matching protocol

阅读更多
公司数据库安装的是 Oracle10g XE(Oracle Database Express Edition 10g release 2)。 因我们组日益庞大,最近连接Oracle总出现ora-12516错误,百思不得其解。刚才CUUG群里在讨论oracle的session和connection的问题,一下提醒了我。上服务器看看了,确认了服务器端监听器和DB并没有问题,判断问题可能出现在客户端连接上。经过测试我的判断错了。查找ORA - 12516错误引起的原因,发现为Processes数量导致,Oracle的session和process的关系是sessions = 1.1*processes+5。 这样的话, 增加Processes的数量即可解决。最后的解决方案如下:



【注:session是个派生值,由processes的值决定,公式sessions=1.1*process+5】



方法1:通过SQLPLUS修改(我是这么做的)





login as: oracle

oracle@192.168.0.11's password:

Linux CEO-Server11 2.6.32-33-generic-pae #70-Ubuntu SMP Thu Jul 7 22:51:12 UTC 2011 i686 GNU/Linux

Ubuntu 10.04.3 LTS



Welcome to Ubuntu!

* Documentation:  https://help.ubuntu.com/



  System information as of Mon Mar 12 15:17:42 CST 2012



  System load:  0.13               Temperature:         13 C

  Usage of /:   5.2% of 452.76GB   Processes:           146

  Memory usage: 37%                Users logged in:     0

  Swap usage:   6%                 IP address for eth0: 192.168.0.11



  Graph this data and manage this system at https://landscape.canonical.com/



96 packages can be updated.

73 updates are security updates.



Last login: Mon Feb 13 15:00:16 2012 from 192.168.0.221

$ sqlplus /nolog

-sh: sqlplus: not found

$ $ORACLE_HOME/bin/sqlplus /nolog



SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 12 15:18:04 2012



Copyright (c) 1982, 2005, Oracle.  All rights reserved.



SQL> conn / as sysdba

Connected.

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     4

log_archive_max_processes            integer     2

processes                            integer     40



SQL> alter system set processes=600 scope=spfile;



System altered.



SQL>



方法2:修改Oracle配置文件(网上说的)

    值得注意的是,修改SPFILEORCL.ORA文件中的processes的值,在Oracle的不同版本中有所区别。Oracle9i以下版本中是init.ora文件, 在Oracle9i及更高版本中修改init.ora文件是无效的,这个文件由于是一个二进制的文件, 不能直接使用notepad些类的编辑器打开。否则会报错误ORA - 27101 Shared memory realm does not exist。 使用UltraEdit或者EditPlus之类的可以编辑二进制文件的编辑器打开些文件(直接编辑二进制文件), 然后再重新启动Oracle服务即可。



方法3:通过OEM(Oracle Enterprise Manager Console)在图形化管理器中修改(公司服务器没有图形化界面。苦逼啊只能用命令搞定,没办法这个也没用)



3.1 以系统管理员的身份登入

3.2 进入数据库的例程 - 配置 - 一般信息 - 所有初始化参数

3.3 修改processes的值

3.4 Sessions的值由公式sessions=1.1*process+5派生得到
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics