背景,我是运维一台数据库服务器的管理员,经理呢有几次要我创建一个用户,这个用户有什么权限呢,只能查询应用用户下面的表,不能创建表啦,还有什么别的权限,可能有的同学就说这个简单啦,创建一个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) |