【问题标题】:listener failed to start a dedicated server process侦听器无法启动专用服务器进程
【发布时间】:2010-07-28 08:01:32
【问题描述】:

我的 spring-hibernate 应用程序在过去 1 周内运行没有问题,但突然出现以下错误。这会是由 applicationContext.xml 中的配置错误引起的吗?我的 oracle10g 日志文件没有错误(我每 1-2 周出现一次错误)

28 Jul 2010 14:20:19,177 INFO [http-2020-19] - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
28 Jul 2010 14:20:19,224 INFO [http-2020-19] - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
28 Jul 2010 14:20:19,240 WARN [http-2020-19] - Error while extracting database product name - falling back to empty error codes
org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Listener refused the connection with the following error:
ORA-12500, TNS:listener failed to start a dedicated server process
The Connection descriptor used by the client was:
10.1.0.23:1521:myserver

 at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:293)
 at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320)
 at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:216)
 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:140)
 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:103)
 at org.springframework.orm.hibernate3.SessionFactoryUtils.newJdbcExceptionTranslator(SessionFactoryUtils.java:145)
 at org.springframework.orm.hibernate3.HibernateAccessor.getDefaultJdbcExceptionTranslator(HibernateAccessor.java:453)
 at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
 at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
 at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
 at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1055)
 at com

我的 applicationcontext.xml 休眠配置

<property name="hibernateProperties">
    <props>



        <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
        <prop key="hibernate.show_sql">false</prop>
        <prop key="hibernate.format_sql">false</prop>
        <prop key="hibernate.use_sql_comments">false</prop>
        <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>  


                      <prop key="hibernate.c3p0.min_size">10</prop>
                        <prop key="hibernate.c3p0.max_size">100</prop>
                        <prop key="hibernate.c3p0.timeout">10</prop>
                        <prop key="hibernate.c3p0.acquireRetryAttempts">30</prop>

                        <prop key="hibernate.c3p0.acquireIncrement">5</prop>

                        <prop key="hibernate.c3p0.idleConnectionTestPeriod">100</prop>

                        <prop key="hibernate.c3p0.initialPoolSize">20</prop>
                        <prop key="hibernate.c3p0.maxPoolSize">100</prop>
                        <prop key="hibernate.c3p0.maxIdleTime">300</prop>
                        <prop key="hibernate.c3p0.maxStatements">50</prop>
                        <prop key="hibernate.c3p0.minPoolSize">10</prop>
                        <prop key="hibernate.c3p0.preferredTestQuery">SELECT 1 FROM DUAL</prop>
                        <prop key="hibernate.c3p0.testConnectionOnCheckout">true</prop>



      <prop key="hibernate.cache.provider_class">

                                                    org.hibernate.cache.EhCacheProvider
        </prop>
        <prop key="hibernate.cache.use_second_level_cache">true</prop>
        <prop key="hibernate.cache.use_query_cache">true</prop>




    </props>
</property>

【问题讨论】:

    标签: java oracle hibernate spring oracle10g


    【解决方案1】:

    这和Spring关系不大,Hibernate,这是一个纯粹的Oracle“问题”。以下是我们可以阅读的有关 ORA-125000 的内容:

    ORA-12500: TNS:listener 无法启动专用服务器进程

    原因:启动专用服务器进程失败。这 找不到可执行文件或 环境可能设置不正确。

    操作:在 ADMIN 级别打开跟踪并重新执行 手术。验证 ORACLE 服务器可执行文件存在并且具有 启用执行权限。确保 ORACLE 环境是 在 LISTENER.ORA 中正确指定。 Oracle 协议适配器是 被调用可能未安装在 本地硬盘。请检查 正确的协议适配器是 成功关联。如果错误 仍然存在,请联系 Oracle 客户 支持。

    根据Thread: ORA-12500: TNS:listener failed to start a dedicated server process

    这会发生

    • 数据库未打开时
    • 超过最大会话数时
    • 超过 Windows 最大线程数时

    来自Oracle listener ORA-12500 Tips的更多提示:

    ORA-12500 最常见的原因是系统繁忙导致 PGA RAM 耗尽。解决方案是:

    • 减少 sort_area_size (pga_aggregate_target) 和 hash_area_size 以使每个默认 PGA 大小更小。
    • 添加额外的服务器 RAM
    • 作为最后的手段,部署共享服务器(多线程服务器 (MTS)。

    listener.ora 文件中的常见语法问题会导致许多侦听器连接问题,最明显的是“ORA-12500: TNS: listener failed to start a dedicated server process”错误。

    根据 pga_aggregate_target、sort_area_size 和 hash_area_size 的设置,有时这个 ORA-12500 是因为目标数据库上的 PGA RAM 不足

    您可以有一个侦听器,指向多个 Oracle 实例,每个实例都在不同的版本上。

    在 Windows,尤其是 Oracle8 和 Oracle8i 中,您可能需要使用 Windows 任务管理器重新启动侦听器服务。

    另见

    【讨论】:

    • 是的。我确实知道提到的大多数网站都需要像你提到的那样做。你认为如果我将 cp30 池设置为 1/2 最大连接也会解决问题吗?目前我使用 100 个连接。这太多了吧?
    • @cometta:我不能说适合您的应用的设置是什么,这实际上取决于并发用户的数量等,您正在运行的实例数量,线程池等。不过,对于一个池来说,100 是一个相当不错的大小。
    猜你喜欢
    • 2015-02-21
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2023-02-03
    • 2021-05-23
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多