Pergunta

A Oracle tem esse conceito de permitir que usuários de banco de dados a ser identificado pelo usuário do sistema operacional que está executando o programa que está se conectando a Oracle. Consulte aqui .

Isso permite que você faça, como esse usuário em uma máquina UNIX, por exemplo, um comando como:

sqlplus /

Eu estou tentando escrever um programa Java para Oracle 10.2 que se conecta sem um nome de usuário ou senha. A escolha óbvia de url:

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

não funcionar, dando um erro (Desculpe eu não tenho o erro disponível agora).

Eu tentei muitas outras formas de fazer isso também, mas sem sorte.

Alguém tem alguma sugestão sobre como posso ligar um programa Java para Oracle utilizando o método de identificação OS?

Foi útil?

Solução

O driver JDBC fino é uma implementação Java 100% puro que não pode recolher a informação necessária do sistema operacional.

O driver JDBC OCI pode fazer isso! Use jdbc:oracle:oci8:/@MYDBSID, exigirá que o driver Oracle ser instalado na máquina, não um problema se este for um servidor (e é mais rápido para inicializar e suporta muitos mais recursos do que o driver fina)

Outras dicas

O driver JDBC que os navios Oracle não tem a capacidade de recolher o nome de usuário e senha OS a partir do URL que você fornecê-la. Suponha, existem partido provedores 3º do driver JDBC para Oracle, um deles pode fornecer a funcionalidade que você está pedindo. você deve google ao redor.

Obrigado a todos aqueles que respondeu. Nós fomos com o driver OCI.

Eu fiz encontrar documentação para sugerir que o Oracle 11g não Suporte OS autenticação do usuário através do driver fina embora:

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

Eu não tenho uma configuração de 11g de testar isso, então eu não posso ter certeza isso funciona.

Se você estiver acessando a Oracle a partir de um appserver J2EE, você poderia conseguir um final semelhante usando JNDI para adquirir uma fonte de dados.

O motorista fina 11g pode se conectar usando a autenticação Kerberos.

Consulte Conectar a um banco de dados Oracle usando Kerberos

seguinte try jdbc: oracle: thin: nome de usuário / senha @ localhost: 1521: MYDBSID

você precisa especificar as informações da conta

sqlplus / as sysdba em uma máquina unix que passar pelo sistema de operação Autentication

suporte de autenticação OS no driver thin JDBC foi adicionado em 11g (você pode baixar o driver thin JDBC de 11.2.0.4 na OTN).

Note que você tem que permitir a autenticação OS remoto no servidor (sobre TCP), caso contrário ele só irá trabalhar com sqlplus utilizando IPC ou BEQ localmente. Em seu arquivo init.ora, acrescentar o seguinte:

REMOTE_OS_AUTHENT = TRUE

Então, se você é usuário "osuserdemo" na máquina do cliente, criar um usuário de banco de dados como este e reiniciar o DB:

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

E o driver thin JDBC deve ser capaz de se conectar sem qualquer nome de usuário ou senha.

É importante notar que esta característica - considerado como altamente inseguro -. Tem sido de-suportado em 12c

jdbc:oracle:oci:@ trabalha com ojdbc6.jar e Oracle 11g2

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top