Oracle有一个概念,即允许运行连接到Oracle的程序的操作系统用户识别数据库用户。请参见此处

这允许您在unix机器上执行命令,例如:

sqlplus /

我正在尝试为Oracle 10.2编写一个Java程序,它在没有用户名或密码的情况下连接。网址的明显选择:

jdbc:oracle:thin:/@localhost:1521:MYDBSID

不起作用,发出错误(抱歉我现在没有错误)。

我也曾尝试过许多其他形式的做法,但没有运气。

有没有人对如何使用操作系统识别方法将Java程序连接到Oracle有任何建议?

有帮助吗?

解决方案

JDBC Thin驱动程序是100%纯Java实现,无法从操作系统收集所需信息。

JDBC OCI驱动程序可以做到这一点!使用 jdbc:oracle:oci8:/ @ MYDBSID ,它将要求在该机器上安装Oracle驱动程序,如果这是一台服务器则不是问题(并且启动速度更快,并支持更多功能)而不是薄驱动程序)

其他提示

oracle发布的jdbc驱动程序无法从您提供的URL收集操作系统用户名和密码。假设有ORACLE的第三方JDBC驱动程序提供程序,其中一个可能提供您要求的功能。你应该谷歌。

感谢那些回答的人。我们已经使用了OCI驱动程序。

我确实通过瘦驱动程序找到了建议Oracle 11g 支持OS用户身份验证的文档:

http://www.orindasoft.com /public/Oracle_JDBC_JavaDoc/javadoc1110/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER

我没有11g设置来测试它,所以我无法确定这是否有效。

如果您从J2EE应用程序服务器访问Oracle,则可以通过使用JNDI获取数据源来实现类似的目的。

11g瘦驱动程序可以使用Kerberos身份验证进行连接。

请参阅使用Kerberos连接到Oracle数据库

尝试以下 JDBC:预言:瘦:用户名/密码@本地:1521:MYDBSID

您需要指定帐户信息

在unix机器上的sqlplus / as sysdba,它通过操作系统autentication

在11g中添加了JDBC瘦驱动程序中的OS身份验证支持(您可以从OTN上的11.2.0.4下载JDBC瘦驱动程序)。

请注意,您必须允许在服务器上进行远程OS身份验证(通过TCP),否则它只能在本地使用IPC或BEQ与sqlplus一起使用。在init.ora文件中,添加:

REMOTE_OS_AUTHENT = TRUE

然后,如果您的用户是“osuserdemo”,那么在客户端计算机上,创建这样的数据库用户并重新启动DB:

 CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY;
 GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO; 

JDBC瘦驱动程序应该能够在没有任何用户名或密码的情况下进行连接。

值得注意的是,此功能 - 被认为是高度不安全的 - 已在12c中被取消支持。

jdbc:oracle:oci:@ 与ojdbc6.jar和Oracle 11g2一起使用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top