Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168462
  • 博文数量: 31
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-28 06:36
个人简介

还在学习oracle的路上。

文章分类

全部博文(31)

文章存档

2020年(9)

2018年(3)

2017年(6)

2016年(11)

2015年(2)

我的朋友

分类: Oracle

2016-09-13 15:00:23

背景,我是运维一台数据库服务器的管理员,经理呢有几次要我创建一个用户,这个用户有什么权限呢,只能查询应用用户下面的表,不能创建表啦,还有什么别的权限,可能有的同学就说这个简单啦,创建一个select权限的用户就得了。是,那样就好了,经理呢又附加了一个要求,要求在plsql等客户端中可见这些表,这样这个事情,就有点小麻烦咯。当然啊创建一次,我就手动的创建了,可是今天居然有第二次,嗯!我就写了一个小脚本,算是半自动吧。脚本内容如下:
define  userb=qryuser3
define  userbpwd=qryuser1
define  userbtbs=XK_DATA
define    usera=xk
define    sername=pb1
--
create user &&userb identified  by &&userbpwd;
grant connect to  &&userb;
grant create synonym to &&userb;
alter user &&userb default tablespace  &&userbtbs;
--
conn sys/oracle@&&sername as sysdba
select 'grant  select on '||OWNER|| '.'||TABLE_NAME|| ' to  &&userb ;' from dba_tables where owner=UPPER('&&usera');
spool temp1.sql
spool OFF


spool synonym.sql
select 'create  synonym '||TABLE_NAME||' for ' ||owner||'.'||table_name ||';'  from dba_tables where owner=upper('&&usera');
spool OFF
conn  &&userb/&&userbpwd@&&sername

这个会在你当前登录数据库目录下面创建temp1.sql和synonym.sql的文件  只留下你需要的那些语句,temp1.sql需要在sys用户下面执行,synonym.sql 需要在你创建的用户下面执行,这样就能达到要求啦。好的今天就先写到这里吧。
阅读(1788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~