Erro ao criar database link utilizando senha iniciada por caractere numérico.

Share

Boa noite a todos (ou será bom dia? Afinal, é madrugada! :)).

Essa é a nossa vida de DBA. Implementando novas funcionalidades ao banco de dados em ambiente de produção sempre nas madrugadas. :)

E como não poderia ser diferente, algumas surpresas também acontecem no meio da implementação.

Problema encontrado, problema resolvido e agora, solução compartilhada. :D

O banco de dados Oracle permite que um usuário seja criado e que sua senha seja iniciada por um número, como segue:

02:55:30 SYSTEM@ORCL2> CREATE USER TESTE 02:55:33   2  IDENTIFIED BY 123456; User created. Elapsed: 00:00:00.03

Mas perceba que, ao utilizar uma mistura de caracteres numéricos e alfa numéricos, um erro será disparado:

02:57:23 SYSTEM@ORCL2> CREATE USER TESTE2 02:57:26   2  IDENTIFIED BY 123dasilva5; CREATE USER TESTE2 IDENTIFIED BY 123dasilva5 * ERROR at line 1: ORA-00922: missing or invalid option Elapsed: 00:00:00.00

A solução para a criação do usuário é definir a senha (mista com numérico e alfa numérico) entre aspas (" "), como segue:

02:59:52 SYSTEM@ORCL2> CREATE USER TESTE2 02:59:55   2  IDENTIFIED BY "123dasilva5"; User created. Elapsed: 00:00:00.05

OK. Agora temos 2 usuários (TESTE e TESTE2) criados no BD ORCL2 onde o primeiro possui uma senha composta apenas por caracteres numéricos e o segundo com uma senha mista.

Vejamos agora como o database link irá se comportar:

03:02:21 SYSTEM@ORCL> CREATE DATABASE LINK DBLINK_TESTE 03:02:24   2  CONNECT TO TESTE IDENTIFIED BY 123456 03:02:27   3  USING 'ORCL2'; CONNECT TO TESTE IDENTIFIED BY 123456 * ERROR at line 1: ORA-00933: SQL command not properly ended Elapsed: 00:00:00.01 03:03:45 SYSTEM@ORCL> CREATE DATABASE LINK DBLINK_TESTE2 03:03:50   2  CONNECT TO TESTE2 IDENTIFIED BY 123dasilva5 03:03:53   3  USING 'ORCL2'; CONNECT TO TESTE2 IDENTIFIED BY 123dasilva5 * ERROR at line 1: ORA-00933: SQL command not properly ended Elapsed: 00:00:00.01

Perceba que, em ambos os casos, o database link não foi criado. O pior é que o erro não é muito claro. A única pista que temos é o asterisco (*) logo abaixo da senha, na mensagem de erro.

A solução é bem simples. Independentemente de como tenha sico criado o usuário (com a senha entre aspas ou não), ao criar o database link onde a senha do usuário seja iniciada por caractere numérico, sempre haverá a necessidade de colocar a senha entre aspas, como segue:

03:07:12 SYSTEM@ORCL> CREATE DATABASE LINK DBLINK_TESTE 03:07:15   2  CONNECT TO TESTE IDENTIFIED BY "123456" 03:07:18   3  USING 'ORCL2'; Database link created. Elapsed: 00:00:00.01 03:09:33 SYSTEM@ORCL> CREATE DATABASE LINK DBLINK_TESTE2 03:09:38   2  CONNECT TO TESTE2 IDENTIFIED BY "123dasilva5" 03:09:41   3  USING 'ORCL2'; Database link created. Elapsed: 00:00:00.01 É isso aí! :)