E:\app\用户名\product\11.2.0\dbhome_1\RDBMS\ADMIN\cdfixed.sql
文件下有这么一段代码,没看懂
create or replace view v_$session as select * from v$session;
create or replace public synonym v$session for v_$session;
grant select on v_$session to select_catalog_role;
我自己写了段测试
create or replace view my_temp1 as select t.cent_name,t.hq_org_code from temp t;
create or replace public synonym my_temp2 for my_temp1;
create or replace public synonym temp for my_temp1;
temp表有四个字段的实际表,select * from temp 时,依旧是四个字段,
如果“create or replace public synonym temp for my_temp1;”生效,那应该是两个字段。
回到v$session 和 v_$session问题,我觉得“create or replace public synonym v$session for v_$session;” 毫无意义,或者说,我压根看不懂这句想表达什么。
目前测试的结果:
当表名或视图名与同义词名相同时,则同义词的作用失效。
测试新总结:本人之前创建的是public,公有同义词,如果删除public,创建会报错。如果更换用户,是可以查到public同义词的,结果是两个个字段。如果该用户创建了temp,则会覆盖公有同义词的temp。类似于局部变量覆盖全局变量的关系。