• ORA-12518 TNS:监听程序无法分发客户机连接的解决办法


    环境: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 SettingsAdministrator>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 ;

    重新登录就可以了

  • 相关阅读:
    字符统计和滑动窗口
    字典树应用及用哈希表代替
    迷宫里的动态规划应用
    求所有排列中的第 i 个排列的问题
    最大子串和问题
    二分查找、变形及应用
    前 n 个数原址排序的问题
    LeetCode 32 括号匹配
    11.常用的API
    10.正则表达式
  • 原文地址:https://www.cnblogs.com/jijm123/p/13296945.html
Copyright © 2020-2023  润新知