使用shell脚本生成只读权限的sql脚本(r2第28天)

目前做数据迁移,有8套不同的环境,为了保护环境,每个环境中的表,视图等开发都不能修改,只能通过连接用户去查询。 每个环境中可能含有表,索引,序列,存储过程,函数等,所以一个一个写是不现实的,写了下面的动态脚本来自动生成相应的权限,然后创建对应的同义词。 脚本会生成两个sql脚本,一个是owner用户赋予权限使用的,另外一个脚本是connect用户使用的,创建了对应的同义词。 source_schema=$1 conn_schema=$2 sqlplus -s xxx/xx <<EOF set feedback off set pages 0 set linesize 150 spool owner_${source_schema}_grant.sql select 'grant select on ${source_schema}.'||object_name||' to '||' ${conn_schema};' from all_objects where object_type in ('TABLE','TABLE PARTITION','VIEW','SEQUENCE') and owner=upper('$source_schema') group by 'grant select on ${source_schema}.'||object_name||' to '||' ${conn_schema};' ; select 'grant execute on ${source_schema}.'||object_name||' to '||' ${conn_schema};' from all_objects where object_type in ('PROCEDURE','FUNCTION','PACKAGE') and owner=upper('$source_schema') group by 'grant execute on ${source_schema}.'||object_name||' to '||' ${conn_schema};'; spool off; spool conn_${conn_schema}_syn.sql select 'create synonym ${conn_schema}.'||object_name||' for '||' ${source_schema}.'||object_name||';' from all_objects where object_type in ('TABLE','TABLE PARTITION','VIEW','SEQUENCE','PROCEDURE','FUNCTION','PACKAGE') and owner=upper('$source_schema') group by 'create synonym ${conn_schema}.'||object_name||' for '||' ${source_schema}.'||object_name||';'; spool off; EOF exit 运行结果如下: grant select on cnvdbo8.aaaa to cnvdbc8; grant select on cnvdbo8.bbbb to cnvdbc8; grant select on cnvdbo8.cccc to cnvdbc8; grant execute on cnvdbo8.dddd to cnvdbc8; grant execute on cnvdbo8.eeee to cnvdbc8; grant execute on cnvdbo8.ffff to cnvdbc8; create synonym cnvdbc8.aaaa for cnvdbo8.aaaa; create synonym cnvdbc8.bbbb for cnvdbo8.bbbb; create synonym cnvdbc8.cccc for cnvdbo8.cccc;

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏沃趣科技

配置表 | 全方位认识 sys 系统库

在上一篇《初相识 | 全方位认识 sys 系统库》中,我们针对sys 系统库做了一个不痛不痒的开端,是不是觉得太简单了?别急,本期我们将为大家带来系列第二篇《配...

1043
来自专栏跟着阿笨一起玩NET

Asp.Net Session的三种方法及Web.Config设置

转载:http://user.gw-ec.com/login/safelog/redirectt?session=so%2f%2bSjyZURMOe54xgk%...

692
来自专栏枕边书

初探PHP多进程

准备 我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli...

1978
来自专栏https://www.cnblogs.com/L

【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle

Spark中Shuffle的机制可以分为HashShuffle,SortShuffle。

853
来自专栏菩提树下的杨过

mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for opera

昨天把mysql里所有table的varchar字段的字符集,批量换成了utf8mb4/utf8mb4_unicode_ci ,以便能保存一些emoji火星文 ...

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

简单分析shared pool(三) (r5笔记第94天)

提到shared pool,都会不由得和sql语句的解析过程联系起来,因为shared pool所做的主要工作就是解析sql语句,生成执行计划,在之前的两篇中...

2727
来自专栏散尽浮华

Oracle数据库重做日志及归档日志的工作原理说明

Oracle数据库重做日志及归档日志的工作原理: lgwr进程将redo log buffer中的重做数据写入到redo log中,此时的redo log分组,...

1909
来自专栏数据和云

查看SQL执行计划的方法及优劣

作者 | 胡佳伟:云和恩墨技术工程师,有多年数据库优化经验,在一线执行过多个包括通信、保险等行业的优化项目。

922
来自专栏MySQL内核

MySQL InnoDB引擎表空间(tablespace)

现在的MySQL版本已经可以实现自动扩展表空间,其中innodb_file_per_table默认是开启的,表示为每一张新建的表创建表空间,这样可以避免ibda...

2124
来自专栏Java架构师历程

sql必会基础4

多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个...

782

扫码关注云+社区