1.oracle 中用户的问题(带领你认识oracle使用者常说起的几个名词)

    我们刚刚安装好oracle后,里面有scott,system,sys,然后又听说了sysdba,dba.
那么它们是一些什么东东呢?
你知道嘛?
其实它们不神秘!
下面就带你了解这些东东吧!
首先来看看用户吧,我查阅了一些资料,在加上自己的理解:
所谓用户,就是实用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

2.

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

SQL> select * from dba_roles where upper(role) ='dba';

未选定行

grant dba 和grant sysdba的差别

dba是正真的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了

首先创建用户zy

SQL> create user zy identified by zy;

用户已创建。

SQL> grant dba to zy;

授权成功。

SQL> select * from dba_role_privs where grantee = 'ZY';

GRANTEE                        GRANTED_ROLE                   ADM DEF

------------------------------ ------------------------------ --- ---
ZY                             DBA                            NO YES

SQL> revoke dba from zy;

撤销成功。

SQL> select * from dba_role_privs where grantee = 'ZY';

未选定行

对于sysdba是不会出现这个情况的,因为他不是正真的role

在进行下面的语句前,请你确认你是否实在sys用户下操作的
SQL> conn sys/sys as sysdba;     --sys/sys前一个是sys用户,后一个sys是密码
已连接。
SQL> grant sysdba to zy;

授权成功。

SQL> select * from dba_role_privs where grantee = 'ZY';

未选定行

sysdba是登录时候需要的他是和remote_login_passwordfile关联的

我们可以查询v$pwfile_users;
如下:
SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------ ----- -----
SYS                            TRUE TRUE
ZY                             TRUE FALSE
当你grant sysdba后,在这里就多了一条

下面我们revoke一下,再来看

SQL> revoke sysdba from zy;

撤销成功。

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------ ----- -----
SYS                            TRUE TRUE

没有了。
通过上面的对比,我相信大家对DBA和SYSDBA的区别人生的比较深入了吧

上面已经知道了sysdba和sba的区别了。

下面就来看看我们安装好数据库后的几个用户了,sys,scott,system的区别了!
废话扯了一堆,你感觉才进入正题吧。
scott 是个演示用户,是让你学习ORACLE用的。
SYSDBA 不是用户,可以认为是个权限,超级权限,

超级用户分两种 SYSDBA和SYSOPT

SYSOPT 后面3个字母是operator的意思,也就是操作数据库的人,
而SYSDBA 则是管理数据库的人

SYSDBA比SYSOPT的权限还要大,而SYS用户就完全是个SYSDBA,

但SYSTEM用户默认是SYSOPT,不过它也能以SYSDBA的权限登陆

我结合别人的经验,总结就是上面的,有好的意见我们可以一起学习oracle