程序使用数据链路反复从源库里面查询数据,插入到目标库里面,调用另一个exe文件进行执行。
TNS-12518: TNS:监听程序无法分发客户机连接
TNS-12560: TNS:协议适配器错误
查询网上错误ORA-12518: TNS:监听程序无法分发客户机连接,可能是如下的原因:客户连接到监听器后,监听器把客户重定向到调度程序端口(很可能不是1521端口),由于操作系统问题,这些连接会被拒绝。如果是java连接oracle的问题,连接出现ora-12518的问题,查询了服务器仍然是dedicated的连接方式,说是在oracle的监听器LISTENER.ORA头加上
direct_handoff_ttc_LISTENER=off这么一句话就OK了
DIRECT_HANDOFF_TTC_LISTENER = OFF命令回收关闭掉长久不用连接
设置监听的跟踪文件
TRACE_LEVEL_LISTENER = USER
TRACE_DIRECTORY_LISTENER = C:\oracle\product\10.2.0\db_1\NETWORK\trace
TRACE_FILE_LISTENER = LISTENER1.trc
同时查看目标库的alert文件,发现出现大量600 7445:
Fri Sep 10 21:16:17 2010
Errors in file c:\oracle\product\10.2.0\admin\cnpclz1\udump\cnpclz1_ora_3116.trc:
ORA-00600:内部错误代码,参数: [kksfbc-reparse-infinite-loop], [0x74E7664], [], [], [], [], [], []
Fri Sep 10 22:29:03 2010
Thread 1 advanced to log sequence 178
Current log# 3 seq# 178 mem# 0: C:\ORACLE\PRODUCT\10.2.0\ORADATA\CNPCLZ1\REDO03.LOG
Sat Sep 11 01:00:38 2010
Errors in file c:\oracle\product\10.2.0\admin\cnpclz1\udump\cnpclz1_ora_1576.trc:
ORA-00600:内部错误代码,参数: [kksfbc-reparse-infinite-loop], [0x9489F38], [], [], [], [], [], []
Sat Sep 11 01:06:16 2010
Errors in file c:\oracle\product\10.2.0\admin\cnpclz1\udump\cnpclz1_ora_3436.trc:
ORA-07445:出现异常错误:核心转储[ACCESS_VIOLATION] [_kksfbc+12153] [PC:0x832B49] [ADDR:0x28] [UNABLE_TO_READ] []
还有大量类似信息:
Wed Sep 15 11:56:45 2010
Thread 1 cannot allocate new log, sequence 221
Checkpoint not complete
检查监听,确实不再出现12518的错误了
第二步:同时调整应用,修改程序使用绑定变量,同时减少提交的次数:
在pb里面使用绑定变量的方式:
PREPARE SQLSA FROM " insert into t1(rq,xtlb,idlb,id,xh,lxml) VALUES (?,?,?,?,?,?)" using sqlca;
EXECUTE SQLSA using:ist_owc.czrq,:gs_xtlb,:gs_idlb,:ls_code,:li_xh,:ls_data;
在java程序里面要用prepareStatement进行变量绑定
(但是修改后的程序在对2个表抽取时候出现cpu 100%的情况,后来只能又改回原来的方式,本想跟踪下没继续)
第三步、处理Checkpoint not complete问题
Thread 1 cannot allocate new log, sequence 221
Checkpoint not complete
checkpoint not complete, cannot allocate new log(2007-07-27 14:42:13)
当oracle重用一个日志文件的时候,该日志文件所保护的处于Buffer cache中的脏块(dirty buffer),必须写回磁盘,且必须纪录checkpoint的位置在控制文件和数据文件头。这个过程叫做检查点checkpoint.
发生checkpoint not complete, cannot allocate new log,表示要重用的日志文件的检查点还没有完成,被日志文件保护的脏块还没有完全被写回磁盘。必须等待该日志文件的checkpoint完成,才可以重新使用该日志文件。
V$LOG中STATUS为Active的,表示日志文件checkpoint未完成,Inactive表示checkpoint完成,current表示为当前LGWR写的日志文件。在实例恢复的时候,oracle需要使用到处于Active和Current状态的日志文件。
当因为检查点没有完成而不能重用日志文件的时候,从v$session_wait中可以看到很多session等待log file switch (checkpoint incomplete)事件,系统基本处于hang的状态。
查询了日志文件,都是1兆的大小,3个日志组:
增加日志组然后增大日志文件:
alter database add logfile group 4 size 25m;
alter database add logfile group 5 size 25m;
alter system switch logfile;
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database add logfile thread 1 group 1 size 25m;
alter database add logfile group 1 ('d:\oracle\oradata\orcllz\redo01.log') size 25m reuse;
alter database add logfile group 2 ('d:\oracle\oradata\orcllz\redo02.log') size 25m reuse;
alter database add logfile group 3 ('d:\oracle\oradata\orcllz\redo03.log') size 25m reuse;
alter database add logfile group 4 ('d:\oracle\oradata\orcllz\redo04.log') size 25m reuse;
alter database add logfile group 5 ('d:\oracle\oradata\orcllz\redo05.log') size 25m reuse;
四、查看内存的设置,感觉太大,怀疑应用耗尽了内存才会出现ora-7445 ora-600的错误,故缩小内存的应用reparse-infinite-loop:
Data_buffer 1g 缩为 800m
Sga 350m 缩为 300m
五、查询网上,10g有个bug,需要在10.2.0.4版本fixed
内存泄露显示遇到Bug 6494146了,下载了p6810189_10204_Win32.zip这个包
分享到:
相关推荐
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务的解决方法 Oracle 是一款功能强大且广泛应用的关系数据库管理系统,它提供了强大的数据存储和管理功能。但是,在使用 Oracle 时,用户经常会遇到各种错误...
ORA-12514:监听程序当前无法识别链接描述符中请求的服务,简单的来说就是Oracle数据库的监听器配置有问题。 解决方案 打开cmd命令,输入tnsping orcl ,正常情况下是这样显示的: 下面会显示监听器配置文件的路径及...
Oracle监听程序无法识别连接描述符中请求的服务解决方案 Oracle监听程序是 Oracle数据库管理系统中的一种重要组件,负责监听和处理来自客户端的连接请求。但是,在某些情况下,监听程序可能无法识别连接描述符中...
NULL 博文链接:https://springlin.iteye.com/blog/1520668
`orakill`命令是Oracle提供的一个可执行程序,通常位于`$ORACLE_HOME/bin`目录下。 此外,如果需要查询进程状态为"KILLED"的会话,可以使用以下SQL语句: ```sql SELECT a.spid, b.sid, b.serial#, b.username ...
--oraclesid, -s : oracle_sid 选填 默认 orcl --installfile, -f : 安装文件(绝对路径) 必填 --installdir, -d : 安装文件存放目录(绝对路径)选填 默认 /oracledata --installlog, -l : 安装日志(绝对路径...
2. **TNS设置**:检查`tnsnames.ora`文件,确保数据库服务名(Service Name)和连接字符串正确无误,同时确认TNS监听器配置正确。 3. **验证协议**:Oracle 12c可能要求更高级的认证方式,如AES256加密。检查数据库...
第一反应是监听没开: 1. 测试了一下, 连接超时没用ping 通 C:\Users\Administrator>tnsping brorcl TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 – Production on 15-6月 -2015 09:45:43 Copyright ...
### ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 解决方法 #### 错误概述 ORA-12514 是一个常见的 Oracle 数据库错误,当客户端尝试连接到数据库服务器时,可能会遇到这个问题。此错误通常发生在 ...
在使用Oracle数据库进行数据导入导出操作时,常常会遇到ORA-12154错误,即TNS:无法解析指定的连接标识符。这个问题主要由两个原因造成:一是Oracle服务器未安装正确,二是TNS配置文件未正确设置。以下是针对这两种...
expdp userid='sys/1@orcl as sysdba' schemas=ncadmin directory=DATA_PUMP_DIR dumpfile=D:\nc56mgsdn.dmp logfile=D:\ncadmin.log version=10.2.0.1.0 ``` - **userid**: 这里指定了以`sys`用户身份登录,密码为...
"Oracle 解决 ORA-01187:无法从文件中读取" Oracle 是一个功能强大的关系数据库管理系统,但是在实际应用中,我们可能会遇到各种错误信息,例如 ORA-01187:无法从文件中读取。该错误信息通常是由于临时文件无法被...
1. **日志文件**:检查Oracle监听器日志(例如 `$ORACLE_HOME/network/log/listener_orarac1.log`),在其中可能找到连接的IP信息。 2. **触发器**:创建一个登录触发器来记录IP地址。下面是一个示例: ```sql ...
为解决 navicat连接oracle报错:ORA-12737 Instant Client Light:unsupported server character set ZHS16GBK 错误,而准备的文件
- **影响**: 导致数据库无法正常启动。 **ORA-01145 错误** - **定义**: 在尝试将某个数据文件置为脱机状态时出现该错误。 - **原因**: 如果数据库没有启用介质恢复功能,则不允许用户立即将数据文件置为脱机状态。...
**1.1.1 Connect/Disconnect 数据库连接命令** - **Connect**: 使用 `connect` 命令可以连接到Oracle数据库。语法通常为 `connect username/password@database_name;` - 示例: `connect scott/tiger@orcl;` - **...
在这些示例中,`<主机>`是数据库服务器的IP地址或主机名,`<端口>`是数据库监听的端口号,`<数据库名>`是你要连接的数据库名称,`<SID>`是Oracle特有的服务标识符,而`<用户>`和`<密码>`则是登录数据库的凭证。...