作为重新定义表的一部分,我运行了这个
DECLARE
l_num_ers PLS_INTEGER;
BEGIN
DBMS_REDEFINITION.copy_table_dependents(
uname => 'myuser',
orig_table => 'mytable',
int_table => 'redef',
copy_indexes => DBMS_REDEFINITION.cons_orig_params,
copy_triggers => TRUE,
copy_constraints => TRUE,
copy_privileges => TRUE,
ignore_errors => FALSE,
num_errors => l_num_ers);
DBMS_OUTPUT.put_line('l_num_ers=' || l_num_ers);
END;
/得到了错误
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
ORA-06512: at "SYS.DBMS_REDEFINITION", line 752
ORA-06512: at "SYS.DBMS_REDEFINITION", line 1698那我该怎么解决呢?相同的代码在另一个数据库上工作,我发现唯一的区别是用户myuser在表中没有select。
我做到了
Select PRIVILEGE, GRANTEE from dba_tab_privs where owner = 'MYUSER' and TABLE_NAME = 'MYTABLE';找出不同之处。
是取消我自己对表的特权的解决方案吗?
发布于 2017-11-21 13:50:48
在您自己的表上拥有SELECT特权是不必要的。
在早期版本中,对您自己的对象授予特权会在字典中添加额外的行,并且它被认为是一个错误,在较新的版本中得到了修正。
本说明说明了这一点以及为什么重新定义失败的原因如下:
运行数据库管理系统时出错_REDEFINITION.COPY_表格_家属(医生ID 1345539.1)
撤销你自己对象上的特权。
https://dba.stackexchange.com/questions/191397
复制相似问题