如果忘记sys密码,可以用操作系统权限登录:dos下输入sqlplus / as sysdba;
授予普通用户(比如scott或者创建新用户) alter user权限或者dba角色,当授予dba角色时:可通过select * from v$pwfile_users查看用户有哪些角色
创建新用户test:
SQL> create user test identified by test ;
授予其连接及修改用户权限:
SQL> grant create session,alter user to test;
在只有sys账户拥有sysdba与sysoper的权限。
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
以用户test连接数据库:
SQL> conn test/test;
修改数据库超级用户sys的密码:
SQL> alter user sys identified by sys;
sys账户以修改后的密码连接数据库,说明修改成功。
SQL> conn sys/sys as sysdba
总结如下:
1、默认情况下,只要用户具有alter user的权限,那么可以修改
oracle中任意用户,包括alter user中的所有optional。
接上例:
SQL> conn test/test
2、默认情况下,system账户之所以能修改sys的密码,是因为它属于dba角色, 而dba角色当然具有alter user权限。
3、所谓最高权限,在默认情况下,sys账户具有sysdba权限,是oracle中的超级用户, 所以以sys as sysdba登录后,几乎可以在数据库中作任何操作。且sysdba权限不要 轻易授权其它用户,否则会给数据库安全带来问题。
4、system账户默认情况下属于dba角色,它的权限仅次于sys账户。
再次修改sys密码,都可以登录,说明sys以前的密码并没有失效。