问题标签 [odp.net-unmanaged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1272 浏览

odp.net - Oracle.ManagedDataAccess.Client.OracleException: ORA-01017: 无效的用户名/密码;登录被拒绝

我在使用 ODP.NET 版本 19.3(可用的最新 Oracle 托管数据访问)使用安全外部密码存储 (SEPS) 连接到 Oracle 11g 时遇到问题,其中 Oracle 登录凭据存储在客户端 Oracle 钱包中。

如果我切换到经典的登录名/密码连接字符串,则数据库连接和命令没有问题。

此外,我报告所有其他使用经典 ODP 11(非托管 DataAccess)的 .net 应用程序在 SEPS 模式下连接都没有问题;事实上,我正在构建第一个使用 ODP.NET 19.3 和 SEPS 和 Oracle 钱包模式的案例。

为了我有:

  1. 为我们的应用程序创建了一个钱包(使用 mkstore utils)并将其放在服务器目录中:即

    C:\users\%APP_POOL_ID%\wallet

  2. 创建(对于所有应用程序)一个 sqlnet.ora 文件并将其放在服务器的 Oracle 主目录中:即

    %ORACLE_HOME%\网络\管理员

内容如下:

  1. 使用以下连接字符串:

    /li>

注意:用户 ID 和代理用户 ID 在连接字符串内用方括号指定。

这是我们获得的堆栈跟踪异常:

Oracle.ManagedDataAccess.Client.OracleException: ORA-01017: 无效的用户名/密码;登录被拒绝

在 OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd,布尔 bGetForApp,OracleConnection connRefForCriteria,字符串 affinityInstanceName,布尔 bForceMatch)

在 OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword,布尔 bGetForApp,OracleConnection connRefForCriteria,字符串 affinityInstanceName,布尔 bForceMatch)

在 OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs,PM conPM,ConnectionString pmCS,SecureStringsecurePassword,SecureStringsecureProxyPassword,OracleConnection connRefForCriteria)

在 Oracle.ManagedDataAccess.Client.OracleConnection.Open()

这是我通过<oracle.manageddataaccess.client>配置部分启用的跟踪的一部分:

此外,在另一个跟踪文件中,可以看到WriteOAuthMessage 将 BLANK 密码传递给 DB:

通过使用用户凭据登录服务器计算机并通过 sqlplus 命令测试与数据库的连接,我排除了问题是一个真正错误的登录名/密码。

谁能帮我?

非常感谢!

0 投票
0 回答
277 浏览

c# - 将 UDT 传递给存储过程时出现“值不在预期范围内”

这是我到 Oracle 中 UDT 的类映射(非常简单):

}

调用存储过程:

实例化:

我无法弄清楚为什么我不断收到“价值不在预期范围内”。整个周末都在看这个……运气不好。任何帮助是极大的赞赏。

0 投票
0 回答
781 浏览

c# - Oracle UDT 映射与 .Net 自定义类型包的类型映射问题

我通过 Oracle 数据访问非托管程序集将 Oracle 用户定义类型映射到 .Net 自定义类型。

我已关注文章https://www.codeproject.com/Articles/1261430/Calling-Oracles-Stored-Procedures-and-Mapping-User

我已经应用了简单的场景。

  1. 在模式级别创建 Oracle UDT,即

这是程序GET_ALL_STUDENTS主体

上面的例子工作正常。以上场景只是为了说明实施中没有问题

  1. 现在我在包中定义了类型,例如

以下是 STUDENT_PKG 正文

当我添加包含所有信息的 Oracle 参数时,我得到一个 Oracle 异常

“OCI-22303:类型\“STUDENT_PKG\”。\“PHONE_RC_TBL\”未找到”

我已经用 name 定义了 Oracle 自定义映射STUDENT_PKG.PHONE_RC_TBL

我已经尝试过使用以下名称

  • STUDENT_PKG.PHONE_RC_TBL
  • STUDENT_PKG
  • 电话_RC_TBL

当我执行OracleCommandBuilder.DeriveParameters(command);获取命令文本参数时,我得到以下信息:

Oracle 参数快速观看

当我执行时,我得到以下异常

OCI-22303:类型“KAMI”。未找到“STUDENT_PKG”

这意味着处理包的 udt 到 .Net 类的映射有些棘手。

P_PHONES_TBL这是我对参数的.Net自定义类的定义

这是存储过程调用:

0 投票
0 回答
93 浏览

c# - ODP.Net 11.2.0.2.0 不支持 64 位 Oracle.DataAccess.dll

我将 ODP.Net 11.2.0.1.0 与 Oracle 产品版本 11.2 和 Oracle.DataAccess.dll 32 位一起使用,因为它与 ODP.NET 11.2.0.1.0 兼容。

由于我的整个应用程序都是基于 32 位构建的,因此有时我们会观察到内存不足的异常。

为了解决内存异常,我将我的应用程序升级到 64 位。但是 64 位 Oracle.DataAcess.dll 与当前版本的 ODP.Net 11.2.0.1.0 不兼容

有什么方法可以在不升级 ODP 版本的情况下解决此问题。

0 投票
0 回答
108 浏览

.net - OracleUdt 在 .NET 应用程序中抛出 AgrumentException

使用 oracle UDT 时出现以下异常:

ArgumentException:已添加项目。输入字典:......

在 Oracle.DataAccess.Types.OracleUdt.GetAllReferencedAssemblies() 的 System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) 在 Oracle.DataAccess.Client.RegAndConfigRdr.setudtmapping(Hashtable& s_mapUdtNameToMappingObj) 在 Oracle.DataAccess.Types .OracleUdt.SetCustomTypeMappings() 在 Oracle.DataAccess.Types.OracleUdt.GetUdtName(String customTypeName, String dataSource) 在 Oracle.DataAccess.Client.OracleParameter.SetUDTFromCustomObject(OracleConnection conn, IOracleCustomType customObj, Int32 i) 在 Oracle.DataAccess.Client。 OracleParameter.PreBind_Collection(OracleConnection conn) 在 Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize, Boolean bIsFromEF, Boolean bIsSelectStmt) 在 Oracle.DataAccess.Client.OracleCommand.ExecuteReader (Boolean requery, Boolean fillRequest,CommandBehavior 行为)在 Oracle.DataAccess.Client.OracleCommand.ExecuteReader() 在 DBConn.DB_Command.ExecuteReader()

仅在生产机器上发生。在本地开发人员环境中不可重现。有谁知道发生了什么?

0 投票
1 回答
86 浏览

c# - Oracle Advanced Queue 的消息状态在使用 ODP.net 出队后未更新

我正在尝试通过服务使用 ODP.NET 将来自 oracle AQ 的消息出列

一旦 Service Dequeue 消息,该记录不应该可用于其他服务实例,这意味着它应该被锁定直到事务提交或事务过期

我的问题是我能够成功地将记录出列,但消息状态没有从就绪状态更新到任何其他状态,我也能够获取有效负载数据

我的队列就像

有人可以建议我做错了什么

0 投票
0 回答
47 浏览

.net - 使用 ODP.NET 非托管驱动程序 C#.NET 进行 kerberos 身份验证

您好我想将 kerberos 身份验证与 ODP.NET 非托管驱动程序一起使用。我可以使用“SQLPLUS /@UAT_APP”进行连接

我开发了一个针对 .NET 框架 4.6.1 的简​​单 C# 控制台应用程序,代码如下:

应用程序配置

我得到错误:

我已经安装了 Oracle 客户端 12c x64

请让我知道如何使用 ODP.NET 非托管数据访问驱动程序使用 Kerberos 身份验证。