作为Sqlplus中的System,如何查询其他用户的表?

5 sql oracle sqlplus ora-00942

根据system_privilege_map中的select name,系统已被授予:

SELECT ANY TABLE
Run Code Online (Sandbox Code Playgroud)

......以及许多其他*任何表格.

平稳地跑步

select * from the_table;
select * from the_table;
Run Code Online (Sandbox Code Playgroud)

...获得给定的回复:

第1行的错误:ORA-00942:表或视图不存在

我可以以该用户身份登录并运行相同的命令.

我正在运行假设我应该能够运行查询(在这种情况下选择)agaisnt一般用户的数据库表.我的假设是否正确,如果是,我该怎么做?

小智 9

如前面的响应所述,您可以在对象名称前加上模式名称:

SELECT * FROM schema_name.the_table;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用同义词(私人或公共):

CREATE (PUBLIC) SYNONYM the_table FOR schema_name.the_table;
Run Code Online (Sandbox Code Playgroud)

或者,您可以发出alter session命令将默认架构设置为所需的架构:

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

请注意,这只是设置默认架构,相当于为所有(非限定)对象名称添加前缀schema_name.您仍然可以使用不同的模式名称为对象添加前缀,以从另一个模式访问对象.使用SET current_schema不会影响您的权限:您仍然拥有您登录的用户的权限,而不是您已设置的架构.


Ton*_*ews 7

如果the_table由用户"some_user"拥有,则:

select * from some_user.the_table;
Run Code Online (Sandbox Code Playgroud)