实际应用中,会遇到在某个用户下需要查询另一个用户下的表数据或视图的情况,然而在没有授权时,会提示无权限操作的错误。那就需要通过授权处理后,再能进行查询操作,下面我们来看看是怎么处理的。

一、系统权限说明:

1、用户权限

CREATE SESSIOIN 连接到数据库

CREATE TABLE    在用户的方案中创建表

CREATE SEQUENCE 在用户的方案中创建序列

CREATE VIEW     在用户的方案中创视图

CREATE PROCEDURE在用户的方案中创建存储过程,函数或包

1.1、例子:授予系统权限

DBA能够授予用户指定的系统权限

GRANT create session,create table,

create sequence,create view

TO scott;

二、创建用户只用于查询其它用户库的表和视图

1、创建用户

create user 用户名 identified by 密码;
grant connect,select any table to 用户名;
这样创建的用户就可以连接数据库和只有对任何表有查询权限了grant connect to 用户名  //只有连接权限

2、授权查询表与视图权限

2.1、a用户下授权查询所有表给b用户(a用户登录执行下面语句)

select 'grant select on a.' || tname || ' to b;' from tab;
'GRANTSELECTONA.'||TNAME||'TOB;'
------------------------------------------------------
grant select on a.VOTE_NUM to b;
grant select on a.TMP_MSG to b;
grant select on a.VOTE_IP to b;
grant select on a.QUESTION to b;
grant select on a.QUESTION_COUNT to b;
grant select on a.RECORD_DICT to b;
grant select on a.BM_COLUMN to b;
grant select on a.BM_COLUMN_CLASSIFY_REL to b;
grant select on a.BM_INFO_CLASSIFY to b;
grant select on a.BM_MODULE to b;
grant select on a.BM_MODULE_AUTH to b;或select 'grant select on '||table_name||' to b;'  from user_tables;'GRANTSELECTON'||TABLE_NAME||'TOB;'
----------------------------------------------------
grant select on VOTE_NUM to b;
grant select on TMP_MSG to b;
grant select on VOTE_IP to b;
grant select on QUESTION to b;
grant select on QUESTION_COUNT to b;
grant select on RECORD_DICT to b;
grant select on BM_COLUMN to b;
grant select on BM_COLUMN_CLASSIFY_REL to b;说明:在a用户下执行该语句,执行后会生成对所有表的赋权限语句,拷贝出来执行就可以了。

2.2、a用户下授权查询单个表给b用户

grant select on a.tablename to b;

2.3、a用户下授权查询所有序列给b用户

select 'grant select on ' || sequence_name || ' to b;' from dba_sequences where sequence_owner='A';

2.4、--Oracle查询用户视图

select * from user_views;

2.5、a用户下授权查询视图给test11用户

select 'grant select on a.' || view_name || ' to test11;' from user_views;视图查询如下:'GRANTSELECTON'||VIEW_NAME||'TOTEST11;'
---------------------------------------------------------
grant select on CONFIRM_RESERVATION_VIEW to test11;
grant select on DEPARTMENT_RESERVATION_VIEW to test11;
grant select on DEPART_CANCEL_RESERVATION_VIEW to test11;
grant select on DOCTOR_CANCEL_RESERVATION_VIEW to test11;
grant select on DOCTOR_RESERVATION_VIEW to test11;
grant select on GRPSS to test11;
grant select on HOSPITAL_ALL_SCHEDULE_VIEW to test11;
grant select on HOSPITAL_DEPARTMENT_VIEW to test11;
grant select on HOSPITAL_DEP_SCHEDULE_VIEW to test11;
grant select on HOSPITAL_DOCTOR_VIEW to test11;
grant select on HOSPITAL_DOC_SCHEDULE_VIEW to test11;'GRANTSELECTON'||VIEW_NAME||'TOTEST11;'
---------------------------------------------------------
grant select on PATIENT_COUNT_RESERVATION_VIEW to test11;
grant select on PATIENT_RESERVATION_VIEW to test11;
grant select on PATIENT_RESERVATION_VIEW2 to test11;
grant select on PATIENT_RES_VIEW to test11;
grant select on PRVIEW to test11;
grant select on RES_VIEW to test11;
grant select on SS to test11;

备注:授权更新、删除的 语法和授权查询类似,只是关键字不同而已。

三、撤消权限

1、授权a用户下取消给b用户删除单个表的权限

revoke delete on a.tablename from b;

2、授权a用户下取消给b用户更新单个表的权限

revoke update on a.tablename from b;

3、拥有dba权限的用户下取消给b用户创建dblink的权限

revoke create database link from b;

4、拥有dba权限的用户下取消给tes11用户查询任何表的权限

revoke select any table from test11;

四、事例:

1、在rh_test用户下授权查询所有表给wd用户

