-普通用户登录,是
数据库认证,SYS用户使用口令文件存储密码。所以SYS可以在非OPEN状态下登录,可以在NOMONUNT状态下,登录进行管理--恢复。
sqlplus / as sysdba
SQL>show user
SYS
,仅限于数据库 服务器上,/ 表示操作系统认证,把用户认证交给操作系统
只要以 as sysdba登录,即使用户名密码错误,也能登录成功,或者以普通用户登录,但只要加上 as sysdba。登录成功的用户都会是
sys用户。
屏蔽这种登录的方法,在WIN下,修改用户的ORAL_DBA用户组,将其administrator的权限去掉,即可以屏蔽。或者修改
D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora文件.
将SQLNET.AUTHENTICATION_SERVICES= (NTS)修改为SQLNET.AUTHENTICATION_SERVICES= (NONE)也可以屏蔽这种默认系统 管理员的方式登录。
--win下,口令文件位于D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora,
--查看有口令文件的用户。
SQL>select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
TEST TRUE FALSE
如果以tset用户登录,可以看到,登录用户其实还是sys...
C:\Documents and Settings\Administrator>sqlplus test/test@orcl as sysdba
SQL> Show user;
USER 为 "SYS"
SQL>
--口令文件,如果忘记了SYS的用户名密码,文件名规则为PWD+sid名+.ora文件.如果该文件不存在,操作系统认证又被屏蔽了,,则无法使用SYS登录.
--忘记密码什么的,可以删除口令文件,再创建一个。
--使用orapwd命令
C:\>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt), force - whether to overwrite existing file (opt),
There are no spaces around the equal-to (=) character.
C:\ORAPWD FILE=D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=system entries=5
重置后,如果原来有其他用户(例如之前的TEST)用户,则创建的新口令文件中,不再包含test;SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE