2017-05-04 64 views
-1

我正在使用Oracle 11G。如何在像select * from dbname.schemaname.table這樣的查詢中提供dbname和模式名稱。我想知道語法。如何從正確的數據庫和模式中選擇?

如果我寫的查詢select * from employees,我得到的錯誤

表或視圖不存在

我相信我有有的名稱爲dbname.schemaname.tablename,但我不知道語法。有人可以幫忙嗎?

+0

爲什麼在連接字符串中沒有提供DBname?只有在引用不同於登錄用戶的架構時才需要架構。數據庫鏈接可以使用@ so來引用。'schema.table @ link'從ALL_DB_LINKS中選擇*將顯示登錄用戶可訪問的鏈接。也許DBLink是你之後的東西? – xQbert

+0

你確定桌子是否存在?該表是一個可能在缺省HR模式下的表,*如果它已經安裝了*,那麼如果你沒有以HR登錄,你可以從hr.employees中選擇*但只有當它存在於那裏,有正確的權限來查看它。爲什麼你認爲你需要'dbname',是基於不同的數據庫平臺? –

回答

0

首先,如果你想從另一個架構查詢,你可以做這樣的:

select * from HR.Employees 

其中HR是模式的名稱,任何方式,你必須授予SELECT特權模式從讀另外一個,或者授予DBA到執行這樣

grant dba to my_user; 

其中my_user查詢的模式是,你從執行您的查詢的用戶。

如果你想閱讀其他數據庫中的數據不是要連接去,你可以使用這樣的數據庫鏈接做到這一點:

create database link "my_link" 
connect to "HR" identified by "hr" 
using '(DESCRIPTION = 
     (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521)) 
     ) 
     (CONNECT_DATA = 
     (SID = ORACLE) 
     ) 
    )' 
/

其中主機爲其他數據庫安裝和SID是服務器數據庫的名稱。

,然後執行查詢是這樣的:

select * from [email protected]_Link; 
0

創建公共同義詞SYNONYM您的選擇之前,反對

CREATE OR REPLACE PUBLIC SYNONYM suppliers 
FOR app.suppliers; 

是:

select * from app.suppliers; 

SYNONYM後:

select * from suppliers; 
相關問題