要创建只读用户,您必须设置与拥有要访问的表的用户不同的用户。
如果仅创建用户并向只读用户授予SELECT权限,则需要在每个表名之前添加模式名。为了避免这种情况,您基本上有两个选择:
在会话中设置 当前模式 :
ALTER SESSION SET CURRENT_SCHEMA=XYZ
为所有表创建同义词:
CREATE SYNONYM READER_USER.TABLE1 FOR XYZ.TABLE1
因此,如果您没有被告知所有者模式的名称,则基本上可以使用三个选项。最后一个应该一直有效:
查询当前架构设置:
SELECT SYS_CONTEXT(‘USERENV’,’CURRENT_SCHEMA’) FROM DUAL
列出您的同义词:
SELECT * FROM ALL_SYNONYMS WHERE OWNER = USER
研究所有表(某些著名的标准架构除外):
SELECT * FROM ALL_TABLES WHERE OWNER NOT IN (‘SYS’, ‘SYstem’, ‘CTXSYS’, ‘MDSYS’);