Oracle批量赋权的方法可以实现一些特定的功能:两个用户,其中一个用户A 没有数据结构,实现通过用户A访问用户B的所有数据,只有读取数据的权限,看不到B用户数据结构,只能查询。

一、建立只读用户A:

    --Createtheuser createuserA identifiedby"" defaulttablespaceLMIS temporarytablespaceLMIS profileDEFAULT;

二、授予A相应的权限(在有DBA权限用户B下执行)

    grantcreatesessiontoA; grantcreatesynonymtoA;

三、以拥有者B身份执行下面的语句(commit 窗口)

    setheadingOFF; setfeedbackOFF; SPOOLc:\temp\A.SQL;--放文件的路径 SELECT'createsynonym'||tname||'forB.'||tname||';'FROMTAB; SPOOLOFF;

四、转变为被赋权用户A的身份,执行

    @c:\temp\A.SQL

五、赋予用户A权限(在B用户COMMIT窗口下执行)

    setheadingOFF; setfeedbackOFF; SPOOLc:\grantA.SQL; SELECT'grantselect,insert,update,delete,REFERENCES,INDEXon'|| TNAME||'toA;' FROMTABWHERETABTYPE<>'VIEW' UNIONALL SELECT'grantselect,insert,update,deleteon'||OBJECT_NAME|| 'toA;' FROMUSER_OBJECTS WHEREOBJECT_TYPE='VIEW'UNIONALL SELECT'grantEXECUTEon'||OBJECT_NAME||'toA;' FROMUSER_OBJECTS WHEREOBJECT_TYPE='PROCEDURE'UNIONALL SELECT'grantEXECUTEon'||OBJECT_NAME||'toA;' FROMUSER_OBJECTS WHEREOBJECT_TYPE='FUNCTION'UNIONALL SELECT'grantselecton'||OBJECT_NAME||'toA;' FROMUSER_OBJECTS WHEREOBJECT_TYPE='SEQUENCE'; SPOOLOFF;

六、执行脚本

    @c:\grantA.SQL;

【编辑推荐】

三种oracle赋权

oracle树查询的实现

oracle查询当前时间的实现

带您深入了解Oracle临时表

教您如何在oracle中存图片