登录了一个自己创建的用户,然后去创建一个公有同义词,明明各个步骤没有问题,但在其他表空间就是访问不了,使用system等用户却可以访问!
1.确定自己的这个用户是否具有创建公有同义词的权限,不然会提示权限不足
语法:CREATE [OR REPLACE] PUBLIC SYNONYM synonym_name FOR object_name;
例:CREATE OR REPLACE PUBLIC SYNONYM p_Stock_Received FOR Stock_Received;
使用其他的用户(如SYSTEM)授予你要创建公有同义词的用户的权限
语法:GRANT CREATE PUBLIC SYNONYM TO user_name;
例:GRANT CREATE PUBLIC SYNONYM TO A_hr;
授权之后,再重新创建公有同义词,这个时候就创建成功了!
2.使用其它用户登录,去访问这个公有同义词,然后找不到这个同义词
语法:SELECT * FROM synonym_name;
例:SELECT * FROM p_Stock_Received;
3.切换回来,给表授予公有的权限
语法:GRANT SELECT ON synonym_name TO PUBLIC;
例:GRANT SELECT ON p_Stock_ReceivedTO PUBLIC;
重新查询一下公有同义词,就查询到数据了!