Quando eu inicio uma instância Oracle com sqlplus
os caminhos para os arquivos de dados armazenados nos arquivos de controle, o nome do arquivo de controle é armazenado no control_files
parâmetro de inicialização. Os parâmetros de inicialização são lidos de um arquivo ( init.ora
, spfile.ora
) encontrado em um local padrão ou sua localização pode ser passada para a instância do banco de dados na inicialização ( sqlplus startup pfile=filename
, spfile
parâmetro no script de inicialização). Assim, todos os arquivos necessários ao banco de dados podem ser localizados em posições arbitrárias e essas posições podem ser comunicadas à instância do banco de dados na inicialização. Mas e o arquivo de senha? Pela documentação sabemos que o local padrão para o arquivo de senha no Linux é $ORACLE_HOME/dbs/orapw${ORACLE_SID}
. Se for um cluster, podemos informar ao software do cluster onde armazenamos o arquivo de senha,srvctl modify database -db <db_unique_name> -pwfile <password_file_path>
. Mas o nome do arquivo de senha, neste caso, pode ser arbitrário.
- posso colocar o arquivo de senha em um local arbitrário e comunicar esse local ao banco de dados quando iniciar a instância com
sqlplus
. - Então, como a Oracle sabe onde encontrar o arquivo de senha, especialmente se alguém inicia o banco de dados com
sqlplus
ourman
não pelo software de cluster? - Posso consultar o banco de dados para descobrir a localização do arquivo de senha.
sqlplus
ourman
usa o arquivo de senha definido com srvctl. Eles não são totalmente independentes da infraestrutura de rede, existe alguma integração entre eles. Existem outros exemplos: iniciar ou parar uma instânciasqlplus
ourman
atualizar o destino e o estado do recurso de cluster no GI. Ou criar um spfilesqlplus
atualiza a configuração srvctl do banco de dados com o novo local do spfile. Sem GI, a localização do arquivo de senha é predeterminada pelo nome da instância e pelo valor de$ORACLE_BASE_CONFIG
(no caso de um Oracle Home somente leitura) ou$ORACLE_HOME
.select file_name from x$kzsrpwfile;
Mesmo se isso fosse possível, por que você iria querer fazer isso?
Com o Oracle Database, você terá [mais do que] o suficiente com que se preocupar, sem se preocupar com os padrões do sistema que, provavelmente, é melhor deixar de lado.
Quanto menos "surpresas" você (ou seu sucessor) tiver em uma situação de Recuperação de Desastres às Estúpidas Horas da Manhã, melhor.
Além disso, apenas seus DBAs (e engenheiros de servidor) devem estar próximos ao (s) seu(s) servidor(es) de banco de dados. Então, o que importa onde o SGBD escolhe colocar seus próprios arquivos?
Considere: se você usou Transparent Data Encryption (TDE) e optou por colocar o arquivo da carteira contendo as credenciais em algum lugar fora do padrão e, por algum motivo, não foi feito backup desse arquivo? Se o seu servidor fizesse "Boom!", você perderia tudo .