Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在有限的时间内授予表权限_Sql_Oracle_Plsql_Permissions_Grant - Fatal编程技术网

Sql 在有限的时间内授予表权限

Sql 在有限的时间内授予表权限,sql,oracle,plsql,permissions,grant,Sql,Oracle,Plsql,Permissions,Grant,我有一个作为特定用户运行的plsql作业,我需要执行一个授权,以授予该用户对特定表的访问权限,直到作业完成。这项工作所需时间从不超过30分钟 我的问题是,在oracle中,是否可以授予特定用户在有限时间内访问表的权限,还是应该在作业完成后创建另一个函数来撤销特权?我做了几次快速搜索,在这上面找不到任何东西。有人知道这是否可能吗 如果我能在30分钟内完成全部授权,那就太棒了。在plsql中有一个名为grantAccess()的方法。它允许您给出授予用户访问权限的秒数 因此,如果您想让他们访问,比如

我有一个作为特定用户运行的plsql作业,我需要执行一个授权,以授予该用户对特定表的访问权限,直到作业完成。这项工作所需时间从不超过30分钟

我的问题是,在oracle中,是否可以授予特定用户在有限时间内访问表的权限,还是应该在作业完成后创建另一个函数来撤销特权?我做了几次快速搜索,在这上面找不到任何东西。有人知道这是否可能吗


如果我能在30分钟内完成全部授权,那就太棒了。

在plsql中有一个名为grantAccess()的方法。它允许您给出授予用户访问权限的秒数

因此,如果您想让他们访问,比如说,一年,您可以编写以下内容:

rightSideUser.grantAccess(31536000) 

来自@ksa的评论是对此的正确答案。您应该创建一个具有所需权限的新用户,并在该架构上定义此过程。然后,您可以
向需要运行该过程的角色或用户授予执行该过程的权限。虽然这是默认设置,但您也可以显式指定
AUTHID DEFINER
。本质上,这意味着无论是谁调用该过程,该过程都以定义者的身份运行。它可以使您免于任何时间/日程安排问题,并且您的继任者可以清楚地了解权限。如果您不想在每次调用时都指定模式,可以定义一个同义词。

查看Oracle调度程序。是否仅为此作业创建一个特殊用户?您使用的是dbms_作业还是dbms_调度程序?我建议在授予用户访问权限时,使用函数/过程在表(Access_选项卡)中插入id、开始时间和结束时间。部署每15分钟运行一次的作业,该作业根据表中指定的结束时间(访问选项卡)撤消访问。这将减少取消访问的手动干预。