rename表后, 同义词synonym失效问题

今日,因为生产线上要迁移大表,做历史表。在做rename表后,程序报错。rename之后,不仅synonym失效,grant的授权也会失效。下面看测试步骤和结论:

SQL> create user test2 identified by "test2";

User created.

SQL> grant create session ,resource to test2;

Grant succeeded.

SQL> create public synonym t1 for test1.t1;

Synonym created.

SQL> grant select on test1.t1 to test2;

Grant succeeded.

SQL> conn test2/test2
Connected.

SQL> select * from t1;

ID
----------
test




SQL> create table test1.t1_new as select * from test1.t1;

Table created.

SQL> select * from test1.t1_new;

ID
----------
test

SQL> alter table test1.t1 rename to t1_hist;

Table altered.

SQL> select table_name,owner from dba_tables where table_name='T1_HIST';

TABLE_NAME                     OWNER
------------------------------ ------------------------------
T1_HIST                        TEST1

SQL> alter table test1.t1_new rename to t1;

Table altered.

SQL> select table_name,owner from dba_tables where table_name='T1';

TABLE_NAME                     OWNER
------------------------------ ------------------------------
T1                             TEST1

SQL> conn test2/test2
Connected.
SQL> select * from t1;
select * from t1
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> alter table test1.t1 rename to t1_new;

Table altered.

SQL> alter table test1.t1_hist rename to t1;

Table altered.

SQL> conn test2/test2    
Connected.
SQL>  select * from test1.t1;

ID
----------
test

SQL> select * FROM T1;

ID
----------
test



trigger测试:

SQL> 
SQL> create or replace trigger test1.after_insert_t1
  2  after insert on test1.t1 for each row
  3  declare
  4  begin 
  5  insert into test1.t2 (id) values(:new.id);
  6  end;
  7  /

Trigger created.

SQL> 
SQL> 
SQL> insert into test1.t1(id) values('tr1');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test1.t2;

ID
----------
test
tr1

SQL> alter table test1.t1 rename to t1_hist;

Table altered.

SQL> alter table test1.t1_new rename to t1;

Table altered.

SQL> insert into test1.t1(id) values('tr2');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test1.t1;

ID
----------
test
tr2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-phantom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值