A:
查看哪些用户拥有SYSDBA、SYSOPER权限
conn sys/change_on_install
SQL>select * from V_$PWFILE_USERS;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
INTERNAL TRUE TRUE
SYS TRUE TRUE
解决问题后的补充:
问题的出现是因为,我早上的时候在清理自己系统用户的时候
将ADMINISTRATOR用户里的ORA_DBA组不小心给误删除了,
然后,我就不能以CONN SAMENZHOU/PASS AS SYSDBA的形式进入
但是我仍然能够以CONN SAMENZHOU/PASS 的形式进入
同样,因为我是把SYSTEM的全部权限都给了SAMENZHOU
所以 CONN SYSTEM/PASS AS SYSDBA 也不能成功
以下是我的实验过程
此时在用户管理的组里,我删除了ORA_DBA组
SQL> conn system/PSWD as sysdba
ERROR:
ORA-01031: insufficient privileges
----此时表明我不能以AS SYSDBA进入----
警告: 您不再连接到 ORACLE。
SQL> conn system/PSWD
已连接。
---不用AS SYSDBA就能进入---
SQL> select * from V_$PWFILE_USERS;
select * from V_$PWFILE_USERS
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
----表明我没有这个权限
SQL> conn sys/PSWD
ERROR:
ORA-28009: connection to sys should be as sysdba or sysoper
警告: 您不再连接到 ORACLE。
----注意SYS进入必须用AS SYSDBA,即使我OS里面没有ORA_DBA这个组
SQL> conn sys/PSWD as sysdba
已连接。
SQL> select * from V_$PWFILE_USERS;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SAM TRUE FALSE
SAMENZHOU1 TRUE FALSE
然后,我把ORA_DBA的组加入到用户组中
重新以SYSDBA进入
SQL> conn system/PASWDas sysdba
已连接。
——加入ORA_DBA组以后,就可以用AS SYSDBA正常进入
SQL> select * from V_$PWFILE_USERS;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SAM TRUE FALSE
SAMENZHOU1 TRUE FALSE
我两次都是以SYSTEM的身份进去的,不同的是每次因为
ORA_DBA组的有无,后缀的AS SYSDBA而能否进入
而不以SYSDBA进入,我的某些权限受到制约
而这些权限好象原本是SYS的,因为两次用SYS AS SYSDBA
的形式进入都能查看这个_$PWFILE_USERS试图。
最后总结
1:首先,就是要在操作系统里添加ORA_DBA的组
2:SYSTEM,或者其他有着DBA权限的用户以SYSDBA,和不以SYSDBA
权限进入后,其权限是不同的,不同点可能不不能查看SYS的一些试图。
3:就是,偶还要再看看AS SYSDBA的有关文档资料,搞清楚EXTERNAL USER 的问题。
另外,也希望有心的朋友和我做同样的实验,看看
AS SYSDBA 的作用,用法局限和注意事项。
其他补充:as sysdba登录之后就是进入sys schema了,登入后,用show user验证,可以看到是SYS,否则,show user是自己的用户名。这就是区别。