Sathya, CREATE DATABASE LINK
sözdiziminde, başka bir şemada veritabanı bağlantısı oluşturulmasına izin vermediğinden, doğrudur. ANCAK ... Bu
Pratik Çözüm
sürece anotheruser
CREATE DATABASE LINK
ayrıcalığı olduğu gibi, başka bir kullanıcının şemasındaki bir veritabanı bağlantı oluşturmak için mümkün IS ve siz gibi bağlanır kullanıcı CREATE ANY PROCEDURE
ayrıcalığı vardır.
Burada kullandığım geçici çözüm var:
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"
/
en emin gevşemek edelim. İlk olarak, anotherusers
şemasında bir prosedür oluşturuyorum; Bu yordam, çalıştırmak istediğim CREATE DATABASE LINK
ifadesini içerir.
Yordam yürütüldüğünde, yordamın sahibi olarak çalışır, böylece CREATE DATABASE LINK
bildirimi anotheruser
tarafından yürütülür.
prosedürün adı
Ben varolan herhangi bir nesne adıyla çakışmaması emin olmak için gereken durum dışında önemli değildir. Bu nesneyi "geçici" olarak işaretlemek için "tmp" i kullanarak ve yordam adının bir parçası olarak geçerli yyyymmddhh24miss'i kullanarak küçük harfleri (yordam adını çift tırnak içine alarak) kullanırım. (Genellikle eşleşen bir object_name olmadığını kontrol etmek için DBA_OBJECTS sorgusu çalıştırıyorum.)
"Bir kerelik" türü yönetici işlevi için bu geçerli bir çözümdür. Bunu diğer alternatife tercih ediyorum: kullanıcı şifresini değiştirmek, şifreyi değiştirmek, kullanıcı olarak bağlanmak ve kurtarıcının şifresini yeniden kaydetmek.)
"Seçilen" yanıt, "başka bir kullanıcının şemasında veritabanı bağlantısı oluşturamıyor" diyor. Bu tam olarak doğru değil. Bunu başarabilecek "Oracle sözdizimi" var. Cevabımı gör. – spencer7593