关于权限设置的一个小把戏(r2第27天)

现在有一个需求,需要开放一些"特殊“的权限给开发组。 具体的背景是这样的: 有三个数据库用户,tabowner, tabconn, tab_temp三个用户 tableowner是owner用户,里面存放着表,索引,序列,存储过程等。 tabconn是一个连接用户,在这个用户里面建立了一些同义词,可以直接通过这个用户来进行数据的增删改查。 tab_temp是一个临时的连接用户,通过这个用户只能查询一些有限的信息,不能进行数据的改动。而且不能执行select sequence_name.nextval from dual这样类型的语句,避免人为干扰sequence的增长。 现在的问题是,因为没有开放select on sequence的权限给tab_temp,所以通过tab_temp无法查询到tabowner里的sequence信息。 举个简单的例子。 --tabowner创建一个视图,从user_sequence里面查询当前schema中的sequence信息,得到的结果是实时的。 SQL> create view a as select *from user_sequences; View created. --里面有198条记录 SQL> select count(*)from a; COUNT(*) ---------- 198 如果我尝试把视图访问的权限赋予tabconn,那么是否可以通过tabconn访问到tabowner中的user_sequences信息呢? SQL> grant select on a to tabconn; Grant succeeded. SQL> conn tabconn/tabconn Connected. SQL> select count(*)from tabowner.a; COUNT(*) ---------- 0 可以看到,这样是行不通的 不过可以做一个小把戏,使得权限的访问可以选择性的开放。通过dblink 目前tabconn可以访问all_sequences的信息,里面包含tabowner里的sequence信息 可以在tab_temp下创建一个db link,然后通过这个db link来做一些工作。 SQL> conn tab_temp/tab_temp Connected. SQL> SQL> create database link temp_link connect to tabconn identified by tabconnusing 'TESTDB'; Database link created. SQL> select count(*)from all_sequences@temp_link; COUNT(*) ---------- 230 可以看到能够查到数据了,不过如果足够细心的话,发现结果好像多了一点,按照我们的要求,指定查询的是tabowner下的sequence信息。 SQL> select count(*) from all_sequences@temp_link where sequence_owner='TABOWNER' 2 / COUNT(*) ---------- 197 这样就没有问题了。 创建视图 create view sequence_summary_v as select *from all_sequences@temp_link where sequence_owner='TABOWNER'; 直接暴露视图也不太好,可以通过同义词来进行屏蔽 SQL> select count(*)from sequence_summary; COUNT(*) ---------- 197 SQL> create synonym sequence_summary for sequence_summary_v; Synonym created. 这样对于开发来说,就能够查到实时的sequence信息了。而且也能够杜绝增长/修改sequence value 的情况。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

使用logon trigger完成动态的session跟踪(r4笔记第29天)

在之前讨论过 关于oracle中session跟踪的总结,可以参见链接 http://blog.itpub.net/23718752/viewspace-115...

2674
来自专栏数据和云

ProxySQL!像C罗一样的强大!

作者 | 张甦, 数据库领域的专家和知名人士、图书《MySQL王者晋级之路》作者,51CTO 专家博主。近10年互联网线上处理及培训经验,专注于 MySQL 数...

974
来自专栏沃趣科技

ASM磁盘容量改变的故障处理

某个数据库环境中的ASM磁盘,由于历史原因,全部配置为没有RAID信息的JBOD模式。今天在做产品升级,由于软件需要,需要将原来加入到ASM中每个JBOD的磁盘...

33114
来自专栏数据和云

数据恢复:AMDU数据抽取恢复

今天我们通过一则真实的案例来认识oracle 自带工具AMDU,无需将磁盘组mount即可实现数据分析,轻松进行数据恢复 某日,我们收到了一则香港用户ASM破坏...

2716
来自专栏杨建荣的学习笔记

rman中三个不完全恢复场景(r6笔记第16天)

rman在数据的备份恢复中还是发挥了重大的作用,把冷备,热备这种手工备份方式做了集成化的管理,可以基于这个工具集完成相对复杂额备份恢复工作。 当然了rman相对...

2715
来自专栏Python研发

初次就这么给了你(Django-rest-framework)

工程已经创建好了,需要cd进工程里边,关键是manage.py在工程里边,我们就需要借用manage.py来进行其他的操作了。

622
来自专栏Java架构师学习

如何在ELK中解析各类日志文件

作为一个日志中心,它会收集各种各样的日志,可以用于问题排查,数据监控,统计分析等等。那么对于繁多的日志,它们都有各自的存储格式,我们如何来区分它们,对于不同的日...

4954
来自专栏性能与架构

Mysql 压力测试工具 mysqlslap

mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 的一个...

3855
来自专栏我是攻城师

如何使用Hive集成Solr?

2585
来自专栏决胜机器学习

PHP网络技术(三)——CURL实现跨服务取接口功能

PHP网络技术(三)——CURL实现跨服务取接口功能 (原创内容,转载请注明来源,谢谢) PHP的curl类库,可以实现远程访问、页面抓取、表...

3424

扫描关注云+社区