一直对oracle数据库的管理员账户sys,system和连接方式as sysdba, as sysoper很糊涂,偶然看到killkill的日志也没掌握其中的门道,索性做个实验,至于原理呢,慢慢来吧。
[oracle@localhost ~]$ uname -a
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux
[oracle@localhost ~]$ sqlplus system
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Sep 23 23:18:00 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
实验结果
======================================================
| | | 连接工具 |
| | ===================================
| 用户 | 连接方式 | SQL PLUS | EMDC |
| | ===================================
| | | show user | 登录后显示用户 |
=======================================================
| sys | as sysdba | sys | sys |
=======================================================
| sys | as sysoper | public | sys |
=======================================================
| system | as sysdba | sys | 无法登录 |
=======================================================
| system | as sysoper | public | 无法登录 |
=======================================================
| system | 无 | system |system (此时需要指定normal) |
=======================================================
总结:
1)在sql plus下,貌似sys和system在指定连接方式相同的情况下,尽管登录的用户名不同,但在登录后没有区别,即"as sysdba"就是sys,"as sysoper"就是public.
2)在EMDC中查了一下用户system的角色,发现system在EMDC无法登录是因为缺省没有授予CONNECT角色所致。本想加角色再试,可是虚拟机鼠标又开始乱窜了,那就只有先这样了。
______________________________________________
update on 2011-01-14
改正上面的第2点:
system用户无法在EMDC中以管理权限(as sysdba或as sysoper)登录,原因并不是因为没有CONNECT角色所致,而是因为EMDC登录使用的是口令文件认证方式,而缺省的口令文件中除了sys用户外没有其他用户项。
system可以以管理权限登录SQLPLUS是因为实验中的操作系统用户为oracle,oracle隶属于dba和oper组,使用的是操作系统认证。
要让system(或其他用户)可以以管理权限通过EMDC登录,需要把用户添加到口令文件中:
grant sysdba to system;
grant sysoper to system;
另:
system可以登录数据库,说明已经直接或间接获得了create session权限。
本例中system获得create session权限的方式为通过DBA或MGMT_USER间接获得:
14:22:59 SQL> select * from dba_sys_privs where grantee='SYSTEM';
GRANTEE PRIVILEGE ADMIN_
---------- ------------------------------ ------
SYSTEM GLOBAL QUERY REWRITE NO
SYSTEM CREATE MATERIALIZED VIEW NO
SYSTEM CREATE TABLE NO
SYSTEM UNLIMITED TABLESPACE YES
SYSTEM SELECT ANY TABLE NO
14:23:04 SQL> select * from dba_role_privs where grantee='SYSTEM';
GRANTEE GRANTED_ROLE ADMIN_ DEFAUL
---------- ------------------------------ ------ ------
SYSTEM AQ_ADMINISTRATOR_ROLE YES YES
SYSTEM MGMT_USER NO YES
SYSTEM DBA YES YES
14:35:35 SQL> select * from role_sys_privs where privilege like '%CREATE SESSION%';
ROLE PRIVILEGE ADMIN_
------------------------------ ------------------------------ ------
DBA CREATE SESSION YES
MGMT_USER CREATE SESSION NO
OEM_MONITOR CREATE SESSION NO
RECOVERY_CATALOG_OWNER CREATE SESSION NO
CONNECT CREATE SESSION NO
14:35:39 SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24131851/viewspace-674733/,如需转载,请注明出处,否则将追究法律责任。