Форум: "Базы";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
ВнизСвязка нескольких баз Oracle. Найти похожие ветки
← →
Paha © (2005-12-29 11:21) [0]Добрый день.
Есть на Oracle несколько баз информационных, и одна как бы результирующая. Програма периодически запрашивает информационные базы, и результат INSERT-ит в результирующую.
Подскажите плиз, как связывать через ADO оракловые базы для осуществления таких запросов (INSERT INTO база1 SELECT база2), и возможно ли вообще такое?
Если ADO не подходит, то что использовать?
Огромное спасибо.
← →
Sergey13 © (2005-12-29 11:24) [1]А это именно разные инстансы или все в одном, но просто разные схемы?
← →
Paha © (2005-12-29 11:25) [2]Физически сервера разные
← →
Вольный Стрелок © (2005-12-29 11:27) [3]лучше через линки в самом оракле вяжи, тогда даже на клиента тащить ничего не надо
← →
Sergey13 © (2005-12-29 11:27) [4]Тогда можно линки настроить. Как - не скажу, не пробовал сам ни разу.
← →
Paha © (2005-12-29 11:28) [5]оракл трогать не могу - не мой он... Все програмно нужно сделать...
← →
Sergey13 © (2005-12-29 11:36) [6]2[5] Paha © (29.12.05 11:28)
>оракл трогать не могу - не мой он...
Ни один?
Может можно попробовать сделать свой сервер только для этого. Т.е. без данных, с одними ДБЛинками.
>Все програмно нужно сделать...
Ну дык по стандартной схеме - читаешь из источника и пишешь в приемник. Можно по одной записи писать, можно скрипт сформировать и одним махом запузырить?
← →
Dioman © (2005-12-29 11:40) [7]проще всего когда один пароль и пользователь к нескольким базам...
тогда проще всего обращаешься к таблицам так:
table@<tns>
например
select * from persons@main p, dep@fin f where p.id = f.id
← →
Paha © (2005-12-29 11:58) [8]Sergey13:
Задаче именно сделать все програмно. Свой оракл мне тут не дадут... :(
Dioman:
хм... а можно попопулярнее?... Чего-то я не совсем понял... :-\
← →
dioman © (2005-12-29 12:01) [9]
> Paha © (29.12.05 11:58) [8]
что именно?
в оracle пожно подключится к серверу с достаточными правами и посмотреть состояние сессии все подключения запросы и т.д.
← →
dioman © (2005-12-29 12:04) [10]> Paha © (29.12.05 11:58) [8]
это я не к той ветке написал... сорь...
допустим у тебя есть 2 tns имени.... для разных серваков
для них прошла аутентификация (если пользователи и пароли совпадают, то достаточно аутентифицироваться на одной базе... )
и обращаться к таблицам в виде tablespace_name.table_name@tns
← →
ANB © (2005-12-29 12:05) [11]
> Paha © (29.12.05 11:58) [8]
Если программно - то придется все прокачивать через клиента. Это медленнее и писать дольше. Объясни начальству, что тебе нужны DB Link - и с результирующей базы в информационные. Через них все будет работать быстрее и писать намного проще.
← →
seg (2005-12-29 12:09) [12]Если надо на клиенте, то добавляешь коннекшены, квери, перегружаешь результаты запросов на клиент, оттуда копируешь на результирующий сервак.
Получается Москва-Питер через Владивосток, но раз такая постановка задачи...
← →
Sergey13 © (2005-12-29 12:09) [13]2[10] dioman © (29.12.05 12:04)
Это вроде синтаксис для как раз ДБлинков вроде.
← →
dioman © (2005-12-29 12:27) [14]
> Sergey13 © (29.12.05 12:09) [13]
а фиг его знает может и так... админа нет чтоб спросить
← →
Paha © (2005-12-29 13:48) [15]seg (29.12.05 12:09) [12]
ну да, постановка именно такая...
то есть, я тебя правильно понял, селекчу все с помощью Query2, допустим, в DBGrid, а оттуда уже подхватываю другой Query2 во вторую базу?
← →
roottim © (2005-12-29 14:29) [16]
create database link srv1
connect to user1 identified by pasw1
using "tns_srv1"
на результирующем сервере для создания dblink тебе необходима привелегияcreate database link
в схеме (т.е. в юзер-пространстве) куда будеш данные собирать. (ну или если позволят то вообще public dblink создать)tns_srv1
- tns_name инф-сервера записанное на результируюем сервере.
Соответственно user1 это имя и пароль для доступа к инф серверу
Для твоей задачи велосипед выдумывать не надо. Db link это как раз твой случай.
(причем можно связать не только оракловые машины - HS)
Ну уж если создавать линки ты неможеш и договорится с админами тоже,
то только через промежуточный формат Dbf, Txt, MemTable
Если объемы всавок большие советую пользовать DirectLoad механизм
← →
evvcom © (2005-12-29 15:18) [17]
> на результирующем сервере для создания dblink тебе необходима
> привелегия
> create database link
:) И еще необходим доступ к файлу сервера tnsnames.ora
Paha же сказал, что доступа к серверам у него нет. Ты думаешь админ такой тупой, что всем привилегий безграничных надавал?
2Paha: Кто отвечает за сбор данных на "результирующем" сервере? Если ты, то почему у тебя нет никаких полномочий? Если не ты, то какого тебе ставят такую задачу? Кто за сервер отвечает, у того пусть и болит голова.
← →
roottim © (2005-12-29 15:32) [18]
> Paha же сказал, что доступа к серверам у него нет
Это отговорки... все решается на нужном уровне. Раз нет доступа, проблему ставь начальнику. Его задача договорится с владельцами серверов для предоставления необходимых данных. А результ-сервер сам должен быть в этом заинтересован и админ об этом должен позаботиться.
>Ты думаешь админ такой тупой, что всем привилегий безграничных надавал?
я не сказал что она есть, я сказал должна быть для реализации задуманного.
← →
Paha © (2005-12-29 16:06) [19]Вообщем из разговоров я так понял что с использованием ADO я могу только сохранять в DBF, а потом из него уже писать в другую базу.
Какие еще методы могут быть для достижения поставленной задачи? Подскажите плиз, очень надо...
P.S. Варианты с написанием dblink-а не пройдут, по своим внутренним причинам.
← →
evvcom © (2005-12-29 16:09) [20]
> я так понял что с использованием ADO я могу только сохранять в DBF
сохранять в DBF можешь, но это лишнее. У тебя есть 2 TADODataSet один открываешь, читаешь из него данные построчно и пишешь в другой. Никаких DBF.
← →
ANB © (2005-12-29 17:23) [21]
> P.S. Варианты с написанием dblink-а не пройдут, по своим
> внутренним причинам.
По каким ? Все равно ты будешь выполнять запросы к информационным серверам, следовательно, параметры коннекта тебе и так дать должны (хотя бы на чтение - а тебе этого будет достаточно). На результирующем сервере тебе придется вставлять данные, следовательно минимум - это права на запись тоже у тебя будут. Права на создание дб линков выпросить можно (если есть доступ на запись, то это уже не страшно), плюс ты их можешь создавать не публичные при запуске программы и удалять при выходе.
← →
Val © (2005-12-29 17:52) [22]>[17] evvcom © (29.12.05 15:18)
> :) И еще необходим доступ к файлу сервера tnsnames.ora
зачем?
← →
evvcom © (2005-12-30 08:58) [23]
> > :) И еще необходим доступ к файлу сервера tnsnames.ora
>
> зачем?
CREATE DATABASE LINK <dblinkname> USING ’connect string’
USING ’connect string’
Specify the service name of a remote database. If you specify only the database
name, then Oracle implicitly appends the database domain to the connect string to create a complete service name. Therefore, if the database domain of the remote database is different from that of the current database, you must specify the complete service name.
И откуда ж ему взять этот "service name", если не из tnsnames.ora? Может, конечно, если подставить строку подключения, которую прописываем в tnsnames.ora, тоже прокатит, не знаю, не пробовал. Если так, тогда ой.
← →
Val © (2005-12-30 14:27) [24]:) вопрос относился к слову "сервера". Имхо, вполне достаточно своего, клиентского, локального.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.036 c