zoukankan      html  css  js  c++  java
  • oracle-12514 or 12520 监听程序无法为请求的服务器类型找到可用的处理程序

    (转自:http://blog.csdn.net/wshl1234567/article/details/8003154)

    在项目过程中,测试程序的时候数据库经常报错,经过几天的判断和分析,发现一个规律,早上用的时候没有这种提示,而且用的人比较少,一到晚上测试程序的就来了,会经常出现这种个情况,然后我判断估计是线程数不够用的问题,不过记不清配置数据库的时候允许最大线程数设置的是多少了,先去看一下listener.log日志,内容如下

    20-9月 -2012 20:10:25 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=D:databasePLSQL?-??????plsqldev.exe)(HOST=MICROSO-1ACBH19)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=12065)) * establish * orcl * 12520

    TNS-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序 

    上网搜了一下果断是线程数问题,解决步骤如下:

    1、登录sysDBA查看最大连接数,select value from v$parameter where name = 'processes';  我的才150,想起来当时为了减轻笔记本负担所以设置的小了点 - -;

    2、修改最大连接数,alter system set processes=1000 scope=spfile;至于scope是个什么东东?看了一下资料贴在这里了

    (scope=both和scope=spfileOracle 里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改++ scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了++ scope=both 内存和spfile都更改++ 不指定scope参数,等同于scope=both.)

    附:关于连接数的常见命令

    查询数据库当前进程的连接数:

      select count(*) from v$process;

      查看数据库当前会话的连接数:

      elect count(*) from v$session;

      查看数据库的并发连接数:

      select count(*) from v$session where status='ACTIVE';

      查看当前数据库建立的会话情况:

      select sid,serial#,username,program,machine,status from v$session;

     查询数据库允许的最大连接数:

      select value from v$parameter where name = 'processes';

      或者:show parameter processes;

      修改数据库允许的最大连接数:

      alter system set processes = 300 scope = spfile;

      (需要重启数据库才能实现连接数的修改)

      重启数据库:

      shutdown immediate;

      startup;

      查看当前有哪些用户正在使用数据:

      select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

      from v$session a,v$sqlarea b

      where a.sql_address = b.address

      order by cpu_time/executions desc;

      备注:UNIX 1个用户session对应一个操作系统process,而windows体现在线程。

      启动oracle

      su - oracle

      sqlplus system/pwd as sysdba  //进入sql

      startup                                     //启动数据库

      lsnrctl start                              //启动监听

      sqlplus "/as sysdba"

      shutdown immediate;

      startup mount;

      alter database open;

    windows命令重启oracle,避免重启电脑的麻烦啦~~~

    在系统命令行输入sqlplus /nolog

    conn sys / as sysdba

    shutdow immediate;

    startup;

  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/FindSelf/p/3624866.html
Copyright © 2011-2022 走看看