Tag: oracle

尝试不需要两个单独的x86和x64程序解决方案

我有一个程序需要在x86和x64环境中运行。 它使用的是Oracle的ODBC驱动程序。 我有一个Oracle.DataAccess.DLL的引用。 但是,根据系统是x64还是x86,此DLL会有所不同。 目前,我有两个独立的解决方案,我维护两者的代码。 这太残忍了。 我想知道什么是正确的解决方案? 我的平台设置为“任何CPU”。 并且我的理解是VS应该将DLL编译为中间语言,这样如果我使用x86或x64版本则无关紧要。 然而,如果我尝试使用x64 DLL,我收到错误“无法加载文件或程序集’Oracle.DataAccess,Version = 2.102.3.2,Culture = neutral,PublicKeyToken = 89b483f429c47342’或其依赖项之一。加载格式不正确的程序。“ 我在32位机器上运行,所以错误信息是有道理的,但它让我想知道当我需要在x64上工作时我应该如何有效地开发这个程序。 谢谢。

将Dapper与Oracle结合使用

我们使用Oracle作为我们的数据库提供者,并且已经考虑使用底层的Dapper替换我们的一些数据访问层(难以维护,难以合并XSD)和基于存储库的模式。 但是,在与oracle一起使用时,我们遇到了许多问题。 命名参数:这些似乎被忽略,无论何时在查询中使用它,Oracle似乎都会以它所想的任何顺序来解释它们。 SqlMapper返回正确命名的参数,它们在Oracle中无法正确解释 变量的“@”命名约定与oracle命名参数不兼容。 它希望在任何参数前面看到“:” 有没有人以前遇到这个并有任何解决方法?

.netentity framework与oracle 11g

我正在使用oracle提供程序的entity framework(Oracle.ManagedDataAccessDTC) 从visual studio可以正常运行一切,但是当我将它发布到IIS时,我收到一个连接错误exception。 这是我的webconfig女巫在visual studio上运行得很好: 这是我在IIS上遇到的错误: Server Error in ‘/EA’ Application. ORA-12154: TNS:não foi possível resolver o identificador de conexão especificado Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: […]

从存储过程,返回OUT参数和OUT游标和解析结果(Oracle)

问题:是否可以使用OUT返回: 两者:一个变量和一个游标,从我的代码下面? 我在SqlDB上看到了类似的问题,但经过一段很长的搜索后发现没有针对OracleDB的解决方案。 在PLSQL中: CREATE OR REPLACE PROCEDURE SPGETRESULTANDSETFLAG ( pFilter VARCHAR2, pMaxRowCount VARCHAR2, pTableID RAW, myFlag OUT NUMBER, myCursor OUT types.cursorType ) AS BEGIN Declare CountQuery VARCHAR(20000) := ”; DataQuery VARCHAR(20000) := ”; ResultingRows NUMBER := -1; Begin myFlag := -1; CountQuery := ‘SELECT COUNT(*) FROM ‘ || F_GET_TABLENAME_FROM_ID(PTABLEID => pTableID) || ‘ WHERE […]

Oracle Sequence nextval是来回跳转的数字

我创建了一个新表和一个新序列,我有两个C#Web服务尝试使用mySequence.nextval使用相同的查询将记录插入此表(是的,我检查了很多次,它们都使用mySequence.nextval )。 两个Web服务正在向表中插入行,但mySequence.nextval不按顺序返回数字 以下是创建记录的方式,显示了从mySequence.nextval获取其值的PrimaryKey 1 21 22 23 2 3 24 25 4 27 28 5 到目前为止没有重复,但为什么mySequence.nextval来回跳跃? 我应该担心吗 更新:使用cache_size = 20创建序列

Oracle存储过程和自定义数据类型

我有一个Oracle存储过程,它接受两个参数:自定义数据类型和字符串。 在Oracle中调用存储过程,我会执行以下操作: EXECUTE MY_STORED_PROCEDURE(MYTYPE_T(99, 231), ‘mystring’) 如何使用C#执行此操作? 我知道我需要将命令设置为存储过程,但如何将第一个参数指定为自定义数据类型? 更新: MYTYPE_T是通过创建的TABLE OF NUMBER CREATE OR REPLACE TYPE mytype_t AS TABLE OF NUMBER ;

ODP.NET Oracle.ManagedDataAcess随机ORA-12570错误

