sexta-feira, 13 de janeiro de 2012

Desbloqueio de usuario Oracle e mudança do tempo de expiração da senha

Estou de volta galera!! Esse ano promete. Estou trabalhando firme com Oracle e outros SGBDs. Não vou deixar de lado o objetivo da principal do blog que é ajudar a galera sobre informática. Porém, a enfase tem sido Banco de Dados...
Aqui vai uma dica simples que aprendi no serviço e acredito que muitas vezes isso pode vir a ocorrer no nosso dia-a-dia.O esquecimento da senha...
Cenário:
O usuário chega para o DBA e fala: 
-Não consigo logar no sistema.Acho que meu usuário está bloqueado...
Oq fazer nessa hora??
Segue abaixo oque fazer, super simples. 
Caso, vc esteja usando a versão 11g (outras também), no final vem uma dica para verificar o tempo de inatividade do uso da senha e como altera-lá.
Quando um usuário tenta logar no Banco de dados Oracle por muitas vezes digitando a senha errada, o este usuário ficará bloqueado. Para fazer o desbloqueio do mesmo, o DBA após logar como system terá duas (02) opções: 
Na primeira ele estará alterando a senha do usuário e desbloqueando a conta.
1) - A pessoa não lembra mais senha, por exemplo use esse comando:

ALTER USER "NOME DO USUARIO" IDENTIFIED BY "NOVA SENHA" ACCOUNT UNLOCK;

Na segunda, a conta será apenas desbloqueada sem alteração da senha.

2) A pessoa lembrou a senha correta por exemplo, use esse comando:
ALTER USER "NOME DO USUARIO" ACCOUNT UNLOCK;


--- Para vc que esta usando o oracle 11g ou até inferior:

Existe na versão 11g uma regra que define que a senha ficará inativa após 180 por padrão (somente no 11g). 
Por este motivo, pode-se trocar este parametro e definir que a senha ficará ativa sem limite de tempo.

Vamos visualizar e trocar esse parametro:
Após connectar como sys:

SQL> selecet username, profile from dba_users where user_name= upper('nome_usuario');
USERNAME                       PROFILE
------------------------------ ------------------------------
USUARIO                        DEFAULT
Após, vamos ver a DBA_PROFILES e ver o limite do profile:
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
SQL> select RESOURCE_NAME, LIMIT from dba_profiles
where RESOURCE_NAME='PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               180

Observe que o valor  LIMIT estará setado como 180 (Caso esteja, como UNLIMITED então não é necessário fazer alterações).
Vamos alterar o limite agora.
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED;
profile alteread...
Pronto! Agora, você pode dar uma outra visualizada para garantir que a alteração está feita.
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               UNLIMITED


Observe que a alteração também poderia ser feita para um outro valor, como por exemplo 90 dias (3 meses). Verifique com atenção como deve ficar esse valor.
O ideal também seria a criação de outros profiles para cada um ter um valor diferente, dependo das regras de segurança da empresa é claro... Mas, isto fica para outro post. :D

Mas, se tiverem pressa , segue aqui um bom link para estudo:
http://www.dartanghan.com.br/oracle-plsql/oracle-date-functions/

Vlw pessoal, estou voltando em 2012 com o mesmo problema de tempo de 2011, mas, assim que possível, estarei postando referente ao nosso objetivo maior que é a certificação ok?

Um comentário:

  1. Dica: Esta e outras soluções você também encontra em:

    http://clientedigital.com.br/senha-expirada-oracle-11g-r2/
    http://clientedigital.com.br/oracle/

    ResponderExcluir

Deixe seu comentário para a "Equipe Designer":