我正在尝试对现有表进行分区,而不使用 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/