(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来获得。