oracle存储过程权限有哪些

oracle存储过程权限有哪些,第1张

Oracle 存储过程(Stored Procedure)是一段预定义的程序,可以被存储在数据库中并在需要时被调用执行。与其他程序一样,存储过程需要适当的权限设置,以便只有授权用户才能访问和执行它。下面是 Oracle 存储过程常用的权限:

CREATE PROCEDURE 权限:允许用户创建存储过程。

ALTER PROCEDURE 权限:允许用户修改已经存在的存储过程。

EXECUTE 权限:允许用户执行存储过程。

DEBUG CONNECT SESSION 权限:允许用户调试存储过程,包括在运行过程中进行断点调试和监控变量等。

DEBUG ANY PROCEDURE 权限:允许用户调试数据库中任何存储过程。

DEBUG ANY PROGRAM 权限:允许用户调试数据库中任何程序。

DROP PROCEDURE 权限:允许用户删除已经存在的存储过程。

需要注意的是,对于存储过程的权限设置,应该根据实际情况进行授权,只授予必要的权限以保证数据的安全性和完整性。例如,只有特定的用户才能执行存储过程,而其他用户无法访问存储过程的代码和结果。同时,还需要定期检查数据库中存储过程的权限设置,以确保其符合安全和合规要求。

ORACLE数据库中的权限和角色

Oracle数据库是一种大型关系型的数据库,我们知道当使用一个数据库时,仅仅能够控制哪些人可以访问数据库,哪些人不能访问数据库是无法满足数据库访问控制的。DBA需要通过一种机制来限制用户可以做什么,不能做什么,这在Oracle中可以通过为用户设置权限来实现。权限就是用户可以执行某种 *** 作的权利。而角色是为了方便DBA管理权限而引入的一个概念,它实际上是一个命名的权限集合。

1 权限

Oracle数据库有两种途径获得权限,它们分别为:

① DBA直接向用户授予权限。

② DBA将权限授予角色(一个命名的包含多个权限的集合),然后再将角色授予一个或多个用户。

使用角色能够更加方便和高效地对权限进行管理,所以DBA应该习惯于使用角色向用户进行授予权限,而不是直接向用户授予权限。

Oracle中的权限可以分为两类:

•系统权限

•对象权限

1.1 系统权限

系统权限是在数据库中执行某种 *** 作,或者针对某一类的对象执行某种 *** 作的权利。例如,在数据库中创建表空间的权利,或者在任何模式中创建表的权利,这些都属于系统权限。在Oracle9i中一共提供了60多种权限。

系统权限的权利很大,通常情况下:

① 只有DBA才应当拥有alter database系统权限,该权限允许用户对数据库物理结构和可用性进行修改。

② 应用程序开发者一般应该拥有Create Table、Create View和Create Type等系统权限,用于创建支持前端的数据库模式对象。

③ 普通用户一般只具有Create session系统权限(可以通过Connection角色获得),只有Create Session系统权限的用户才能连接到数据库

④ 只有具有Grant Any PRivilege系统权限用户,或者获取了具有With Admin Option选项的系统权限的用户,才能够成为其它用户授予权限。

1.2对象权限

对象权限是针对某个特定的模式对象执行 *** 作的权利。只能针对模式对象来设置和管理对象权限。

对于模式对象:表、视图、序列、存储过程、存储函数、包都可以对象设置权限。不同类型模式对象具有不同的对象权限。比如,表、视图等对象具有查询(Select)、修改(Update)、删除(Delete)等对象权限,而存储过程、存储函数等对象则具有执行(Execute)等对象权限。

但是并不是所有的模式对象都可以设置对象权限。比如簇、索引、触发器以及数据库链接等模式就不具有对象权限。这些模式对象的访问控制是通过相应的.系统权限来实现的,比如,要对索引进行修改,必须拥有Alter Any Index系统权限。

用户自动拥有他的模式中所有对象的全部对象权限,他可以将这些对象权限授予其他的用户或角色。比如,Test1用户创建了一个表Table1,在没有授权的情况下,用户Test2不能查询、修改、删除这个表。如果Test1将ETP表的Select对象权限授予了Test2,则该用户就可以查询Table1表了。如果在为其它用户授予对象权限时用了With Grant Option选项,被授予权限的用户还可以将这个权限在授予其他用户。

2 角色

2.1角色的概念

角色就是多个相关权限的命名集合。通过角色来进行对用户授予权限,可以大大简化DBA的工作量。比如,处于统一部门中的30多个用户都需要访问数据库中的一系列表,DBA可以将这些表的中合适的对象权限授予一个角色,然后在把这个角色授予这些用户,这样进行 *** 作要比为没有用户进行授权要便捷多了,而且要对这些用户的权限进行统一修改,只需要修改角色的权限即可。

