经常使用sqlplus /nolog 方式登录后,使用SQL>conn system/manager as sysdba;可以登录成功,但是在EM上缺总是提示密码错误。
开始还以为真的是密码错误,改了几次,仍然无法奏效。 偶然的机会,使用show user,发现登录到sqlplus的居然是sys!!又尝试了几种情况:SQL>conn */* as sysdba;的斜杠两边随便输入什么都可以通过的,系统根本不做校验。
SQL> show user;
USER 为 "SYSTEM"
SQL> conn system/welcome as sysdba;
已连接。
SQL> show user;
USER 为 "SYS"
SQL> conn ewer/wer as sysdba;
已连接。
SQL> show user;
USER 为 "SYS"
经查,拥有sysdba权限的用户有两种认证方式,一种是操作系统认证方式,一种是密码文件认证方式。操作系统认证方式是:只要当前用户是属于ora_dba组的用户都可以直接登录 ,用户名密码都是不检查的(sqlplus用系统认证,而em用密码文件认证),
而且登录系统后通过 select user from dual可以等到的用户名都是sys用户,linux和Windows下都是一样的了;
SQL> select user from dual;
USER
------------------------------------------------------------
SYS
而密码文件认证方式才需要检验密码。
如果真想让system可以以sysdba身份登录EM,需要在oracle sql*plus里,SQL>grant sysdba to system; 之后,就可以了。