oracle的rename操作需要注意事项

(1)查看测试表ORACLE_TEST对象信息

SELECT * FROM dba_objects WHERE object_name='ORACLE_TEST';

 (2)查看用户APP_SCOTT对表ORACLE_TEST的访问权限

SELECT * FROM dba_tab_privs WHERE table_name='ORACLE_TEST';

(3)创建一个临时表ORACLE_TEMP,和表ORACLE_TEST的表结构一样

create table SCOTT.ORACLE_TEMP
(
  ID       NUMBER(2) not null,
  NAME     VARCHAR2(2),
  PUSH_RES VARCHAR2(256) default ' ' not null
);

(4)查看该表上的用户权限信息

SELECT * FROM dba_tab_privs WHERE table_name='ORACLE_TEMP';

(5)重命名表ORACLE_TEST为ORACLE_BAK,表ORACLE_TEMP为ORACLE_TEST

alter table SCOTT.ORACLE_TEST rename  to ORACLE_BAK;
alter table SCOTT.ORACLE_TEMP rename  to ORACLE_TEST;

(6)重命名完成后重新查看表ORACLE_TEST对象信息

可以看到,表重名名后同义词失效,需要重新编译同义词。

alter synonym APP_SCOTT.ORACLE_TEST compile;

 (7)查看表ORACLE_TEST上的用户权限

(8)查看表ORACLE_BAK上的用户权限

可以看到rename后,表ORACLE_TEST的权限丢失,需要重新授权。

grant select,update,delete,insert on SCOTT.ORACLE_TEST to APP_SCOTT;

 

动作:alter table a rename to b;

注意:如果a上原来有同义词,同义词失效;a上的用户权限也会丢失。最新的用户权限会根据b来获得。

猜你喜欢

转载自blog.csdn.net/weixin_41561862/article/details/109275991