Oracle实现授权用户truncatetable
发展说,当被dwetl商店用户表下,没有权限操作。谷歌检查并发现Oracle帐户不能直接授予表的截断权限。怎么发生的
在商店用户下,准备测试数据
>创建表的SQL z_truncate_t(身份证号码);
表的创建。
插入SQL >从双成z_truncate_t选择1;
1行创建。
提交;
提交完整的。
SQL SELECT * FROM z_truncate_t >;
身份证件
----------
一
SQL >
2,更粗暴和不安全的做法。
截断的通常做法是将一个直接值分配给任何一个表。
已授予滴任何表dwetl;
格兰特接替。
SQL >
SQL >查询、插入、删除、更新z_truncate_t到dwetl;
格兰特接替。
SQL >
完成工作后,需要马上收回权限,因为掉了任何表权限太大,一粗心就会造成错误删除,等到时间不晚就哭了。
SQL >撤销掉dwetl任何表;
撤销成功。
SQL >取消选择,插入,删除,对shop.plan6_templet_node_edit从dwetl更新;
撤销成功。
SQL >
3,更安全的方法
p_truncate建立存储过程,执行TRUNCATETABLE z_truncate_t在商店,然后给另一个用户dwetl这个存储过程的执行权。
存储过程p_truncate如下:
创建或替换程序p_truncate作为
开始
执行immediate'truncate表z_truncate_t;
结束;
建立存储过程:
SQL >
创建或替换程序p_truncate作为
开始
执行immediate'truncate表z_truncate_t;
4结束;
5 /
程序创建。
SQL >
执行存储过程的权限授予给dwetl,和增删改查表的权限,因为截断后插入,更新和删除。
SQL >授予执行p_truncate到dwetl;
格兰特接替。
SQL >
SQL >查询、插入、删除、更新z_truncate_t到dwetl;
格兰特接替。
SQL >
通过dwetl账户登录,执行存储过程的效果看,我们看到商店的用户表z_truncate_t已清空。同时通过存储过程证明该方案是可行的,可以对其他用户的表执行截断表操作。
视图
shop.p_truncate()调用SQL >;
呼叫完成。
SQL SELECT * FROM shop.z_truncate_t >;
没有行选择
SQL >
以上是Oracle执行计划truncatetable授权用户,希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。