无需使用用户前缀即可从其他用户访问Oracle架构对象

Jon*_*Jon 4 oracle oracle10g oracle11g

我有一个用户,他们的帐户有很多表.让我们说UserA.我能做到SELECT * FROM TABLE,一切都很好.如果我以另一个用户UserB登录,但是使该用户成为只读连接我无法访问该表,我必须使用SELECT * FROM UserA.TABLE

有没有办法在Oracle的某个地方允许UserB访问UserA的表而不必在表名之前放置用户前缀?

a_h*_*ame 11

以UserB身份登录后,运行以下语句:

ALTER SESSION SET current_schema = UserA;
Run Code Online (Sandbox Code Playgroud)

之后,您不必为表名添加前缀.

如果您不想手动运行,可以创建一个自动执行此操作的登录触发器.


mar*_*ord 11

您还可以通过在表上创建同义词来执行此操作:

CREATE SYNONYM TABLE FOR UserA.TABLE;
Run Code Online (Sandbox Code Playgroud)