select 'grant select on rhip_test.' || tname || ' to wd;' from tab;'GRANTSELECTONRH_TEST.'||TNAME||'TOWD;'
----------------------------------------------------------------
grant select on rh_test.BIZ_CODE_REL to wd;
grant select on rh_test.BIZ_RMIM_DIC to wd;
grant select on rh_test.BIZ_RMIM_VERSION to wd;
grant select on rh_test.BIZ_RMIM_VERSION_DETAIL to wd;
grant select on rh_test.BIZ_RMIM_VERSION_SUBDETAIL to wd;
grant select on rh_test.BIZ_SYSTEM_LOGIN to wd;
grant select on rh_test.BIZ_TREE_PATH to wd;
grant select on rh_test.CLINIC_TRANSFER to wd;
grant select on rh_test.CODE_SYSTEM_DIC to wd;'GRANTSELECTONRH_TEST.'||TNAME||'TOWD;'
----------------------------------------------------------------
grant select on rh_test.ETL_PATIENT_INDEX to wd;
grant select on rh_test.HOSPITAL_DIC to wd;
grant select on rh_test.HOSPITAL_SUBSYSTEM to wd;
grant select on rh_test.MAIL_RECORD to wd;
grant select on rh_test.MEDICAL_RECORD to wd;
grant select on rh_test.PATIENT_INDEX to wd;
grant select on rh_test.RHIP_SYSCONFIG to wd;
grant select on rh_test.SYSTEMLOGIN to wd;将上面查出的语句执行一下即可。

2、a用户下授权查询单个表给test11用户

select 'GRANT SELECT ON' || table_name || 'to test11;'  from user_tables
得到的结果如下:
GRANT SELECT ON WEBSERVICE_USER to test11
GRANT SELECT ON USERLESS_PATIENT to test11;
再把上面得到的结果逐一执行一遍:
GRANT SELECT ON WEBSERVICE_USER to test11
GRANT SELECT ON USERLESS_PATIENT to test11;新建的表要想被userA访问,也得执行grant语句:
grant select on 新建的表 to userA;

3、授权a用户下授权更新单个表给b用户

grant update on a.tablename to b;

4、授权a用户下授权删除单个表给b用户

grant delete on a.tablename to b;

5、拥有dba权限的用户下授权创建dblink给b用户

grant create database link to b;

转载于:https://blog.51cto.com/meiling/2062463

ORACLE授权用户查询另一个用户下的表与视图相关推荐

  1. Oracle中同一个数据库下不同用户之间授权用户查询另一个用户下的表与视图

    参考博文:https://blog.51cto.com/meiling/2062463

  2. oracle赋予一个用户查询另一个用户中所有表

    说明:让用户selame能够查询用户ame中的所有表(不能添加和删除) 1.创建用户selame create user selame identified by Password; 2.设置用户se ...

  3. Oracle 当前用户给另一个用户授权查询指定表或视图的权,否则另一个用户提示不存在视图或表

    用DNINMSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND  DEFAULT TABLESPACE "T ...

  4. java+oracle数据库锁,数据库学习之Oracle数据库\记录被另一个用户锁住\解决方法...

    1.先来看看为什么会出锁住: 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数 ...

  5. Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法

    查询数据库所有的表有下面两个方法. -- 查询数据库所有的表 select * from all_tables; select * from all_tab_comments where table_ ...

  6. 数据从一个Oracle导到另一个,oracle拷贝数据导另一个用户

    exp web_hs/web_hs@JIUHUA  file=D:\abcd.dmp    alter user web_esky identified by web_esky; (修改用户密码) i ...

  7. Oracle数据库 记录被另一个用户锁住 解决方法

    1.锁表原因: 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. ...

  8. oracle删除用户下所有表、视图等操作(命令操作)

    sqlplus; –登录用户名与密码为需要删除的用户 SET HEAD OFF; SPOOL e:/drop_tables.sql; –delete tables select 'drop table ...

  9. oracle—“操作记录已被里一个用户锁住” 解决办法

    查询锁住session SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv ...

最新文章

  1. 看例子,学 Python(二)
  2. JavaScript学习总结(十三)——极简主义法编写JavaScript类
  3. QT计算器功能的实现
  4. Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。
  5. Poj 1284 Primitive Roots
  6. 工作300:处理预览界面
  7. ngui中 代码调用按钮事件(后来改成了按钮绑定键盘..)
  8. Pascal 语言中的关键字及保留字
  9. android自定义键盘小数点键,android实现 自定义键盘 keydemo
  10. Navicat连接本地数据库报错问题解决方案
  11. PPP协议基础与工作流程
  12. libsvm python Linux Ubuntu下编程操作实践
  13. python复盘之windows环境的安装
  14. Java自学和培训的区别
  15. 注册公司选小规模还是一般人?四种判别方式讲得明明白白
  16. 匈牙利算法解决指派问题(java版)
  17. python做积分_python曲线积分
  18. python中算法是什么意思_什么是算法?Python中的基础算法有几种?
  19. 怎么设置浏览器默认搜索引擎,设置默认搜索引擎的方法步骤
  20. 你画我猜---websocket

热门文章

  1. pytorch 查看当前学习率_pytorch调整模型训练的学习率
  2. Android 开发工程师面试指南
  3. RecyclerView的优化:RecycledViewPool
  4. Nginx实现静态代理,负载均衡,前后端分离
  5. 平面设计师如何训练自己创意思维
  6. 《数据结构》是计算机应用,《数据结构》期中测试-2014计算机应用技术用.doc
  7. Java创建MySQL句柄_MySQL创建用户(CREATE USER)
  8. python什么环境_什么是Python?(基础环境建设),NO2,搭建
  9. python速度比较_Python和C运算速度对比实测
  10. 校园网服务器系统需求分析,校园网的网络系统集成建设需求分析的主要工作