The Geek Diary
este pos cobre os cenários abaixo:
- recuperando-se da senha perdida do sistema usando a autenticação do sistema operacional no Unix.
- recuperando a senha perdida do sys usando autenticação passwordfile no Unix.
- recuperação de senha perdida do sistema usando autenticação NTS no Windows.
- recuperando a senha perdida do sistema usando a autenticação passwordfile no Windows.
os métodos a serem usados dependem de:
1. Autenticação do sistema operacional
2. autenticação passwordfile.
recuperação da senha perdida do sistema usando a autenticação do sistema operacional no Unix
1. Certifique-se de que o usuário do sistema operacional conectado seja membro do grupo dba. Se o grupo dba não for conhecido, verifique o arquivo:
$ ORACLE_HOME/rdbms/lib/config.c (or config.s)
2. Certifique-se de que o sqlnet.o arquivo ora não contém:
sqlnet.authentication_services
parâmetro. Se esse parâmetro existir, ele deve ser comentado.
3. verifique os parâmetros ORACLE_HOME, ORACLE_SID e PATH. Eles devem corresponder aos parâmetros da instância Oracle em que a senha do sistema foi perdida.
4. conecte-se à instância usando:
$ sqlplus /nologsql> connect / as sysdba
5. Alterar a senha do sistema usando:
sql> alter user sys identified by ;
se um passwordfile estiver em uso, o comando atualizará o arquivo de senha também, portanto, não há necessidade de recriar esse arquivo.
recuperando a senha perdida do sys usando autenticação passwordfile no Unix
se a senha do SYS não for conhecida e a autenticação do SO não for uma opção, esse método pode ser usado. Este método assume que a conta SYS não está acessível, portanto, um desligamento abrupto para o banco de dados pode ser necessário.
1. Certifique-se de que o parâmetro de inicialização REMOTE_LOGIN_PASSWORDFILE esteja definido como compartilhado ou exclusivo. Alterar esse valor de parâmetro requer uma reinicialização da instância.
2. Desative a autenticação do sistema operacional, se estiver ativada por algum motivo, definindo:
sqlnet.authentication_services=(none)
no sqlnet.arquivo ora (faça backup do sqlnet existente.arquivo ora antes de fazer quaisquer alterações).
3. vá para o destino do sistema operacional para o passwordfile:
$ cd $ORACLE_HOME/dbs
4. Faça um backup do arquivo de senha anterior:
$ cp orapw$ORACLE_SID orapw$ORACLE_SID.bak
5. Recrie o arquivo de senha usando o comando orapwd:
$ orapwd file=orapw$ORACLE_SID password=
6. Tente se conectar usando a nova senha.
$ sqlplus /nologconnect sys as sysdba
7. Como uma verificação adicional, se o acima for bem-sucedido, consulte:
sql> select * from v$pwfile_users;
se retornar pelo menos uma linha, então tudo está ok e o novo passwordfile está em uso.
8. Alterar a senha do sys no dicionário de dados usando:
sql> alter user sys identified by ;
claro, a nova senha deve corresponder à senha nova do passwordfile, se a senha deve ser mantida, ou ele pode ser configurado para outra coisa, se a senha inicial é para ser alterado. Este comando atualizaria o passwordfile também.
9. Se o teste na etapa não for bem-sucedido, a instância deve ser reiniciada. Pode ser que, se nenhum acesso sysdba ou sysoper for possível, que a instância deve ser derrubada abruptamente, faça isso por:
– matando um processo em segundo plano (de preferência matar SMON, então PMON ainda pode fazer alguma limpeza).
– removendo os recursos de memória compartilhada usando ipcrm se eles não forem removidos pelo meu PMON.
10. Depois de reiniciar a instância, verifique se a senha do sistema está operacional e se há pelo menos uma entrada em v$pwfile_users. Se outros usuários já tiveram entradas no passwordfile, conceda-lhes SYSDBA ou SYSOPER novamente.
11. Restaurar o sqlnet.ora arquivo do backup executado na Etapa #2, se necessário.
recuperação de senha perdida do sistema usando autenticação NTS no Windows
1. Certifique-se de que o usuário do sistema operacional conectado seja membro do Grupo ORA_DBA do Windows.
2. Certifique – se também de que o sqlnet.o arquivo ora tem a seguinte linha:
sqlnet.authentication_services = (nts)
3. Conecte-se à instância usando:
$ sqlplus /nologconnect / as sysdba
4. Alterar a senha do sistema usando:
sql> alter user sys identified by ;
se um passwordfile estiver em uso, o comando atualizará o arquivo de senha também, portanto, não há necessidade de recriar esse arquivo.
recuperando a senha perdida do sys usando autenticação passwordfile no Windows
se a senha do SYS não for conhecida e a autenticação do SO não for uma opção, esse método pode ser usado. Este método assume que a conta SYS não está acessível, portanto, um desligamento para o banco de dados pode ser necessário, isso pode ser feito parando o OracleServiceSID em seu sistema.
1. Certifique-se de que o parâmetro de inicialização REMOTE_LOGIN_PASSWORDFILE esteja definido como compartilhado ou exclusivo.
2. desative a autenticação do sistema operacional, se estiver ativada por algum motivo, definindo:
sqlnet.authentication_services=(none)
no sqlnet.arquivo ora
3. vá para o destino do sistema operacional para o passwordfile:
cd %ORACLE_HOME%\database
4. Faça um backup do arquivo de senha anterior:
cp pwd.ora pwd.ora.bak
5. Recrie o arquivo de senha usando o comando orapwd:
orapwd file=pwd.ora password=
6. Tente se conectar usando a nova senha.
sqlplus /nologconnect sys as sysdba
7. Como uma verificação adicional, se o acima for bem-sucedido, consulte:
sql> select * from v$pwfile_users;
se retornar pelo menos uma linha, então tudo está ok e o novo passwordfile está em uso.
8. alterar a senha do sys no dicionário de dados usando:
sql> alter user sys identified by ;
claro, a nova senha deve corresponder à senha nova do passwordfile, se a senha deve ser mantida, ou ele pode ser configurado para outra coisa, se a senha inicial é para ser alterado. Este comando atualizaria o passwordfile também.
9. Se o teste na etapa não for bem-sucedido, a instância deve ser reiniciada. Isso pode ser feito reiniciando o serviço.
10. Depois de reiniciar a instância, verifique se a senha do sistema está operacional e se há pelo menos uma entrada em v$pwfile_users. Se outros usuários já tiveram entradas no passwordfile, conceda-lhes SYSDBA ou SYSOPER novamente.
11. reativar a autenticação NTS definindo:
sqlnet.authentication_services=(nts)
se necessário.