问题标签 [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.
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 钱包模式的案例。
为了我有:
为我们的应用程序创建了一个钱包(使用 mkstore utils)并将其放在服务器目录中:即
C:\users\%APP_POOL_ID%\wallet
创建(对于所有应用程序)一个 sqlnet.ora 文件并将其放在服务器的 Oracle 主目录中:即
%ORACLE_HOME%\网络\管理员
内容如下:
使用以下连接字符串:
/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 命令测试与数据库的连接,我排除了问题是一个真正错误的登录名/密码。
谁能帮我?
非常感谢!
c# - 将 UDT 传递给存储过程时出现“值不在预期范围内”
这是我到 Oracle 中 UDT 的类映射(非常简单):
}
调用存储过程:
实例化:
我无法弄清楚为什么我不断收到“价值不在预期范围内”。整个周末都在看这个……运气不好。任何帮助是极大的赞赏。
c# - Oracle UDT 映射与 .Net 自定义类型包的类型映射问题
我通过 Oracle 数据访问非托管程序集将 Oracle 用户定义类型映射到 .Net 自定义类型。
我已关注文章https://www.codeproject.com/Articles/1261430/Calling-Oracles-Stored-Procedures-and-Mapping-User
我已经应用了简单的场景。
- 在模式级别创建 Oracle UDT,即
这是程序GET_ALL_STUDENTS
主体
上面的例子工作正常。以上场景只是为了说明实施中没有问题
- 现在我在包中定义了类型,例如
以下是 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);
获取命令文本参数时,我得到以下信息:
当我执行时,我得到以下异常
OCI-22303:类型“KAMI”。未找到“STUDENT_PKG”
这意味着处理包的 udt 到 .Net 类的映射有些棘手。
P_PHONES_TBL
这是我对参数的.Net自定义类的定义
这是存储过程调用:
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 版本的情况下解决此问题。
.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()
仅在生产机器上发生。在本地开发人员环境中不可重现。有谁知道发生了什么?
c# - Oracle Advanced Queue 的消息状态在使用 ODP.net 出队后未更新
我正在尝试通过服务使用 ODP.NET 将来自 oracle AQ 的消息出列
一旦 Service Dequeue 消息,该记录不应该可用于其他服务实例,这意味着它应该被锁定直到事务提交或事务过期
我的问题是我能够成功地将记录出列,但消息状态没有从就绪状态更新到任何其他状态,我也能够获取有效负载数据
我的队列就像
有人可以建议我做错了什么
.net - 使用 ODP.NET 非托管驱动程序 C#.NET 进行 kerberos 身份验证
您好我想将 kerberos 身份验证与 ODP.NET 非托管驱动程序一起使用。我可以使用“SQLPLUS /@UAT_APP”进行连接
我开发了一个针对 .NET 框架 4.6.1 的简单 C# 控制台应用程序,代码如下:
应用程序配置
我得到错误:
我已经安装了 Oracle 客户端 12c x64
请让我知道如何使用 ODP.NET 非托管数据访问驱动程序使用 Kerberos 身份验证。