A conexão com o Oracle sem um nome de usuário ou senha
-
03-07-2019 - |
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?
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:
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 ??p>
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