oracle中对象归属于创建者,其他用户需要操作对象,则需要授权。
通常授权语句如下:
在创建者下执行(其中TABLExxx是需要授权的表,userxxx是被授权者)
GRANT SELECT,UPDATE,INSERT,DELETE ON TABLExxx TO userxxx
但是授权完后,为了方便查询,还需要创建同义词。否则查询还需带上创建者,假设owner是TABLExxx的所有者,没有同义词的情况下,查询如下
select * from owner.TABLExxx
创建同义词的目的是为owner.TABLExxx这个对象起一个通用的别名TABLExxx,使得其他用户查询时不再需要在对象前面带上所有者,一般创建同义词语句如下:
CREATE SYNONYM userxxx.TABLExxx FOR owner.TABLExxx
可通过以下语句查用户对象权限:
SELECT * FROM all_tab_privs t WHERE t.GRANTEE = 'userxxx' AND t.table_name = 'TABLExxx'
可通过以下语句查同义词:
SELECT * FROM SYS.ALL_SYNONYMS t WHERE t.owner = 'userxxx' AND t.table_name = 'TABLExxx'