当前位置:首页 » 存储配置 » oracle存储过程权限

oracle存储过程权限

发布时间: 2022-06-11 17:59:14

A. Oracle对于表,存储过程对象都分别有哪些操作权限

table:select insert update delete alter references
procere:execute debug

B. oracle赋权调用存储过程

首先,需要resource,connect

grant resource,connect to guest;

然后赋予 执行权限(对每一个存储过程授权):
grant execute on cache.xxxxxx to guest

C. oracle怎么给存储过程赋增加表的权限

GRANT说明:

名称
GRANT — 赋予一个用户,一个组或所有用户访问权限
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }

输入
privilege 可能的权限有:
SELECT:访问声明的表/视图的所有列/字段.
INSERT:向声明的表中插入所有列字段.
UPDATE:更新声明的所有列/字段.
DELETE:从声明的表中删除所有行.
RULE: 在表/视图上定义规则 (参见 CREATE RULE 语句).
ALL: 赋予所有权限.

object 赋予权限的对象名.可能的对象是:
* table (表)
* view (视图)
* sequence (序列)
* index (索引)

PUBLIC:
代表是所有用户的简写.

GROUP group:
将要赋予权限的组 group .目前的版本中,组必须是用下面方法显式创建的.

username:
将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.

输出
CHANGE: 如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所声明的对象不可用或不可能对声明的组或用户赋予权限.

D. oracle 测试存储过程 是哪个权限

Oracle规定,在默认的情况下,在调用存储过程用户的角色不起作用,即在执行存储过程时只有Public权限。所以在调用Create table时,会有权限不足的提示。
只需要使用IR Procere就能很快解决问题啦,把代码修改为如下:

CREATE OR REPLACE PROCEDURE TestProc AUTHID current_user
IS
flag number;
BEGIN
select count(*) into flag from all_tables where table_name='TEMP3';
if (flag=0) then
execute immediate 'create global temporary table TEMP3 on commit preserve rows as select * from BUSI_ECONTRACT';
else
execute immediate 'insert into TEMP3 select * from BUSI_ECONTRACT';
end if;

END ;
执行存储过程,顺利通过。

E. oracle怎么只给存储过程授权执行权限不给看的权限

存储过程的相关权限一共只有两个,一个是excute权限,还有一个是debug权限。
按照你的说法就是只给excute的权限,不给debug权限,因为没试过这样能不能查看,所以你要自己试验下才行。

F. oracle中如何给用户赋予在存储过程里查询所有表的权限

不要通过角色来获得select any table的权限,直接给用户授予select any table的权限。

G. 如何在Oracle的存储过程中拥有role权限

很多人都有这样的了解,用户拥有的role权限在存储过程是不可用的。示例:
SQL> select * from dba_role_privs where grantee='SUK';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
--------- ------------ ------------ ------------
SUK DBA NO YES
SUK CONNECT NO YES
SUK RESOURCE NO YES
用户SUK拥有DBA这个role.
下面我们继续创建一个测试存储过程:
create or replace procere p_create_table
is
begin
Execute Immediate 'create table create_table(id int)';
end p_create_table;
测试:
SQL> exec p_create_table;
begin p_create_table; end;
ORA-01031: 权限不足
ORA-06512: 在"SUK.P_CREATE_TABLE", line 3
ORA-06512: 在line 1
可以看到,即使拥有DBA role,也不能创建表。role在存储过程中不可用。
遇到
这种情况,我们一般需要显式进行系统权限,如grant create table to suk;
但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程
实际上,oracle给我们提供了在存储过程中使用role权限的方法:
修改存储过程,加入Authid Current_User时存储过程可以使用role权限。
create or replace procere p_create_table
Authid Current_User is
begin
Execute Immediate 'create table create_table(id int)';
end p_create_table;
然后继续尝试执行:
SQL> exec p_create_table;
PL/SQL procere successfully completed
至此即可以执行了。

H. 如何在oracle中指定某个存储过程的修改、执行权限给另一用户

不能调用存储过程,调用存储过程需要execute any procere 权限才行。
CONNECT角色: --是授予最终用户的典型权利,最基本的
ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接
CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话
CREATE SYNONYM --建立同义词
CREATE VIEW --建立视图

I. oracle 存储过程 权限问题 PL/SQL: ORA-01031: 权限不足

权限不足就是说你还没有连接到服务器,或者你连接过了又断开了,再次连接上了就该不会出现权限问题。

J. oracle存储过程执行权限和表修改权限无关

不能!
除非你的存储过程中定义了
CREATE OR REPLACE procere XXXXX AUTHID CURRENT_USER AS.

你可以这样去想,如果存储过程是张三的,表也是张三的,那么李四进去后,修改的是李四下面的table001还是张三下面的table001呢?所以,除非他有张三的权限才行

热点内容
linux命令全称 发布:2024-05-17 12:07:54 浏览:110
ftpnas区别 发布:2024-05-17 12:06:18 浏览:949
512g存储芯片价格 发布:2024-05-17 12:04:48 浏览:963
脚本运行周期 发布:2024-05-17 11:39:09 浏览:808
阿里云服务器怎么配置发信功能 发布:2024-05-17 11:37:24 浏览:313
编程中的变量 发布:2024-05-17 11:33:06 浏览:777
加密视频怎么解密 发布:2024-05-17 11:02:52 浏览:571
柳工挖机密码多少合适 发布:2024-05-17 11:00:40 浏览:188
android工程叹号 发布:2024-05-17 10:56:21 浏览:481
在苹果手机应用怎么比安卓贵 发布:2024-05-17 10:56:20 浏览:548