Muitas vezes precisamos conectar na base de dados com usuários específicos para serem realizadas atividades de manutenção, por exemplo. Ai vem o problema, “Qual a senha mesmo?”.
A primeira coisa que precisamos saber é que não iremos descobrir a senha mas sim identificar a string criptografada para posteriormente voltar a senha como estava antes de ser alterada para nossa conexão.
Vejamos o exemplo, Iremos criar o usuário anderson com a senha anderson1234
[oracle@orcl ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.5.0 - Production on Thu Sep 8 16:15:23 2011 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create user anderson identified by anderson1234; User created.
Vamos conceder ao usuário o privilégio para iniciar um sessão com o banco de dados:
SQL> grant create session to anderson; Grant succeeded.
Maravilha, agora partimos da ideia proposta de que precisamos conectar com o usuário anderson e não sabemos a senha. Vamos identificar a senha criptografada do usuário:
SQL> select NAME, PASSWORD from sys.user$ where NAME = 'ANDERSON'; NAME PASSWORD ------------------------------ ------------------------------ ANDERSON F41842A6C0E16CE7
Na versão 10g podemos identificar o password (senha criptografada) também na visão dinâmica DBA_USERS porem na versão 11g** o password estará sendo apresentado em branco sendo necessário então utilizar a SYS.USER$ proposta acima.
(**) A partir da versão 11g em função da possibilidade de ter senhas com case-sensitive habilitado (sec_case_sensitive_logon) a senha criptografava da coluna password deve ser concatenada junto a coluna spare4!
SQL> select name, password, SPARE4 from sys.user$ where name='ANDERSON'; NAME PASSWORD SPARE4 ------------------------------ ------------------------------ ---------------------------------------------------------------------- ANDERSON F41842A6C0E16CE7 S:4AEF88CE0FE3B927DD6A4BJJ8E42008D9103DC193A9327AFC84889A275BE
Agora que já sabemos a senha criptografa deste usuário, vamos alterar a senha para podermos conectar:
SQL> alter user anderson identified by teste123; User altered.
Conectando com o usuário anderson atraves da nova senha definida:
SQL> conn anderson/teste123 Connected. SQL> show user USER is "ANDERSON"
Agora que nossa conexão com o usuário foi estabelecida podemos voltar a senha antiga utilizando o IDENTIFIED BY VALUES:
10g:
SQL> alter user anderson identified by values 'F41842A6C0E16CE7'; User altered.
11g:
SQL> alter user anderson identified by values 'S:4AEF88CE0FE3B927DD6A4BJJ8E42008D9103DC193A9327AFC84889A275BE;F41842A6C0E16CE7'; User altered.
*NOTA: entre a senha criptografada do SPARE4 e a senha criptografada da coluna PASSWORD é necessário adicionar ponto e virgula ";"
Vamos testar se a senha anterior está OK:
SQL> conn anderson/anderson1234 Connected. SQL> show user USER is "ANDERSON"
ATENÇÃO: Antes de sair alterando as senhas dos usuários visando voltá-las depois tome cuida pois você pode afetar o funcionamento de varias rotinas do seu sistema.
0 comentários:
Postar um comentário