簡體   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