password expired Oracle

25/08/2004

4

Tenho uma aplicação que utiliza os próprios usuários do SGDB Oracle.

O Problema é o seguinte: quando a senha de um usuário expira, no próximo login do usuário o Oracle solicita que o mesmo informe uma nova senha para continuar.

No SQL Plus (ferramenta da própria Oracle) quando isso acontece, automaticamente é exibido um prompt para o usuário digitar a nova senha, após feito isso, o Oracle conecta o usuário ao banco.

Como é que posso fazer o mesmo em Delphi ????

Eu já consigo saber se o erro retornado pelo exception do TDataBase é: ´password expired´, no entanto não sei como passar ao Oracle a nova senha que deve ser informada pelo Usuário:

try
        dm.dbModulos.Connected := True;
    except
        on E: EDBEngineError do
        begin
            result := false;

            if erro_oracle(e.Message) = ´ORA-01017´ then
                showmessage(´Usuário/Senha Inválidos !´)
            else if erro_oracle(e.Message) = ´ORA-28001´ then
             begin
                showmessage(´Senha Expirada´);
                //Aqui devo criar um mecanismo para passar uma nova senha ao Oracle.
             end
            else
                showmessage(´Não foi possível conectar ao Banco !´);


        end;
    end;


Alguém pode me ajudar ????


Responder

Posts

26/08/2004

Rodrigo Costa

sobe


Responder

26/08/2004

Motta

a sintaxe para mudar senha é

ALTER USER <NOME> IDENTIFIED BY <SENHA>

VC PODE FAZER ISTO VIA tQuery.ExecSql ...


Responder

26/08/2004

Rodrigo Costa

Obrigado Motta, mas isto não funciona para meu problema uma vez que só posso executar comandos após concluir a conexão.

Eu resolvi (paletivamente) assim: caso ocorra o erro de senha expirada eu conecto com outro usuário e faço o alter user e em seguida desconecto e faço o logon do usuário com a nova senha.

Eu gostaria de saber como passar os parâmetros OLD PASSWORD E NEW PASWORD que o Oracle solicita quando o erro ocorre. Já tentei de tudo.... mas nada funcionou.

De qualquer forma, obrigado.


Responder

26/08/2004

Motta

desc dba_users
Column Name Null? Type
------------------------------ -------- ----
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2(30)
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME

com base em EXPIRY_DATE vc pode dizer para o usuario ....
faltam x dias para sua senha ir pro saco ...

se ele não alterar só o administrador poderia faze-lo , procedimento de segurança, senão pq trabalhar com EXPIRY_DATE ??


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira