Oracle 11g 关于权限DBA和SYSDBA的区别是什么

笔者查询后得出
DBA属于一个角色,也就是各种权限的综合;
而SYSDBA则是一种认证,也就是SYS的认证,可以对数据库进行shutdown等等的操作;

这里涉及到两个表即dba_role_privs和v$pwfile_users

先看DBA;
新建一个cat用户,赋予它DBA的权限,然后执行各种操作

SQL> create user cat identified by cat;

User created.

SQL> grant dba to cat;

Grant succeeded.

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

GRANTEE 										   GRANTED_ROLE 									      ADMIN_OPT DEFAULT_R
------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ --------- ---------
CAT											   DBA											      NO	YES

SQL> select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS	
SQL> conn cat/cat
Connected.
SQL> create user catt identified by catt;

User created.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE	  MEMBERS ARCHIVED  STATUS					     FIRST_CHANGE# FIRST_TIME	   NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- --------------- ------------ ---------------
	 1	    1	     100   52428800	   512		1 YES	    INACTIVE						   1780744 08-FEB-20		1796736 09-FEB-20
	 2	    1	     101   52428800	   512		1 YES	    INACTIVE						   1796736 09-FEB-20		1812567 11-FEB-20
	 3	    1	     102   52428800	   512		1 NO	    CURRENT						   1812567 11-FEB-20	     2.8147E+14

SQL> shutdown immediate
ORA-01031: insufficient privileges

总结:授予了DBA权限的用户,可以做很多事情,但是无法关闭数据库。
创建用户的时候注意,录入数据库的用户都是大写。

接下来我们来看下授予sysdba的用户可以做些什么,新建一个dog用户,并执行如下操作

SQL> create user dog identified by dog;

User created.

SQL> show user
USER is "SYS"
SQL> grant sysdba to dog;

Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
DOG											   TRUE 	   FALSE	   FALSE

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

no rows selected

SQL> conn dog/dog as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> create user abc identified by abc;

User created.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE	  MEMBERS ARCHIVED
---------- ---------- ---------- ---------- ---------- ---------- ---------
STATUS						 FIRST_CHANGE# FIRST_TIME
------------------------------------------------ ------------- ---------------
NEXT_CHANGE# NEXT_TIME
------------ ---------------
	 1	    1	     100   52428800	   512		1 YES
INACTIVE					       1780744 08-FEB-20
     1796736 09-FEB-20

	 2	    1	     101   52428800	   512		1 YES
INACTIVE					       1796736 09-FEB-20
     1812567 11-FEB-20

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE	  MEMBERS ARCHIVED
---------- ---------- ---------- ---------- ---------- ---------- ---------
STATUS						 FIRST_CHANGE# FIRST_TIME
------------------------------------------------ ------------- ---------------
NEXT_CHANGE# NEXT_TIME
------------ ---------------

	 3	    1	     102   52428800	   512		1 NO
CURRENT 					       1812567 11-FEB-20
  2.8147E+14


SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut 

总结:被授予了sysdba的用户,登录时,需要+尾缀 as sysdba,所有DBA权限能做的都可以,并且还可以关闭数据库,相当强大哦;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要查看Oracle 11g数据库中的所有用户及其权限,可以按照以下步骤操作: 1. 打开SQLPlus。在终端或命令行窗口中输入以下命令: ``` sqlplus /nolog ``` 这将打开SQLPlus命令行界面。 2. 连接到Oracle数据库。在SQLPlus命令行界面中输入以下命令: ``` connect sys/password as sysdba; ``` 请将"password"替换为您的SYS用户密码。这将连接到SYS用户并打开SQLPlus命令行界面。 3. 查看所有用户。在SQLPlus命令行界面中输入以下SQL语句: ``` SELECT * FROM DBA_USERS; ``` 这将返回所有已创建的Oracle 11g数据库用户的列表及其详细信息,包括用户名、创建日期、默认表空间、临时表空间等。 4. 查看用户权限。在SQLPlus命令行界面中输入以下SQL语句: ``` SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'username'; ``` 请将"username"替换为要查询其权限的实际用户名。这将返回该用户被授予的所有系统权限的列表。 5. 查看对象权限。在SQLPlus命令行界面中输入以下SQL语句: ``` SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'username'; ``` 请将"username"替换为要查询其权限的实际用户名。这将返回该用户被授予的所有对象权限的列表,包括对表、视图和序列的SELECT、INSERT、UPDATE、DELETE等权限。 6. 退出SQLPlus。在SQLPlus命令行界面中输入以下命令: ``` exit; ``` 这将退出SQLPlus。 这些步骤将允许您查看Oracle 11g数据库中的所有用户及其详细信息和权限。请注意,只有具有足够权限的用户才能查看其他用户的信息。在使用SQL查询语句时,请确保您有足够的权限来执行所需的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值