@hubery
OK~!我明白了,查了下资料,原来是需要给用户授予一个角色:
SQL> grant EXECUTE_CATALOG_ROLE to hubery;
授权成功。
我使用其他自己创建的用户则报:
SQL> exec dbms_redefinition.can_redef_table(user,'t',dbms_redefinition.cons_use_pk);
BEGIN dbms_redefinition.can_redef_table(user,'t',dbms_redefinition.cons_use_pk); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 50 列:
PLS-00201: 必须声明标识符 'DBMS_REDEFINITION'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
弱弱的问下,这个例子是在什么用户下操作的,我用sysdba用户操作了报错:
SQL> exec dbms_redefinition.can_redef_table(user,'t',dbms_redefinition.cons_use_pk);
BEGIN dbms_redefinition.can_redef_table(user,'t',dbms_redefinition.cons_use_pk); END;
*
第 1 行出现错误:
ORA-12087: 在 "SYS" 拥有的表上不允许联机重新定义
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 137
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1478
ORA-06512: 在 line 1
很好,赞一个!
老大说了看到好文要评论,更好赞一个!