我正在尝试对现有表进行分区,而不使用 Oracle 删除和重新创建它。

我的 Oracle 10g 支持应用程序中的 DBMS_REDEFINITION 包

我已按照 oracle 文档中的说明向用户授予了所有必要的权限。

grant CREATE ANY TABLE to DDUSER;
grant ALTER ANY TABLE to DDUSER;
grant DROP ANY TABLE to DDUSER;
grant LOCK ANY TABLE to DDUSER;
grant SELECT ANY TABLE to DDUSER;
grant execute on dbms_redefinition to DDUSER;

我能够执行以下程序
begin
Dbms_Redefinition.Can_Redef_Table('DDUSER', 'TABLE');
end;
This throws no error neither any result (Assuming this is as expected)

但是当我想跑的时候
BEGIN
  DBMS_REDEFINITION.start_redef_table(
    uname      => 'DDUSER',
    orig_table => 'TABLE',
    int_table  => 'TABLE_1');
END;

我收到以下错误:



你能帮我吗,我在这里缺少什么特权?
或者是否知道在 DBMS_REDEFINITION 包的第 50 行中执行了哪个操作?

最佳答案

试试这个:

grant DROP ANY INDEX to DDUSER;
grant CREATE ANY INDEX to DDUSER;
如果表包含索引(很可能就是这种情况),您必须创建新索引。

关于oracle - DBMS_REDEFINITION.start_redef_table 权限不足错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23805521/

10-10 02:47