当前位置:  数据库>oracle

Oracle收集用户的权限

    来源: 互联网  发布时间:2017-05-19

    本文导语: 【使用场景】系统上线前准备工作。一般迁移数据的时候经常使用导入dump文件的方法。由于是一个一个用户导入进去的,所以在导入过程中会报权限问题的错误(可以忽略),还必须在生产库授权系统才能正常工作。使用下面...

【使用场景】系统上线前准备工作。一般迁移数据的时候经常使用导入dump文件的方法。由于是一个一个用户导入进去的,所以在导入过程中会报权限问题的错误(可以忽略),还必须在生产库授权系统才能正常工作。使用下面的脚本可以得到授权语句。
 
在UAT环境执行select语句,在生产环境执行grant语句,根据实际用户做相应的修改。
 
注意:查询的用户需要有查看dba_开头数据字典的权限,否则报出表或者视图不存在。

SELECT 'GRANT ' || T1.GRANTED_ROLE || ' TO ' || T1.GRANTEE || ';' AS TEXT
 
FROM DBA_ROLE_PRIVS T1

WHERE T1.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK')

UNION ALL

SELECT 'GRANT ' || T2.PRIVILEGE || ' TO ' || T2.GRANTEE || ';' AS TEXT
 
FROM DBA_SYS_PRIVS T2

WHERE T2.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK')

UNION ALL

SELECT 'GRANT ' || T3.PRIVILEGE || ' ON ' || T3.OWNER || '.' ||
 
T3.TABLE_NAME || ' TO ' || T3.GRANTEE || ';' AS TEXT
 
FROM DBA_TAB_PRIVS T3

WHERE T3.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK');

这样写比较死板,使用‘&’替换变量也很不好用,可以建立一个存储过程。

create or replace procedure user_priv(username in varchar2) as
 cursor v_cur is
 SELECT 'GRANT ' || T1.GRANTED_ROLE || ' TO ' || T1.GRANTEE || ';' AS TEXT
 FROM DBA_ROLE_PRIVS T1
 where T1.grantee = upper(username)
 union all
 SELECT 'GRANT ' || T2.PRIVILEGE || ' TO ' || T2.GRANTEE || ';' AS TEXT
 FROM DBA_SYS_PRIVS T2
 WHERE T2.GRANTEE = upper(username)
 union all
 SELECT 'GRANT ' || T3.PRIVILEGE || ' ON ' || T3.OWNER || '.' ||
 T3.TABLE_NAME || ' TO ' || T3.GRANTEE || ';' AS TEXT
 FROM DBA_TAB_PRIVS T3
 where T3.grantee = upper(username);
 /*select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee=upper(username) );如果有必要可-以收集角色中的权限*/
 
begin
 for v_t in v_cur loop
 begin
 dbms_output.put_line(v_t.TEXT);
 end;
 end loop;
 end;
 
最后直接运行procedure即可 execute user_priv (username => 'hr');

如果遇到输出文本问题请参考:


    
 
 

您可能感兴趣的文章:

  • oracle 视图权限 oracle 创建视图权限不足
  • linux下安装oracle,出现没有权限的报警,怎么解决?
  • Oracle 权限管理入门
  • 求救:HPUNIX下的ORACLE7执行select * from tablename提示权限不足!!
  • Linux下安装Oracle 10G提示“bad interpreter: 权限不够”的解决
  • Oracle创建用户权限的过程
  • oracle9i在linux9上安装的权限问题!在线等候!
  • Oracle 10g创建表空间和用户并指定权限
  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用
  • 一个关于JAVA操作oracle数据库时UPDATE权限的问题
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • Linux系统中Oracle数据库的用户权限
  • Oracle内置角色connect与resource的权限
  • Oracle删除当前用户下所有表的方法适用于有或没有删除权限
  • oracle用户权限管理使用详解
  • 实现Oracle数据库的存储过程中拥有“role”权限
  • 巧用Oracle系统账户默认口令来提升权限
  • oracle 9i Linux 下安装时出现 无法建立inventory目录,你可能没有相应权限,请高手帮忙,100分,在线等!
  • 入侵Oracle服务器进一步获取权限
  • Oracle 用户权限管理方法
  • Oracle 安装和卸载问题收集(集合篇)第1/6页
  • 收集的ORACLE函数大全
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • Oracle一个用户如何访问其它用户的表应用指南
  • oracle用户口令丢了
  • 修改oracle用户的.bash_profile之后无法正常登陆
  • linux下如何查看是什么用户安装的oracle
  • oracle+jsp 多用户查询系统讨论:
  • ORACLE 中修改用户密码的方法
  • linux中定时任务 oracle用户该如何做?
  • 杀掉oracle在线用户脚本分享
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • Oracle exp 导出用户对象
  • oracle怎么删除用户提供解决方案
  • Oracle初始参数与当前用户
  • Oracle发布Oracle SQL Developer 1.2数据库开发工具 帮助用户简化开发工作
  • Oracle中查看当前用户的表
  • 怎样知道一个用户的主目录,也就是.bash_profile所在的目录?如/home/oracle
  • Linux下修改Oracle用户密码
  • 解决oracle用户连接失败的解决方法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • WEB前端 iis7站长之家
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,