Oracle有一个概念,即允许运行连接到Oracle的程序的操作系统用户识别数据库用户。请参阅here。
这允许您在unix机器上执行命令,例如:
sqlplus /
我正在尝试为Oracle 10.2编写一个Java程序,它在没有用户名或密码的情况下连接。网址的明显选择:
jdbc:oracle:thin:/@localhost:1521:MYDBSID
不起作用,发出错误(抱歉我现在没有错误)。
我也曾尝试过许多其他形式的做法,但没有运气。
有没有人对如何使用操作系统识别方法将Java程序连接到Oracle有任何建议?
答案 0 :(得分:5)
JDBC Thin驱动程序是100%纯Java实现,无法从操作系统收集所需信息。
JDBC OCI驱动程序可以做到这一点!使用jdbc:oracle:oci8:/@MYDBSID
,它将要求在该计算机上安装Oracle驱动程序,如果这是一台服务器则不是问题(并且启动速度更快,并且支持比瘦驱动程序更多的功能)
答案 1 :(得分:1)
oracle发布的jdbc驱动程序无法从您提供的URL收集操作系统用户名和密码。假设有ORACLE的第三方JDBC驱动程序提供程序,其中一个可能提供您要求的功能。你应该谷歌。
答案 2 :(得分:1)
感谢那些回答的人。我们已经使用了OCI驱动程序。
我确实找到了文档,建议Oracle 11g 通过瘦驱动程序支持OS用户身份验证:
我没有11g设置来测试它,所以我无法确定这是否有效。
答案 3 :(得分:0)
如果您从J2EE应用程序服务器访问Oracle,则可以通过使用JNDI获取数据源来实现类似的目的。
答案 4 :(得分:0)
11g瘦驱动程序可以使用Kerberos身份验证进行连接。
答案 5 :(得分:0)
尝试以下 JDBC:预言:瘦:用户名/密码@本地:1521:MYDBSID
您需要指定帐户信息
在unix机器上的sqlplus / as sysdba,它通过操作系统autentication
答案 6 :(得分:0)
在11g中添加了JDBC瘦驱动程序中的OS身份验证支持(您可以从OTN上的11.2.0.4下载JDBC瘦驱动程序)。
请注意,您必须允许在服务器上进行远程OS身份验证(通过TCP),否则它只能在本地使用IPC或BEQ与sqlplus一起使用。在init.ora文件中,添加:
REMOTE_OS_AUTHENT = TRUE
然后,如果您的用户是客户端计算机上的“osuserdemo”,请创建这样的数据库用户并重新启动数据库:
CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY;
GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO;
JDBC瘦驱动程序应该能够在没有任何用户名或密码的情况下进行连接。
值得注意的是,此功能 - 被认为是高度不安全的 - 已在12c中被取消支持。
答案 7 :(得分:-1)
jdbc:oracle:oci:@
适用于ojdbc6.jar和Oracle 11g2