normal、sysdba、sysoper登陆oracle的区别理解

sys和system用户的区别
【system】用户只能用normal身份登陆em。
【sys】用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。
“SYSOPER”权限,即数据库操作员权限,权限包括:
打开数据库服务器   关闭数据库服务器
备份数据库       恢复数据库
日志归档         会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括:
打开数据库服务器   关闭数据库服务器
备份数据库       恢复数据库
日志归档       会话限制
管理功能       创建数据库


normal 、sysdba、 sysoper有什么区别
normal 是普通用户
另外两个,你考察他们所具有的权限就知道了
sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
sysdba登陆后是 sys

SQL> conn / as sysdba
已连接。
SQL> grant sysoper to test;

授权成功。

SQL> conn test/test as sysoper;
已连接。
SQL> show user
USER 为"PUBLIC"
SQL> conn test/test as sysdba
已连接。
SQL> show user
USER 为"SYS"
SQL>

dba和sysdba的区别
dba、sysdba这两个系统角色有什么区别呢
在说明这一点之前我需要说一下oracle服务的创建过程
·创建实例
·启动实例
·创建数据库(system表空间是必须的)
启动过程
·实例启动
·装载数据库
·打开数据库

sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,
只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库
只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/VBEND/archive/2009/02/18/3904086.aspx





///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////

看见Csdn的Oracle技术版块有人提出关于dba和sysdba的一些困惑,这里详细的介绍一下两者的区别。

dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。

所以说这两个概念是完全不同的。dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。

下面我们通过详细的实例来看看他们的区别

1.
物理上的role dba 是可以在数据字典里查到的
SQL> select * from dba_roles where upper(role) = ‘DBA’;

ROLE                          PASSWORD
—————————— ——–
DBA                            NO

而sysdba是概念上的role在数据字典里是查不到的

SQL> select * from dba_roles where upper(role) = ‘SYSDBA’;
no rows selected

2.
grant dba 和grant sysdba的差别
dba是正真的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了

SQL>  grant dba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE                        GRANTED_ROLE                  ADM DEF
—————————— —————————— — —
TESTUSER                      RESOURCE                      NO  YES
TESTUSER                      CONNECT                        NO  YES
TESTUSER                      DBA                            NO  YES
SQL>  revoke dba from testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE                        GRANTED_ROLE                  ADM DEF
—————————— —————————— — —
TESTUSER                      RESOURCE                      NO  YES
TESTUSER                      CONNECT                        NO  YES

对于sysdba是不会出现这个情况的,因为他不是正真的role
SQL> grant sysdba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE                        GRANTED_ROLE                  ADM DEF
—————————— —————————— — —
TESTUSER                      RESOURCE                      NO  YES
TESTUSER                      CONNECT                        NO  YES

那么这个是sysdba是这么记录的叻,
我在一个文章和帖子里对对sysdba的登录有过详细的叙述
对了,sysdba是登录时候需要的他是和remote_login_passwordfile关联的
我们可以查询v$pwfile_users;
如下:
SQL> select * from v$pwfile_users;
USERNAME                      SYSDB SYSOP
—————————— —– —–
SYS                            TRUE  TRUE
SYSTEM                        TRUE  FALSE
TESTUSER                      TRUE  FALSE
当你grant sysdba后,在这里就多了一条
下面我们revoke一下,再来看
SQL> revoke sysdba from testuser;
SQL> select * from v$pwfile_users;
USERNAME                      SYSDB SYSOP
—————————— —– —–
SYS                            TRUE  TRUE
SYSTEM                        TRUE  FALSE

没有叻。

所以在这里dba和sysdba是根本不同概念了


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/inthirties/archive/2009/05/09/4159489.aspx

你可能感兴趣的:(oracle,sql,.net,Blog)