[英]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.