2012-09-27 19 views
10

Abbiamo un DBMS Oracle (11g) e la seguente configurazione:Come selezionare in Oracle usando un DBLINK che si trova in uno schema diverso?

  • A DB utente "MYUSER"
  • due schemi "MYUSER" e "SCHEMA_B"
  • utente "MYUSER" possono accedere "SCHEMA_B "e ha letto i permessi sulle sue tavole
  • un link pubblico DB "DB_LINK" che si trova in "SCHEMA_B"
  • il DB_LINK funziona quando si utilizza il DB "SCHEMA_B" direttamente

Domanda: Quando si accede come "MYUSER", qual è la sintassi corretta per accedere alle tabelle utilizzando il collegamento DB di "SCHEMA_B"? È possibile farlo affatto?

Ho già provato diverse costellazioni, che non tutto ha funzionato:

select * from [email protected]"DB_LINK" 
select * from [email protected]"SCHEMA_B"."DB_LINK" 
select * from [email protected]_B."DB_LINK" 
select * from [email protected]_B.DB_LINK 
select * from [email protected]_LINK 
select * from "SCHEMA_B"[email protected]_LINK 

Il messaggio di errore che ricevo è: ORA-02019. 00000 - "descrizione connessione per database remoto non trovato"

Grazie per qualsiasi suggerimento!

risposta

11

Non credo sia possibile condividere un collegamento di database tra più di un utente ma non tutti. Sono privati ​​(per un solo utente) o pubblici (per tutti gli utenti).

Un buon modo per creare una vista in SCHEMA_B che espone la tabella a cui si desidera accedere tramite il collegamento al database. Ciò ti darà anche un buon controllo su chi è autorizzato a selezionare dal link del database, dato che puoi controllare l'accesso alla vista.

fare così:

create database link db_link... as before; 
create view mytable_view as select * from [email protected]_link; 
grant select on mytable_view to myuser; 
+0

Per condividere un database di link a tutti gli utenti utilizzare la direttiva 'PUBBLICA'. CREA PUBBLICO DATABASE LINK ... – Rusty1

Problemi correlati