Sathya est correct, en ce que la syntaxe CREATE DATABASE LINK
ne permet pas de créer un lien de base de données dans un autre schéma. CEPENDANT ...
Contournement
Il EST possible de créer un lien de base de données dans le schéma d'un autre utilisateur, tant que anotheruser
a CREATE DATABASE LINK
privilège, et l'utilisateur que vous êtes connecté en tant a CREATE ANY PROCEDURE
privilège.
Voici la solution que j'utilise:
create procedure anotheruser."tmp_doit_200906121431"
is
begin
execute immediate '
create database link remote_db_link
connect to remote_user
identified by remote_password
using ''remote_db'' ';
end;
/
begin
anotheruser."tmp_doit_200906121431";
end;
/
drop procedure anotheruser."tmp_doit_200906121431"
/
Faisons que Déroulez. Tout d'abord, je crée une procédure dans le schéma anotherusers
; cette procédure contient l'instruction CREATE DATABASE LINK
que je veux exécuter.
Lorsque la procédure est exécutée, il fonctionne en tant que propriétaire de la procédure, de sorte que la déclaration CREATE DATABASE LINK
est exécutée par anotheruser
.
Le nom de la procédure n'est pas important, sauf que je dois m'assurer qu'il n'est pas en conflit avec un nom d'objet existant. J'utilise des lettres minuscules (en insérant le nom de la procédure entre guillemets), en utilisant "tmp" pour marquer cet objet comme "temporaire", et en utilisant le yyyymmddhh24miss actuel comme partie du nom de la procédure. (J'exécute généralement une requête de DBA_OBJECTS pour vérifier qu'un nom_objet_appariant n'existe pas.)
Pour une fonction d'administration de type «one-off», il s'agit d'une solution de contournement viable. Je préfère cela à l'autre alternative: enregistrer le mot de passe de l'autre utilisateur, changer le mot de passe, se connecter en tant qu'utilisateur et réinitialiser le mot de passe d'un autre utilisateur.)
La réponse "sélectionné" indique "vous ne pouvez pas créer un lien de base de données dans le schéma d'un autre utilisateur". Ce n'est pas exactement vrai. Il y a une "syntaxe Oracle" qui peut accomplir cela. Vois ma réponse. – spencer7593