被授予SYSDBA/SYSOPER权即添加入口令文件。
Oracle口令文件是为了使特权用户能登录到数据库而存在的,这里的特权用户是INTERNAL/SYSDBA/SYSOPER
l Internal的意思为本地管理员,可以完成数据库的启动、关闭、修改以及其他DBA事务。 在Oracle 7及其前版本中,Internal只能在本地登录(这也是叫作本地管理员的起源),也无须口令;到Oracle 8时,Internal用户允许远程登录,并开始淘汰Internal概念,伴随Internal用户的另一个概念Svrmgrl(之前版本具有最高管理权限的工具)也开始淡化,取而代之的是sys用户,其系统角色包括Normal、Sysdba、Sysoper(只能启动、关闭数据库,不能修改数据库),此时Internal用户相当于sys as sysdba。 到Oracle 9i时,正式淘汰Internal和Svrmgrl,取而代之的是sys和sqlplus,DBA可以在sqlplus中完成所有事务,至此sys加sqlplus经历一番过渡正式一统天下。
l Sysdba具有控制Oracle一切行为的特权
1. 口令文件创建:
Orapwd file= PASSWORD= ENTRIES=
ENTRIES是可以被超越的,具体是几取决于OS的block,网络上曾有人做过这方面的测试。将entries 设置为5,而向授权一百个用户,结果是v$pwfile_users中显示了9个用户。
要允许远程管理员sys登录数据库,则要求设置
remote_login_passwordfile = exclusive
然后创建passowrd file:
orapwd file=orapw$ORACLE_SID passwd=passwd entries=10 force=y
需要注意的是这里的password file文件命名需要符合特定的这个格式,如果命名不对(不同的OS系统,对于命名是不一样的),系统将会找不到这个密码文件,而产生:
SQL> grant sysdba to sys;
grant sysdba to sys
*
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled
上面这个错误。也就导致了sysdba或者管理员用户不能远程登录数据库。
要检查是否已经将sys用户放入密码文件,可以查询:
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
--------------- --------------- -------------------
SYS TRUE TRUE
总结:
sqlnet.ora里面的SQLNET.AUTHENTICATION_SERVICES参数是用于本机sysdba或者
其他管理员用户登录的。
而remote_login_passwordfile及对应的passwordfile是用于远程sysdba或者其他管理员登录的,两者是独立的。
2. 口令文件的作用
在10g之前,启动到MOUNT状态,数据库需要具备另一个重要文件是口令文件,位于$ORACLE_HOME/database&/dbs目录下。里面存放着SYSDBA/SYSOPER用户名及口令。远程用户使用口令文件才能以SYSDBA/SYSOPER身份登录。
在9I中,口令文件在mount阶段被检测。如果丢失了,会报错,本机的OS登录可以继续打开数据库,但远程的SYSDBA登录,或是SYSDBA授权都将无法进行。可以用orapwd重建一个。
10g以后不会报错了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24355950/viewspace-670109/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24355950/viewspace-670109/