java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException
这样的问题,先前我让他检查一下程序,他说已确定程序没什么问题。后来我也和他们一起检测过程序,确实程序是没有问题的。这时我想到了可能是数据库连接数的问题
我先用select * from sys.v_$session
SQL> select count(*) from v$process;
COUNT(*)
----------
44
SQL> select count(*) from v$session;
COUNT(*)
----------
39
这个sql查看了一下当前的用户连接数。这个结果也基本正常,接下来我想由于他的这个业务比较复杂,可能是oracle默认的连接数不够,所以我们修改了一下oracle的init.ora文件的配置。在此和大家一起分享一下在oracle的安装目录下:%oracle_home%\admin\orcl\pfile\有一个init.ora文件
我们来分析一下这个文件的内容
######################################################### Copyright (c) 1991, 2001 by Oracle Corporation
#########################################################
MTS
dispatchers="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"
###########################################
# 其他
###########################################
compatible=9.0.0db_name=orcl
###########################################
# 分布式, 复制和快照
###########################################
db_domain=""remote_login_passwordfile=EXCLUSIVE
###########################################
# 排序, 散列联接, 位图索引
###########################################
sort_area_size=524288
###########################################
# 文件配置
###########################################
control_files=("D:\oracle\oradata\orcl\CONTROL01.CTL", "D:\oracle\oradata\orcl\CONTROL02.CTL", "D:\oracle\oradata\orcl\CONTROL03.CTL")
###########################################
# 池
###########################################
java_pool_size=33554432large_pool_size=1048576shared_pool_size=33554432
###########################################
# 游标和库高速缓存
###########################################
open_cursors=300
###########################################
# 系统管理的撤销和回退段
###########################################
undo_management=AUTOundo_tablespace=UNDOTBS
###########################################
# 网络注册
###########################################
instance_name=orcl
###########################################
# 诊断和统计
###########################################
background_dump_dest=D:\oracle\admin\orcl\bdumpcore_dump_dest=D:\oracle\admin\orcl\cdumptimed_statistics=TRUEuser_dump_dest=D:\oracle\admin\orcl\udump
###########################################
# 进程和会话
###########################################
processes=150
###########################################
# 重做日志和恢复
###########################################
fast_start_mttr_target=300
###########################################
# 高速缓存和 I/O
###########################################
db_block_size=4096db_cache_size=33554432
在这个文件的processes=150我们把这个值改为260之后就没问题了!但是要注意的是:用户最大连接数跟你的硬件配置有关,所以要谨慎
当然还有其他两种修改的方式:
第一种方法:
在 Oracle 企业管理器例程-->会话中可以查看当前连接到数据库的详细信息
第二种方法:
SQLPLUS下运行:alter system set processes=250 scope=spfile;
其他:
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)
但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200-2000不等。
semmns的计算公式为:SEMMNS > processes + instance_processes + system processes = 数据库参数processes的值 instance_processes = 5(smon,pmon,dbwr,lgwr,arch)
system=系统所占用信号量。
系统所占用信号量可用下列命令查出:#ipcs -sb
其中列NSEMS显示系统已占用信号量。
其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为零,也就是没有限制。
以上转自:http://blog.sina.com.cn/s/blog_53d27b3a01008o5r.html
从Oracle9i开始,ALTER SYSTEM命令增加了一个新的选项scope。scope参数有3个可选值:memory、spfile和both。
●memory:只改变当前实例运行,重新启动数据库后失效。
●spfile :只改变spfile的设置,不改变当前实例运行,重新启动数据库后生效。
●both :同时改变实例及spfile,当前更改立即生效,重新启动数据库后仍然有效。
可以通过ALTER SYSTEM或者导入导出来更改spfile的内容。
针对RAC环境,ALTER SYSTEM还可以指定SID参数,对不同实例进行不同设置。
通过spfile修改参数的完整命令如下:
alter system set <parameter_name>=<value> scope=memory|spfile|both [sid=<sid_name>]
from offical doc:官方的文档的确是个好东西啊,仔细研读啊,什么都有....
===================================
SCOPE Clause Description
SCOPE = SPFILE The change is applied in the server parameter file only. The effect is as follows:
For dynamic parameters, the change is effective at the next startup and is persistent.
For static parameters, the behavior is the same as for dynamic parameters. This is the only SCOPE specification allowed for static parameters.
SCOPE = MEMORY The change is applied in memory only. The effect is as follows:
For dynamic parameters, the effect is immediate, but it is not persistent because the server parameter file is not updated.
For static parameters, this specification is not allowed.
SCOPE = BOTH The change is applied in both the server parameter file and memory. The effect is as follows:
For dynamic parameters, the effect is immediate and persistent.
For static parameters, this specification is not allowed.
It is an error to specify SCOPE=SPFILE or SCOPE=BOTH if the server is not using a server parameter file. The default is SCOPE=BOTH if a server parameter file was used to start up the instance, and MEMORY if a text initialization parameter file was used to start up the instance.
For dynamic parameters, you can also specify the DEFERRED keyword. When specified, the change is effective only for future sessions.
An optional COMMENT clause lets you associate a text string with the parameter update. When you specify SCOPE as SPFILE or BOTH, the comment is written to the server parameter file.
The following statement changes the maximum number of job queue processes allowed for the instance. It includes a comment, and explicitly states that the change is to be made only in memory (that is, it is not persistent across instance shutdown and startup).
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 COMMENT='temporary change on Nov 29' SCOPE=MEMORY;
以上转自:http://blog.sina.com.cn/s/blog_5fbb16590100krtn.html
分享到:
相关推荐
- 动态性能视图提供有关数据库内部状态的信息,如`v$session`, `v$process`, `v$log`等。 #### 十、约束 - 约束用于确保数据的完整性和一致性。常见的约束有`primary key`, `foreign key`, `unique`, `check`, `...
SQL> select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr; 说明:21是某个连接的sid数 然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus ...
23. **找出CPU使用高的用户会话**: 通过查询`v$session`和`v$process`视图,可以找出CPU使用率高的会话。 24. **Ora-01017错误**: 这通常与登录失败有关,可能是由于无效的用户名/密码组合或权限问题。 以上是...
3. 使用`v$session`和`v$process`视图来检查是否有异常会话或进程。 **如何获取排查数据库问题所需的日志** 为了进一步诊断问题,通常需要收集数据库的日志文件,包括: - 告警日志:`alert_<sid>.log` - 用户...
- 使用`DBMS_STATS.MODIFY_COLUMN_STATISTICS`修改特定列的直方图设置。 - **2.1.16 IO优化--db_writer_processes & dbwr_io_slaves对比** - 本书对比了`db_writer_processes`和`dbwr_io_slaves`两个参数的区别...
**找出CPU使用高的用户会话**:`SELECT a.sid, spid, status, substr(a.program,1,40) prog, a.terminal, osuser, value/60/100 value FROM v$session a, v$process b, v$sesstat c WHERE c.statistic# = 11 AND c....
通过`V$SESSION`和`V$SQLTEXT`视图,可以找到长时间运行的SQL语句和对应的会话信息,如`SELECT PROCESS, OSUSER, USERNAME, MACHINE, LOGON_TIME, SQL_TEXT FROM V$SESSION A, V$SQLTEXT B WHERE A.SQL_ADDRESS=B....
- EXISTS子查询:`SELECT ename, job, sal, deptno FROM emp WHERE EXISTS (SELECT * FROM dept WHERE dept.deptno = emp.deptno AND dept.loc = 'NEW YORK');` - **插入数据(Insert)**:`INSERT INTO emp VALUES...
使用特定SQL语句结合`v$session`、`v$process`和`v$sesstat`视图,可以找出消耗CPU资源最多的用户会话。 #### 四、表空间与用户管理 **23. 创建表空间与用户** - **创建用户**:`create user 用户名 identified ...
- **用户定制**:用户可以通过调用`DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS`过程来自定义快照的生成频率和保留时间。 - **快照控制表**:`DBA_HIST_WR_CONTROL`视图提供了对快照设置的查询接口,帮助...