os认证
oracle安装之后默认情况下是启用了服务器端os认证。
也就是将登录数据库的用户和口令校验放在了操作系统一级,你拥有了安装oracle时的用户操作系统的认证,默认也就拥有了sys用户的认证。
此时你以sysdba角色登陆的话是不用校验用户名和密码。以任何用户名和密码都能登陆成功。
SQL> connect / as sysdba
已连接。
SQL> connect sdfd/sds as sysdba
已连接。
SQL> show user
USER 为 "SYS"
这样虽然方便,但也存在安全隐患,如果不需要这种验证方式,那么可以修改$oracle_home/NETWORK/admin/目录下的sqlnet.ora文件。
SQLNET.AUTHENTICATION_SERVICES= (nts)
修改为
SQLNET.AUTHENTICATION_SERVICES= (none),或者在前面加上#注释这句也行。
此时如果你不输入正确的用户名密码就会报错
SQL> connect /as sysdba
ERROR:
ORA-01031: 权限不足
口令文件
oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,口令文件存放在$oracle_home/dbs目录下(linux,window放在database),默认名称是PWDsid.ora。
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
是否使用口令文件,是通过oracle提供的一个参数remote_login_passwordfile来控制的,remote_login_passwordfile有none,shared,exclusive3个值:
none表示不使用口令文件,
exclusive表示实例独占使用口令文件,也就是各自实例使用单独的口令文件,
shared表示多个实例共享一个口令文件
我们可以从v$pwfile_users视图查看哪些用户使用口令文件
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
上面这个视图的内容是从口令文件读出来的,如果我们将口令文件删除,那么这个视图就为空。
如果口令文件不小心删除了,可以使用orapwd命令来生成口令文件
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>
例如orapwd file='$oracle_home/dbs/PWDsid.ora'即可,当然这个文件名称也可以自定义,但如果自定义的话,linux要在.profile,windows要在注册表加上ora_sid_pwfile环境变量
给它指定新建的口令文件路径。
本文出自 “richard的笔记-积微成著” 博客,请务必保留此出处http://zxf261.blog.51cto.com/701797/853722