Sql 在有限的时间内授予表权限
我有一个作为特定用户运行的plsql作业,我需要执行一个授权,以授予该用户对特定表的访问权限,直到作业完成。这项工作所需时间从不超过30分钟 我的问题是,在oracle中,是否可以授予特定用户在有限时间内访问表的权限,还是应该在作业完成后创建另一个函数来撤销特权?我做了几次快速搜索,在这上面找不到任何东西。有人知道这是否可能吗Sql 在有限的时间内授予表权限,sql,oracle,plsql,permissions,grant,Sql,Oracle,Plsql,Permissions,Grant,我有一个作为特定用户运行的plsql作业,我需要执行一个授权,以授予该用户对特定表的访问权限,直到作业完成。这项工作所需时间从不超过30分钟 我的问题是,在oracle中,是否可以授予特定用户在有限时间内访问表的权限,还是应该在作业完成后创建另一个函数来撤销特权?我做了几次快速搜索,在这上面找不到任何东西。有人知道这是否可能吗 如果我能在30分钟内完成全部授权,那就太棒了。在plsql中有一个名为grantAccess()的方法。它允许您给出授予用户访问权限的秒数 因此,如果您想让他们访问,比如
如果我能在30分钟内完成全部授权,那就太棒了。在plsql中有一个名为grantAccess()的方法。它允许您给出授予用户访问权限的秒数 因此,如果您想让他们访问,比如说,一年,您可以编写以下内容:
rightSideUser.grantAccess(31536000)
来自@ksa的评论是对此的正确答案。您应该创建一个具有所需权限的新用户,并在该架构上定义此过程。然后,您可以
向需要运行该过程的角色或用户授予执行该过程的权限。虽然这是默认设置,但您也可以显式指定AUTHID DEFINER
。本质上,这意味着无论是谁调用该过程,该过程都以定义者的身份运行。它可以使您免于任何时间/日程安排问题,并且您的继任者可以清楚地了解权限。如果您不想在每次调用时都指定模式,可以定义一个同义词。查看Oracle调度程序。是否仅为此作业创建一个特殊用户?您使用的是dbms_作业还是dbms_调度程序?我建议在授予用户访问权限时,使用函数/过程在表(Access_选项卡)中插入id、开始时间和结束时间。部署每15分钟运行一次的作业,该作业根据表中指定的结束时间(访问选项卡)撤消访问。这将减少取消访问的手动干预。