欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle的口令文件

程序员文章站 2022-04-29 20:53:00
...

Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用

Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件,否则不能连上,由于sys用户在连接数据库时必须以sysdba or sysoper方式,也就是说sys用户要想连接数据库必须使用口令文件,因此我认为在数据库中存放sys用户的口令其实没有任何意义!使用口令文件的好处是即使数据库不处于open状态,依然可以通过口令文件验证来连接数据库。开始安装完oracle,没有给普通用户授予sysdba权限,口令文件中只存放了sys的口令,,如果之后把sysdba权限授予了普通用户,那么此时会把普通用户的口令从数据库中读到口令文件中保存下来,当然这时必须要求数据库处于open状态。

如果数据库的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中则通过环境变量来设置。

Oracle的口令文件