2.2角色的优点

通过角色为用户授予权限,而不是直接向各个用户授权,具有以下优点:

•简化权限管理 DBA将用户群分类,然后为每一类用户创建角色,并将该角色授予这类用户所需要的权限,最后在将改角色授予该类中的各个用户。这样不仅简化了授权 *** 作,而且当这类用户的权限需求发生改变时,只需要把角色的权限进行改动,而不必修改每一位用户的权限。

•动态权限管理 角色可以被禁用或激活。当角色被禁止使用时,拥有该角色的用户不再拥有授予改角色的权限了。这样就可以对多个用户的权限进行动态控制了。

•灵活的编程能力 角色是存储在数据字典中的,并且可以为角色设置口令。这样就能够在应用程序中对角色进行控制。比如禁用或者激活等 *** 作。

下面以Oracle9i为例,给出具体的实现用户授权:

(1)设定各种角色,及其权限

CREATE ROLE checkerrole DENTIFIEDBYxm361001

CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole

GRANT SELECT,UPDATE ON

account.paytable TO checkerrole

GRANT CONNECT TO defaultrole

(2)创建用户

CREATE USER xiaoli IDENTIFIEDBY xiaoli

(3)授权

GRANT checkerrole TO xiaoli

GRANT defaultrole TO xiaoli

(4)设定用户缺省的角色

ALTER USER xiaoli DEFAULTROLE defaultrole

(5)注册过程

CONNECT xiaoli/xiaoli@oracle

此时用户只有其缺省角色的权限。

(6)激活角色

SET ROLE checkerrole IDENTIFIEDBY xm361001

---- *** 作成功后,xiaoli拥有checkerrole的权限。

----这里的角色和口令是固定的,在应用系统中可以由应用管理人员自行设置则更为方便安全

权限允许用户访问属于其它用户的对象或执行程序,

ORACLE系统提供权限:Object 对象级、System 系统级

1.系统权限(系统权限是对用户而言):

DBA拥有最高的系统权限:

1,可以创建用户

语法:create user username identified by password

例如:create user briup identified by briup

当用户创建成功之后,此用户什么权限都没有,甚至不能登录数据库。

2. 赋予权限:

一个用户应该具有的基本权限包含:

CREATE SESSION

CREATE TABLE

CREATE SEQUENCE

CREATE VIEW

CREATE PROCEDURE

如果有多个用户他们都具有相同的权限(create session,create table,create sequence),赋予权限的动作过于麻烦,要给每个用户分别制定这些权限,因此oracle提出角色的概念,可以将权限赋值给角色,然后再将角色赋值给用户。

例如,我们当初在进行 *** 作时写的:

grant resource,connect to briup

此时resource,connect就是角色。

查询resource,connect 具有哪些权限可以使用:

select privilege,role

from role_sys_privs

where role = 'CONNECT' or role ='RESOURCE'

语法:

grant xxxx to user_name

例如:

grant create view to briup

3.回收权限

语法:revoke xxx from user_name

例如:

revoke create view from briup

4.修改密码:

语法:alter user xxx identified by xxxx

例如:

alert user briup identified by briup

5.删除用户:

语法:drop user username [cascade]

note: cascade:当用户下有表的时候,必须使用cascade级联删除。

例如: drop user test cascade

2.对象权限(针对对象,类似表对象等):

对象权限:select, update, insert, alter, index, delete, all //all包括所有权限

对象的 拥有者拥有所有的权限。

1.给用户赋予 *** 作对象的权限:

GRANT object_priv [(columns)]

ON object

TO {user|role|PUBLIC}

[WITH GRANT OPTION]//允许分配到权限的用户继续将权限分配给其它用户

例如:

grant select on s_emp to jd1613

给jd1613用户赋予在s_emp表上进行查询的权利。

grant update(id) on s_emp to jd1613

给jd1613赋予能够更新s_emp表上id列的权限。

2.回收权限:同系统权限。

语法:revoke xxx on obj from user

note: 通过with grant option赋予额权限也会被回收。

例如:

revoke select , update on s_emp from jd1613

3.创建同义词: 相当于给对象起别名

语法:create[public] synonym sy_name for obje_name

note:只有dba才有权利创建public的同义词

例如:

create synonym emp for s_emp

4.删除同义词:

语法: drop synonym syn_name

例如:

drop synonym emp

5.导出数据库

exp,imp不属于sqlplus的命令,所以不是在sqlplus终端执行的。

系统终端:exp userid=briup/briup full=y file=briup.dmp

导入:imp userid=briup/briup full=y file=briup.dmp


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11947973.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存