同一单机安装双数据库,导致TNS-12518故障

懒到变成虫 2014-07-23 10:30:49
大家好。请教个问题,目前公司系统由于遗留问题,在单机上安装了两个oracle实例。现在导致一个数据库无法正常使用。
机器信息:
Windows Server 2003 Enterprise Edition SP2
Inter Xeon CPU E5520 2.27GHz
3.99GB
现在的故障现象是:一个库正常使用,另一个库经常出现如下错误导致无法连接,
故障如下:listener.log中日志显示
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
TNS-00530: 协议适配器错误
32-bit Windows Error: 233: Unknown error

sga\pga\sessions\process等参数已作过配置调整,观察现象是在连接数70左右就开始出现这个故障。请教一下大家有什么建议和解决方法。

以下是一些相关的配置信息
Oracle 10g 10.2.0

SQL> show parameters sga;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1G
sga_target big integer 1000M


SQL> show parameters pga;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 512M


SQL> show parameters memory;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
shared_memory_address integer 0


SQL> select * from (select count(*) se_q from v$session) a,(select count(*) pr_q
from v$process)b;

SE_Q PR_Q
---------- ----------
62 65


SQL> select name,(busy/(busy+idle))*100 "busy rate%" from v$dispatcher;

NAME busy rate%
---- ----------
D000 0


SQL> show parameters session;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 20
session_max_open_files integer 10
sessions integer 390
shared_server_sessions integer


SQL> show parameters process;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 2
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 350
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangdh12 2014-07-24
  • 打赏
  • 举报
回复
把两个的alert的日志贴上来吧。
huangdh12 2014-07-23
  • 打赏
  • 举报
回复
select a.SID, a.PROGRAM,b.PGA_USED_MEM/1024/1024||'M' as "占用内存",a.MACHINE,a.MODULE,a.USERNAME,b.PGA_USED_MEM,b.PGA_ALLOC_MEM,b.PGA_FREEABLE_MEM,b.PGA_MAX_MEM from v$session a ,v$process b where a.PADDR= b.ADDR and a.USERname is not null order by b.PGA_USED_MEM desc; 看看占用内存情况
huangdh12 2014-07-23
  • 打赏
  • 举报
回复
以前有碰过这个TNS-12518: TNS: 监听程序无法分发客户机连接 错误是因为 ,oracle 的内存超出了 系统的要求 32位window系统下, 通过修改配置,单个进程能支撑到3g左右的内存
懒到变成虫 2014-07-23
  • 打赏
  • 举报
回复
之前也修改过oracle的处理线程数, orastack oracle.exe 500000 orastack tnslsnr.exe 500000 orastack svrmgrl.exe 500000 orastack sqlplus.exe 500000 还对oracle的dispatcher进行过修改,还对window的boot.ini设置过内存。。。。等等,用过好多方法,还是出这个TNS错误,请教大家有什么好的建议和解决办法?谢谢了。。。
小灰狼W 2014-07-23
  • 打赏
  • 举报
回复
在cmd中,给环境变量ORACLE_SID设不同的值,可以使用sqlplus来访问各自的实例 如果监听正常,可以使用不同的服务名或sid来连接到对应实例 或者数据库用的参数文件是Initfile,可以直接用记事本打开查看 不过看起来基本可以定位到内存问题上。解决方法要么打开win32的3gb限制,增加内存,要么降低sga和pga的大小 其实我觉得把其中一个数据库移到别的机器上运行更靠谱一些
懒到变成虫 2014-07-23
  • 打赏
  • 举报
回复
引用 4 楼 wildwave 的回复:
两个实例都启动了吗 你这里给的参数是哪个实例的? 如果两个实例的sga+pga都是1.5G 操作系统要占掉将近1G空间,连接也需要内存的,内存相当吃紧
是两个实例都启动的。 这些参数是分实例的吗?我怎么觉得是两个实例共用的?还是我查看的方法不对啊? 如果是分开设置的,应该如何指定实例从而设定其下的pga/sga啊?
懒到变成虫 2014-07-23
  • 打赏
  • 举报
回复
小灰狼W 2014-07-23
  • 打赏
  • 举报
回复
两个实例都启动了吗 你这里给的参数是哪个实例的? 如果两个实例的sga+pga都是1.5G 操作系统要占掉将近1G空间,连接也需要内存的,内存相当吃紧

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