Oracle的口令文件

2014-11-24 18:44:03 · 作者: · 浏览: 0

如果数据库的sysdba是通过数据库认证的,那么密码的信息就保存在这个文件中,如果不小心把sys的密码忘记了该怎么办呢?


第一步,将Oracle的sysdba登录修改为os认证:改sqlnet.ora(Windows的在:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下)的SQLNET.AUTHENTICATION_SERVICES= (NTS)


这时候只要是属于ORA_DBA组的用户就可以不用密码而以sysdba登录数据库了,如sqlplus sys as sysdba,甚至是指定了一个错误的密码也可以登录sqlplus sys/aaaaa@orcl as sysdba;,因为这时候不检查密码,其实连是不是sys也不检查,只要指定了as sysdba就会以sys用户登录。


第二步,重新建立口令文件:orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=test entries=5


注意file=后面不能空格。


第三步,将数据库登录改为数据库认证:改sqlnet.ora(Windows的在:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下)的


SQLNET.AUTHENTICATION_SERVICES= (NONE)


这时候再以不正确的密码登录就会得到错误:ORA-01017: invalid username/password; logon denied


以第二步指定的密码则可以正确登录:sqlplus sys/test@orcl as sysdba;


登录后通过select * from v$pwfile_users;可以看到和口令文件相关的用户的信息。


上面第二步指定的文件是Oracle默认路径的默认文件名,如果想以别的文件名,这可以通过在注册表中添加信息来完成,如sid是orcl,可以通过添加一个字符串ora_orcl_pwfile将值设为文件的全路径值。在unix中则通过环境变量来设置。