繁体   English   中英

从oracle中的另一个模式中选择数据

[英]SELECT data from another schema in oracle

我想执行一个查询,该查询从与数据库连接中指定的模式不同的模式中选择数据(相同的Oracle服务器,相同的数据库,不同的模式)

我有一个python应用程序与Oracle服务器通信。 它打开与数据库(服务器/模式)A的连接,并对该数据库中的表执行选择查询。

我尝试过以下方法:

select .... 
from pct.pi_int, pct.pi_ma, pct.pi_es
where ...

但我得到:

ORA-00942: table or view does not exist

我还尝试用括号括起架构名称:

from [PCT].pi_int, [PCT].pi_ma, [PCAT].pi_es

我明白了:

ORA-00903: invalid table name

使用来自Django应用程序内部的cx_Oracle python模块执行查询。

可以这样做,还是应该建立新的数据库连接?

您用于连接数据库的用户(本例中的用户A )是否对PCT模式中的对象具有SELECT访问权限? 假设A没有此访问权限,您将得到“表或视图不存在”错误。

最有可能的是,您需要DBA授予用户A访问PCT模式中所需的任何表A权限。 就像是

GRANT SELECT ON pct.pi_int
   TO a;

完成后,您应该能够使用语法pct.pi_int PCT模式中的对象,如您在问题中最初演示的那样。 括号语法方法不起作用。

除了拨款,您还可以尝试创建同义词。 它将避免每次都指定表所有者架构。

从连接架构:

CREATE SYNONYM pi_int FOR pct.pi_int;

然后你可以查询pi_int为:

SELECT * FROM pi_int;

根据您用于连接数据库的架构/帐户,我怀疑您缺少对用于连接数据库的帐户的授权。

在数据库中以PCT帐户身份连接,然后授予您正在使用该帐户的select访问权限的帐户。

grant select on pi_int to Account_used_to_connect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM