oracle - 使用 ODP.net 和 NTS 作为 sysdba 的 ora-01017
问题描述
我无法使用 NTS 和 ODP 作为 sysdba 连接到我的 oracle 数据库(目标是使用大量没有任何密码的维护脚本)。我做了一些研究但没有成功,所以我来了。
这是我使用的 powershell 代码:
$srvOra = "oracle_server"
$port = 1521
$serviceName = "serviceName"
Add-Type -Path "C:\some_rep\Oracle.ManagedDataAccess.dll" #version 4.121.2.0
$connectionString = "User Id=/;DBA Privilege=SYSDBA;Data Source=" + "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)" + "(HOST=$srvOra)(PORT=$port))(CONNECT_DATA=" + "(SERVICE_NAME=$serviceName)))"
$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)
$connection.open()
这是我的结果:
- 从只有 odp dll 的多个服务器(2008r2、2012r2、2016 windows 服务器),我收到 ORA-01017 错误:用户名/密码无效;
- 从安装了 oracle 客户端的多台服务器,我收到相同的错误
- 从一个oracle服务器到另一个oracle服务器,连接成功*_*
事实:
oracle 数据库是 12.1.0.2.0 std,服务器是 2012R2 和 sqlnet.ora 仅包含以下 lign :
SQLNET.AUTHENTICATION_SERVICES = (NTS)
我的帐户是每个数据库服务器上 ora_dba 组的成员。
Fips 算法被禁用。
来自任何带有 oracle 组件的计算机的连接都可以使用 sqlplus /@some_entry 作为 sysdba。
任何帮助将不胜感激。谢谢你的时间 :)
解决方案
我找到了解决方案。
我加载的 Oracle.ManagedDataAccess.dll 版本不正确。因此,我从我的一台 oracle 服务器复制了正确版本的 dll,它运行良好,正如预期的那样。
推荐阅读
- python - 如何查询与外键链接的ManyToManyField,并且该外键与另一个外键链接?
- python - 顶层窗口的问题
- javascript - Console.log(myState) 显示完整数组,但 Console.log(myState.length) 给出 0
- sql-server - 如何查询 Index Rebuild 的进度或估计
- c# - 尝试运行 ASP.NET 应用程序时出现解析错误
- c# - tabcontrol 中的 TabPage 在 C# Winforms 中不显示数据
- laravel - 无法提交表单并显示错误消息“尝试获取非对象的属性”
- html - HTML 标记或技术,例如
换行符? - typescript - 如何在 nuxt 打字稿上调用 $auth?
- r - 使用 R 为子样本回归创建系数森林图