在用A用户创建视图的时候,引用了sys用户下的一张视图,创建时报错 ORA-01720: 不存在 'SYS.DBA_ARGUMENTS' 的授权选项。然后我登录sys用户,grant select on DBA_ARGUMENTS to A,但还是报ORA-01720的错误,经过查询,解决方法如下:
在grant select on DBA_ARGUMENTS to A 后面加上 with grant option,这样就解决了问题。
在Oracle数据库系统中,用户的权限有两种:system privilege和object privilege
System privilege enables users to perform. particular actions in the database.
Object privilege enables users to access and manipulate a specific object
System privilege比如有:create session、create table、create synonym、alter session等用于在数据库中执行特定的操作。
Object privilege比如给某些对象(table,index,function..)授予执行某些特定的操作(select,update,delete)。
对对象权限和系统权限有个大概了解后,再来看看with admin option和with grant option是干什么的。
如果执行GRANT命令为某个SCHEMA赋对象权限时带上了WITH GRANT OPTION,那么该SCHEMA就可以将该对象权限授予他人,否则不行。
如果执行GRANT命令为某个SCHEMA赋系统权限时带上了WITH ADMIN OPTION, 那么该SCHEMA就可以将该系统权限授予他人,否则不行。
需要注意点就是,WITH GRANT OPTION是在赋对象权限时使用,WITH ADMIN OPTION是在赋系统权限时使用。