Cuando trabajamos remotamente contra una instancia que se encuentra en un host en algún sitio, Oracle de alguna manera debe validar el usuario DBA.

Podemos observar que la base no podria almacenar nunca la validación , ya que al momento de bajar una instancia , no podríamos levantarla más, por que no podríamos accesar a la base de ninguna manera. Es por ello que la validación se produce desde el exterior de la instancia y lo hace por medio de un archivo que es conocido como password file.

Es asi que el DBA o la aplicación que tuviere la facultad de poder levantar la instancia , debe ser validado por el archivo que se encuentra en el OS.

En el parametro remote_login_passwordfile nos especifica si un password file esta encargado o no de validar al usuario.

Cuando generamos el archivo, este sera almacenado por default en los siguientes paths según el tipo de OS tengamos :

En los tipos Unix:

$ORACLE_HOME/dbs/orapw$ORACLE_SID

En los ambientes Windows:

%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora

Si pwfile esta en modo SHARED o EXCLUSIVE MODE también se almacena en el archivo de contraseñas.

Después de su creación, el estado es SHARED.

El estado puede ser cambiado mediante modificación del remote_login_passwordfile de la base de datos. Es decir, la base de datos sobrescribe el estado en el archivo de contraseña cuando se inicia.

Recordemos que el pwfile cuyo estado es SHARED solo puede contener SYS.

Como creamos un pwfile

El pwfile se crea con el comando orapwd y según el OS que usemos sera:

Oracle RDBMS 10gR2 para ambientes UNIX OS

orapwd file=orapwsid password=password entries=max_users force=y/n

Si el parametro FILE no esta seteado con el path , este sera creado en el directorio donde estemos parados.
Es importante trabajar ordenados y que el pwfile se encuentre el $ORACLE_HOME/dbs

Oracle RDBMS 10gR2 para ambientes Microsoft Windows

orapwd FILE=PWDsid.ora PASSWORD=password ENTRIES=max_users FORCE=y/n

Si el parametro FILE no esta seteado con el path , este sera creado en el directorio donde estemos parados.
La base busca en el registro para conocer el valor del ORA_SID_PWFILE.

Si el valor no fue declarados entonce el registro lee el valor de la variable ORA_PWFILE, los valores de usernames, passwords y privilegios.

Si no fue seteado , entoces usa los valores por defecto.

Es importante que sepan que en las versiones de windows 10.2 se crea en mayúscula, el ejemplo seria PW<SID>.ORA

O sea NOMBRE y EXTENSION con mayuscula.

La nomenclatura del comando es la siguiente:

orapwd FILE=PWDsid.ora PASSWORD=password ENTRIES=max_users FORCE=y/n

*Nota para usuarios windows:
Podes ver la extension del archivo con:

 TOOLS –>
    FOLDER OPTIONS –>
        VIEW –> y destildas HIDE FILE EXTENTIONS

Con eso podrán ver que la extensión del archivo sea la correcta, por ahí encuenntrán que el init sea : initPRO.ora y elpwfile debería ser PWPRO.ORA.

El orden de lectura entonces para un OS windows es:

ORA_SID_PWFILE
ORA_PWFILE
ORACLE_BASE\ORACLE_HOME\DATABASE\PWDsid.ORA

Oracle RDBMS 11gR1 para ambos ambientes

orapwd FILE=filename [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}] [NOSYSDBA={Y|N}]

pwfile Unix : orapwsid
pwfile Windows : PWDsid.ora

Como borrar un pwfile

Si no precisamos de una autenticacion remota, entonces no precisamos pwfile, por ello hay que setear el parametro remote_login_passwordfile en NONE.

Adición de usuarios al pwfile

Los usuarios se agregan al pwfile cuando se otorgan los privilegios SYSDBA o SYSOPER.
En el caso de crear usuarios o ya tenerlos implementados, cuando le otorgamos el perfil de DBA o cambiamos su pass por policys, debemos recrear el pwfile.