我正在尝试从非托管版本迁移到Oracle.ManagedDataAcess并接收randoms ORA-12570 TNS:数据包读取器故障。 我不知道为什么会出现这个错误,但是一旦它开始,每个后续请求都会给出相同的错误大约10-30分钟,然后它会再次运行10-30分钟,依此类推。 因此,随后的失败随机一段时间后随后成功 已经尝试过很多东西,要恢复: 环境: Oracle.ManagedDataAcess版本12.1.2400(4.121.2.20150926)(nuget)(服务器上没有安装可以覆盖bin版本的gac引用) Oracle Server Oracle Database 12c企业版12.1.0.2.0版 – 64位生产 Windows 2012(Windows Update确定) 经过: 防火墙:这不是防火墙问题 计算机错误:我的计算机,Azure WebApp和AWS EC2实例上也出现同样的问题 干扰:没有嗅探器运行,透明代理等。 加密:我不使用任何类型的加密(除非默认情况下启用了一些我不知道的事情) 连接字符串:相同的连接字符串与非托管版本完美配合 附加信息: 这是一个生产数据库,它非常稳定 应用程序编译为anycpu,IIS应用程序池限制为64位 我每次测试完全相同的请求(只是刷新其余的ws,webapi),所以它与数据格式无关 组态: 服务器sqlnet.ora SQLNET.AUTHENTICATION_SERVICES =(NTS) NAMES.DIRECTORY_PATH =(TNSNAMES,EZCONNECT) 应用程序Web.config <!—-> 一些参考: https://community.oracle.com/thread/3634263?start=0&tstart=0 ODP.net托管驱动程序抛出ORA-12570:网络会话:意外的数据包读取错误 使用Oracle Advanced Security Options管理Oracle客户端 IIS中的ODP.NET错误:ORA-12357网络会话文件结束 更新1 池改变后(我在这里描述的答案),我决定发布一个版本来做一些真正的测试。 1天后用户抱怨性能我得到了另一个错误:值不能为空。 参数名称:byteArray 我将引用更改回非托管版本,一切都很好,更快,没有bytearray错误,更好的池管理。 所以我现在只是放弃托管版本,也许我会在下一版本的Oracle上再试一次。 这里有一些关于这个新错误的引用,你可以看到,看起来像另一个错误(仍然没有任何答案)。 https://community.oracle.com/thread/3676588?start=0&tstart=0 EF […]

.net的替代Oracle驱动程序

我必须在C#中开发一个工具,从Oracle DB中检索一些数据。 由于我们的IT支持在安装Oracle客户端时遇到一些问题,我希望能够在没有安装客户端的情况下连接到数据库。 我们的想法是与应用程序一起安装(并可能注册)一个额外的库。 Oracle客户端存在哪些替代方案,它们的优缺点是什么? 这适用于一个小应用程序(1个表单,2个或3个查询,结果显示在DataGrid中,可能不超过10-20个数据集),但我也对可伸缩性问题感兴趣,因为我们也可能会离开Oracle客户拥有更大的未来项目。 当然,免费软件解决方案会很好,但我们不仅限于此。

使用大型CLOB从C#调用存储过程的问题

我不是第一个遇到这些问题的人,并会在下面列出一些参考文章,但我仍在寻找合适的解决方案。 我需要从C#Web服务调用存储过程(Oracle 10g数据库)。 Web服务器安装了Oracle 9i客户端,我使用的是Microsofts System.Data.OracleClient 。 该过程将XML作为CLOB。 当XML超过4000字节 (这可能是正常的用例)时,我偶然发现了以下错误: ORA-01460 – 要求执行未实现或不合理的转换 我发现了这个 , 这个和这个post。 此外,我发现了一个很有前途的解决方法,它不直接从C#调用存储过程,而是定义了一段匿名PL / SQL代码。 此代码作为OracleCommand运行。 XML嵌入为字符串文字,过程调用从该段代码中完成: private const string LoadXml = “DECLARE ” + ” MyXML CLOB; ” + ” iStatus INTEGER; ” + ” sErrMessage VARCHAR2(2000); ” + “BEGIN ” + ” MyXML := ‘{0}’; ” + ” iStatus […]

如何从.Net Core连接到Oracle数据库连接

在.netCore库中,我想连接到Oracle数据库。 我有什么方法可以做到吗? 我已经在另一个SOpost上尝试了这些建议,但它不起作用,也许从那以后就删除了? 正如你在我的project.json中看到的,我正在尝试使用“net461”。 我目前正在尝试通过老式的ADO.Net使用Oracle.ManagedDataAccess.Client。 我也知道Oracle尚未购买.netCore连接器。 但即使在那里,我也无法让它工作,它很难将System.Data包含在内,每当我尝试添加它时都会出错。 我的project.json看起来像这样: { “version”: “1.0.0-*”, “dependencies”: { “NETStandard.Library”: “1.6.0”, “Oracle.ManagedDataAccess”: “12.1.24160719”, }, “frameworks”: { “netstandard1.6”: { “imports”: [ “dnxcore50”, “net461” ] } } } 这就是我此刻尝试这样做的方式。 using Oracle.ManagedDataAccess.Client; public class MyRepository { public string GetServerVersion() { var _db = new OracleConnection(“User Id=myUser;Password=myPassword;Data Source=MyOracleConnection”); var serverVersion = _db.ServerVersion; return serverVersion; } […]