【发布时间】:2014-05-22 11:27:28
【问题描述】:
我正在尝试对现有表进行分区,而不使用 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;
我遇到以下错误:
错误报告:
ORA-01031: 权限不足
ORA-06512:在“SYS.DBMS_REDEFINITION”,第 50 行
ORA-06512:在“SYS.DBMS_REDEFINITION”,第 1343 行
ORA-06512:在第 2 行
01031. 00000 - “权限不足”
你能帮我吗,我在这里缺少什么特权? 或者是否知道包 DBMS_REDEFINITION 的第 50 行中执行了哪个操作?
【问题讨论】:
-
您在运行
DBMS_REDEFINITION.start_redef_table之前是否已经创建了TABLE_1? -
是的,已经创建好了。
-
你在这方面有什么运气吗? (即我面临同样的......)
-
我刚刚发现 DBMS_REDEFINITION 包中的过程的权限要求在 oracle db 版本之间有所不同。在 11.2.0.1 版本中,它需要大量
create any全局授权,而在 11.2.0.4 版本中,只需要create模式本地授权。 -
我也遇到了同样的错误。你们中的任何人都可以帮我解决同样的问题吗?
标签: oracle plsql oracle10g dbms-redefinition