今天在本机上装了Oracle数据库,在sqlplus上操作shutdowm immediately; 提示权限不足。
1.如下图所示,SYSTEM有DBA权限啊,为什么无法关闭数据库?
1)关于DBA_ROLE_PRIVS的解释如下图所示:
*grant授权语句中的with [admin] option是将所授权限的操作权百限(即再授权权限)同时赋予该用户。
*select * from SESSION_ROLES; //查看当前用户的生效的角色。
2) 通过role_sys_privs查看role所拥有的权限
2.经过在网上查询: 拥有SYSDBA和SYSOPER权限的用户,可以执行类似CREATE DATABASE、DROP DATABASE、RECOVER、STARTUP、SHUTDOWN之类的操作。这两个权限不但很高,而且很特殊,因此:
在sqlplus中操作命令:conn system/xxxxx as sysdba 登录
*SYSDBA不是权限,当用户以SYSDBA身份登陆数据库时,登陆用户都会变成SYS。
SYSDBA身份登陆可以打开,关闭数据库,对数据库进行恢复操作等,而这些是DBA角色无法实现的;
SYSDBA是系统权限,DBA是用户对象权限;
SYSDBA是管理oracle实例的,它的存在不依赖于整个数据库完全启道动,
只要实例启动了,它就已经存在,以SYSDBA身份登陆,装载数据库、打开数据库,只有数据库打开了,或者说整个数据库完全启动后,DBA角色才有了存在的基础;
DBA是一种role,对应的是对Oracle实例里对象的操作权限的集合,而SYSDBA是一种登录认证时的身属份标识而已。而且,DBA是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而SYSDBA是指的一种概念上的操作对象,在Oracle数据里并不存在。
*connect system/oracle@orcl orcl是数据库实例的名字
conn username/password@host/sid