根据system_privilege_map中的select name,系统已被授予:
SELECT ANY TABLE
......以及许多其他*任何表格。
明白地运行
select * from the_table;
select * from the_table;
...获得给定的回复:
第1行的错误: ORA-00942:表或视图不存在
我可以以该用户身份登录并运行相同的命令。
我正在运行假设我应该能够运行查询(在这种情况下选择)agaisnt一般用户的数据库表。我的假设是否正确,如果是,我该怎么做?
答案 0 :(得分:8)
正如之前的回复所说,您可以在对象名称前加上模式名称:
SELECT * FROM schema_name.the_table;
或者您可以使用同义词(私人或公共):
CREATE (PUBLIC) SYNONYM the_table FOR schema_name.the_table;
或者您可以发出alter session命令将默认架构设置为您想要的架构:
ALTER SESSION SET current_schema=schema_name;
请注意,这只是设置默认架构,相当于使用schema_name
为所有(非限定)对象名称添加前缀。您仍然可以使用不同的模式名称为对象添加前缀,以从另一个模式访问对象。使用SET current_schema
不会影响您的权限:您仍然拥有您登录的用户的权限,而不是您设置的架构。
答案 1 :(得分:7)
如果the_table由用户“some_user”拥有,则:
select * from some_user.the_table;
答案 2 :(得分:4)
你需要这样做:
SELECT * FROM schema_name.the_table;
或使用SYNONYMs ......
CREATE SYNONYM the_table FOR schema_name.the_table;