问题描述
问题1
------------
我有两个用户,即user1和user2。
user1有1000对象。user2需要访问所有对象,为此,我必须向user2授予访问权限。之后,我希望user2访问user1对象,而无需在objectname之前使用schemaname即user1。
我不明白怎么写 .... 你能帮我吗?
问题2
-----------
我想在运行时动态地为架构中的所有对象创建同义词... 如何创建 ???
------------
我有两个用户,即user1和user2。
user1有1000对象。user2需要访问所有对象,为此,我必须向user2授予访问权限。之后,我希望user2访问user1对象,而无需在objectname之前使用schemaname即user1。
我不明白怎么写 .... 你能帮我吗?
问题2
-----------
我想在运行时动态地为架构中的所有对象创建同义词... 如何创建 ???
专家解答
“user2需要访问所有对象” 与 “我希望user2在不使用schemaname的情况下访问user1对象” 不同
所以首先,你需要做助学金。您可以编写脚本,例如:
连接用户1
选择 '授予插入,更新,删除,在' | | object_name | | '上选择到' |:user2 | | ';'
来自用户对象
其中object_type in ('TABLE','VIEW')
联盟全部
选择 “授予选择on” | | object_name | | ”至“ ||: user2 | | ”;'
来自用户对象
其中object_type in ('序列','物化视图')
联盟全部
选择 “授予在 '| | object_name | |” 执行到 “||: user2 | |”;'
来自用户对象
其中object_type in ('PROCEDURE','FUNCTION','PACKAGE');
它将生成一个脚本来执行一组授权
对于第二个,您要么做同义词,要么可以发出:
更改会话集current_schema = user1;
这可以 (例如) 通过user2的登录触发器来完成。如果您想要同义词,只需复制上面授予脚本中的模型,例如
连接用户1
选择 '创建或替换同义词' ||: user2 | | '。' | | object_name | | '用于' | | object_name | | ';'
来自用户对象
其中object_type in ('TABLE','VIEW','SEQUENCE','实体化视图 ','PROCEDURE','FUNCTION','PACKAGE');
所以首先,你需要做助学金。您可以编写脚本,例如:
连接用户1
选择 '授予插入,更新,删除,在' | | object_name | | '上选择到' |:user2 | | ';'
来自用户对象
其中object_type in ('TABLE','VIEW')
联盟全部
选择 “授予选择on” | | object_name | | ”至“ ||: user2 | | ”;'
来自用户对象
其中object_type in ('序列','物化视图')
联盟全部
选择 “授予在 '| | object_name | |” 执行到 “||: user2 | |”;'
来自用户对象
其中object_type in ('PROCEDURE','FUNCTION','PACKAGE');
它将生成一个脚本来执行一组授权
对于第二个,您要么做同义词,要么可以发出:
更改会话集current_schema = user1;
这可以 (例如) 通过user2的登录触发器来完成。如果您想要同义词,只需复制上面授予脚本中的模型,例如
连接用户1
选择 '创建或替换同义词' ||: user2 | | '。' | | object_name | | '用于' | | object_name | | ';'
来自用户对象
其中object_type in ('TABLE','VIEW','SEQUENCE','实体化视图 ','PROCEDURE','FUNCTION','PACKAGE');
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




