PLSQL中执行DDL语句的时候出现权限不足问题
2010-07-30 14:10
309 查看
今天发布脚本的时候出现权限不足的问题 查了一下 主要是因为 当前用户系统权限只有Unlimited tablespace,但角色是dba角色,
通过查询发现是由于PLSQL执行的时候只是检查当前的系统权限,角色的权限不管用,所以有两种方法可以解决这个问题:
1 手动直接加系统权限
2 在procedure头部 添加 create or replace procedure xxx authid current_user is xxxx
下面来做实验
通过查询发现是由于PLSQL执行的时候只是检查当前的系统权限,角色的权限不管用,所以有两种方法可以解决这个问题:
1 手动直接加系统权限
2 在procedure头部 添加 create or replace procedure xxx authid current_user is xxxx
下面来做实验
--查看角色 以及系统权限 发现没有create any table 的系统权限 SQL> select * 2 from dba_role_privs t 3 where t.grantee = 'C_GD' 4 / GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------------------------ ------------------------------ ------------ ------------ C_GD DBA NO YES C_GD CONNECT NO YES SQL> select * 2 from user_sys_privs t 3 / USERNAME PRIVILEGE ADMIN_OPTION ------------------------------ ---------------------------------------- ------------ C_GD UNLIMITED TABLESPACE NO --建立procedure SQL> create or replace procedure test_priv_proc as 2 begin 3 execute immediate 'create table test_tb(id number)'; 4 end; 5 / Procedure created --调用procedure SQL> begin 2 test_priv_proc; 3 end; 4 / begin test_priv_proc; end; --发现报权限不足 ORA-01031: insufficient privileges ORA-06512: at "C_GD.TEST_PRIV_PROC", line 3 ORA-06512: at line 3 --手动授权 SQL> grant create any table to c_gd; Grant succeeded --成功 SQL> begin 2 test_priv_proc; 3 end; 4 / PL/SQL procedure successfully completed --回收权限 SQL> revoke create any table from c_gd; Revoke succeeded --添加authid current_user权限 SQL> create or replace procedure test_priv_proc authid current_user as 2 begin 3 execute immediate 'create table test_tb(id number)'; 4 end; 5 / Procedure created --删除以前生成的table SQL> drop table test_tb; Table dropped --可以成功运行 SQL> begin 2 test_priv_proc; 3 end; 4 / PL/SQL procedure successfully completed SQL>
相关文章推荐
- Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题。
- 解决执行存储过程出现权限不足问题(ORA-01031)
- 执行oracle中的job报错:ORA-12011:无法执行作业1存储过程执行DDL语句提示ORA-01031错误:权限不足
- 存储过程执行DDL语句提示ORA-01031错误:权限不足
- 选定的数据存储区出现问题,原因可能是服务器名称或凭据无效,或者权限不足。也可能是未启用角色管理器功能造成的。
- 网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题
- IIS7虚拟目录出现HTTP错误500.19(由于权限不足而无法读取配置文件)的问题
- mysql中出现没有权限访问或者查看全部数据库的问题---用客户端第一次打开的时候
- php 执行事务的时候pdo出现问题
- 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- 在SQL 2008中总是出现问题:执行Transact-SQL语句或批处理时发生异常。如何解决?
- 在编译的时候出现这个问题 LINK : 没有找到 C:\Users\...\transposeMatrix.exe 或上一个增量链接没有生成它;正在执行完全链接 我用的是VS2008
- IIS7虚拟目录出现HTTP错误500.19(由于权限不足而无法读取配置文件)的问题
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- 当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序
- IIS7虚拟目录出现HTTP错误500.19(由于权限不足而无法读取配置文件)的问题
- oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
- 关于Qt使用QSqlQuery执行sql语句时出现out of memory的问题
- 动态DDL语句执行和Schema Objects的显示授权问题