ORA-12537:TNS:connectionclosed错误处理过程

1,同事说oracle测试换了连接不上了,报错如下

?
1
2
3
4
5
6
7
8
9
10
11
<code class= " hljs ruby" >[oracle@pldb236 admin]$ rlwrap sqlplus powerdesk/pd141118@PD236
 
SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 23 14:16:31 2015
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
ERROR:
ORA-12537: TNS: connection closed
 
 
Enter user - name : </code>

检查监听正常,oracle服务也是正常启动的,但是登录不进去

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[oracle@pldb236 admin]$ tnsping PD236
 
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 23-NOV-2015 14:17:22
 
Copyright (c) 1997, 2009, Oracle.  All rights reserved.
 
Used parameter files:
 
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.236)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = powerdes)))
OK (10 msec)
[oracle@pldb236 admin]$

PS:原blog地址:https://blog.youkuaiyun.com/mchdba/article/category/3254519,未经过原csdn的博主mchdba允许,谢绝转载


2,解决方案

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[oracle@pldb236 bin]$ cd $ORACLE_HOME/bin/
[oracle@pldb236 bin]$
[oracle@pldb236 bin]$
[oracle@pldb236 bin]$ ll oracle
-rwsr-s --x. 1 oracle oinstall 210823844 Jul 31 13:21 oracle
[oracle@pldb236 bin]$
[oracle@pldb236 bin]$ chmod 6571 oracle
[oracle@pldb236 bin]$
[oracle@pldb236 bin]$ ll oracle
-r-srws --x. 1 oracle oinstall 210823844 Jul 31 13:21 oracle
[oracle@pldb236 bin]$
 
 
 
[oracle@pldb236 bin]$ rlwrap sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 23 14:20:09 2015
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
 
Connected to :
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL>
SQL>

ok可以连接上了,问题初步解决


3,不过3分钟后,又不行了,登录不上去。

SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 23 14:29:17 2015

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

ERROR:
ORA-12537: TNS:connection closed

Enter user-name:

去查看lsnrctl状态:
[oracle@pldb236 bin]$ lsnrctl status

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-NOV-2015 14:30:33
 
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.180.236)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                23-NOV-2015 14:30:19
Uptime                    0 days 0 hr. 0 min . 13 sec
Trace Level               off
Security                  ON : Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/pldb236/listener/alert/log.xml
Listening Endpoints Summary...
   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.180.236)(PORT=1521)))
   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)( KEY =EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
   Instance "PLSExtProc" , status UNKNOWN, has 1 handler(s) for this service...
Service "powerdes" has 1 instance(s).
   Instance "powerdes" , status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@pldb236 bin]$

看到后台alert的日志报错如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code class= " hljs livecodeserver" >        Mon Nov 23 14:32:00 2015
         ORA-00020: maximum number of processes 150 exceeded
         ORA-20 errors will not be written to the alert log for
          the next minute . Please look at trace files to see all
          the ORA-20 errors.
         Mon Nov 23 14:32:47 2015
         Process m000 submission failed with error = 20
         Mon Nov 23 14:33:02 2015
         ORA-00020: maximum number of processes 150 exceeded
         ORA-20 errors will not be written to the alert log for
          the next minute . Please look at trace files to see all
          the ORA-20 errors.
         Mon Nov 23 14:34:03 2015
         ORA-00020: maximum number of processes 150 exceeded
         ORA-20 errors will not be written to the alert log for
          the next minute . Please look at trace files to see all
          the ORA-20 errors.</code>

解决方案1:
lsnrctl stop 5分钟后,再lsnrctl start起来,问题解决了,是应用程序一直不停的连接数据库,占满了连接池导致的。

解决方案2:
查看oracle的连接数,果然为150

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code class= " hljs vhdl" >SQL> show parameter processes;
 
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes              integer     0
db_writer_processes          integer     2
gcs_server_processes             integer     0
global_txn_processes             integer     1
job_queue_processes          integer     1000
log_archive_max_processes        integer     4
processes                integer     150
SQL>
SQL>
SQL> </code>

分析原因:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<code class= " hljs asciidoc" >SQL> select count (1) from v$session t where t.status= 'INACTIVE' and t.username= 'PLAS' ;
   COUNT (1)
----------
         88
 
SQL>
SQL>
SQL> select count (1) from v$session t where t.status= 'INACTIVE' and t.username= 'PLAS' ;
   COUNT (1)
----------
          5
 
SQL> </code>

修改配置文件:

?
1
2
3
4
5
<code class= " hljs ruby" >[oracle@pldb236 ~]$ find /oracle - name *init.ora*
/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora
/oracle/app/oracle/product/11.2.0/dbhome_1/srvm/admin/init.ora
/oracle/app/oracle/admin/powerdes/pfile/init.ora.7112015171232
[oracle@pldb236 ~]$ </code>

改动连接数,并且写入参数文件

?
1
2
3
4
5
6
7
8
9
10
<code class= " hljs oxygene" > alter system set processes=500 scope = spfile;
SQL> alter system set processes=500 scope=spfile;
 
System altered.
 
SQL> create pfile from spfile;
 
File created.
 
SQL> </code>

关闭重启oracle实例,启动就可以看到最大连接数已经变成了500,问题解决

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<code class= " hljs vhdl" >SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@pldb236 ~]$ rlwrap sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 23 23:09:00 2015
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup;
ORACLE instance started.
 
Total System Global Area 6680915968 bytes
Fixed Size          2213936 bytes
Variable Size        4362078160 bytes
Database Buffers     2281701376 bytes
Redo Buffers           34922496 bytes
Database mounted.
Database opened.
SQL>
SQL>
SQL> show parameter processes;
 
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes              integer     0
db_writer_processes          integer     2
gcs_server_processes             integer     0
global_txn_processes             integer     1
job_queue_processes          integer     1000
log_archive_max_processes        integer     4
processes                integer     500
SQL> </code>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值