- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道,我知道,你会告诉我检查我的路径和注册表。我有,相信我。
我的情况——我们有两个机器运行相同的代码和相同的 web.config 文件。以下是两者的规范。
相关配置部分:
<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name="TraceFileName" value="C:\MDM\TraceLog\"/>
<setting name="TraceLevel" value="7"/>
<setting name="SelfTuning" value="0"/>
<setting name="TNS_ADMIN" value="C:\MDM\tnsnames"/>
</settings>
</version>
</oracle.manageddataaccess.client>
当我们从非托管 Oracle 升级到托管时,我们的问题就开始了。
症状:我们网站的主页具有自动刷新功能,每 2 分钟重新加载一次页面。我们的一些用户在一天结束时离开时将其保持打开状态。午夜时分,应用程序池进行回收。大约 12:02,自从 Oracle.ManagedDataAccess.dll 发布以来,我们一直无法解决连接标识符错误,该错误在对数据库的任何调用中持续存在,直到应用程序池被回收,此时一切工作顺畅。
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS:could not resolve the connect identifier specified
at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName)
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor)
at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, String instanceName)
at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName)
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
TNSPING 能够毫无问题地连接到数据库。昨晚我离开了直接打开我们两个盒子的页面,其中只有一个显示了这个问题。 tnsnames.ora 文件位于两台机器上的 c:\mdm\tnsnames 目录中。 tnsnames.ora 文件是来 self 们数据库团队的最新文件。
最令人恼火的是,一旦应用程序池被重置,连接就会正常工作。没有问题,没有性能影响,它根本没有出现在我们的较低环境中。我无法提供跟踪日志,因为无论我对跟踪设置做什么,c:\mdm\tracelog 目录中都不会显示任何内容。
有人知道为什么会这样吗?
编辑:没有环境变量 TNS_ADMIN;注册表变量指向与配置文件相同的位置。
所有用户对 tnsnames.ora 文件都有完全权限。
只有两个 tnsnames.ora 文件,我的和之前安装中包含的示例文件。一共有三个sqlnet.ora文件,一个和tnsnames.ora文件在同一目录下,一个在%ORACLEHOME%\network\admin文件夹下,一个在%ORACLEHOME%\network\admin\sample文件夹下。
最佳答案
如果在您重置 AppPool 时一切正常,那么它听起来不像是与 TNSNAMES.ORA 相关。听起来更像是 AppPool 正在停止但没有回收。
此外,您提到您的主页每两分钟刷新一次并访问服务器,如果它们在 AppPool 回收时访问服务器并失败,这是否会导致 AppPool 的 Rapid-Fail Protection 将其关闭? AppPool自带一个生成回收事件日志条目的选项,默认情况下它显示的不多,你需要选择你想要记录的内容。该日志可能包含更多关于为什么回收事件没有飞行的线索。
日志本身有点难找,这里有一个链接可能对你有帮助:
https://webmasters.stackexchange.com/questions/17630/which-event-log-file-does-iis-7-app-pool-log-to
关于c# - TNS :could not resolve the connect identifier specified I have done the research,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822797/
我使用 resolver() 作为 socket() 的替代方法,因为我发现当多个连接建立到不同的 IP 时,它最终会停止工作。 无论如何它会向我返回一个警告,我应该使用 dns.resolver.R
我有这个代码: var promise1 = new Promise(function(resolve, reject) { setTimeout(() => { console
我仍在学习 PHP,我认为我不是母语人士,这并不难理解。 此时,看了一大堆文档,跳入了深水区,于是打开Laravel源文件,一个接一个地看,试图更好地理解MVC的整个实现,包括路由、中间件如何组合成一
public JsonResult GetEvents(double start, double end) { var userName = Session["UserName"] as st
我正在使用 bluebird,我看到了两种将同步函数解析为 Promise 的方法,但我不明白这两种方法之间的区别。看起来堆栈跟踪有点不同,所以它们不仅仅是一个别名,对吧? 那么首选的方式是什么? 方
我写了下面的代码: function readFile(path) { return new Promise(function(resolve, reject){ if(!fs
我正在使用 bluebird,我看到了两种将同步函数解析为 Promise 的方法,但我不明白这两种方法之间的区别。看起来堆栈跟踪有点不同,所以它们不仅仅是一个别名,对吧? 那么首选的方式是什么? 方
在某处读过这个例子: return new Promise( (resolve, reject) => { fs.readFile(file, (err, data) => { if (e
我刚开始学习 React,我一直在尝试让我的 React 应用程序连接到我的数据库 var mysql = require('mysql'); var con = mysql.createConnec
我需要从 $http 调用中返回一个 promise 中的自定义响应,以便我可以链接更多调用。我有两个可用的实现。有人可以解释两者之间的区别,并争论其中一个更好吗? 在 fooService.js 实
免责声明:这里实际上提出了两个问题,但我觉得它们密切相关。 我正在尝试将 promise 对象传递给指令,并且我想在 promise 解析后立即在指令中运行一些初始化代码。 在我的 Controlle
我正在尝试创建类似于 this code 的东西在 boost.asio 示例中找到。 套接字.h: class some_class { private: ... boost
正如我们所知,Promise 构造函数采用一个执行函数,该函数具有两个参数,我们使用它们来生成成功案例或失败案例。今天我在编程,我被卡住了,但后来我解决了这个问题,但我发现了一件事需要理解。 有什么区
我认为 Promise.resolve 和 new Promise(resolve) 可以互换。 考虑一下: A. new RSVP.Promise(function (resolve, reject
我下载了一个 Java 项目,我想研究并从中学习一些东西。当我在另一台计算机上下载它时效果很好,但是当我在我的计算机上尝试时,几乎每个声明和导入都会给出错误消息“* cannot be resolve
我昨天看到了一些有趣的编译器行为,我想我明白为什么会这样,但我想确定一下。所以,我不会写我的推理,只写事实。 请注意,我使用 vector 而不是 string 并不是错字。我是故意这样做的,这样编译
我正在尝试运行 Ember 测试,它给出了这个错误,提示无法找到从 `AppName/resolver 导入的模块 ember-resolver。 我不确定是什么原因造成的。我正在使用 Ember-c
Code#1 和 Code#2 的区别在于:Code#1 使用 resolve(p) 而 Code#2 使用 p.then(()=>resolve()) 。我希望输出序列是不变的,但它们会生成不同的序
IntelliJ IDEA 无法解析内置 JVM 类型和方法的常见原因有哪些?例如,当我将鼠标悬停在 String 上时,工具提示显示“无法解析符号“String””。就好像 IntelliJ 不知道
IntelliJ IDEA 无法解析内置 JVM 类型和方法的常见原因有哪些?例如,当我将鼠标悬停在 String 上时,工具提示显示“无法解析符号“String””。就好像 IntelliJ 不知道
我是一名优秀的程序员,十分优秀!