![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Связка нескольких баз Oracle. [D7]
Paha © (2005-12-29 11:21:00)Добрый день.
Есть на Oracle несколько баз информационных, и одна как бы результирующая. Програма периодически запрашивает информационные базы, и результат INSERT-ит в результирующую.
Подскажите плиз, как связывать через ADO оракловые базы для осуществления таких запросов (INSERT INTO база1 SELECT база2), и возможно ли вообще такое?
Если ADO не подходит, то что использовать?
Огромное спасибо.
Val (2005-12-30 14:27:00) [1]:) вопрос относился к слову "сервера". Имхо, вполне достаточно своего, клиентского, локального.
evvcom (2005-12-30 08:58:00) [2]
> > :) И еще необходим доступ к файлу сервера 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-29 17:52:00) [3]>[17] evvcom © (29.12.05 15:18)
> :) И еще необходим доступ к файлу сервера tnsnames.ora
зачем?
ANB (2005-12-29 17:23:00) [4]
> P.S. Варианты с написанием dblink-а не пройдут, по своим
> внутренним причинам.
По каким ? Все равно ты будешь выполнять запросы к информационным серверам, следовательно, параметры коннекта тебе и так дать должны (хотя бы на чтение - а тебе этого будет достаточно). На результирующем сервере тебе придется вставлять данные, следовательно минимум - это права на запись тоже у тебя будут. Права на создание дб линков выпросить можно (если есть доступ на запись, то это уже не страшно), плюс ты их можешь создавать не публичные при запуске программы и удалять при выходе.
evvcom (2005-12-29 16:09:00) [5]
> я так понял что с использованием ADO я могу только сохранять в DBF
сохранять в DBF можешь, но это лишнее. У тебя есть 2 TADODataSet один открываешь, читаешь из него данные построчно и пишешь в другой. Никаких DBF.
Paha (2005-12-29 16:06:00) [6]Вообщем из разговоров я так понял что с использованием ADO я могу только сохранять в DBF, а потом из него уже писать в другую базу.
Какие еще методы могут быть для достижения поставленной задачи? Подскажите плиз, очень надо...
P.S. Варианты с написанием dblink-а не пройдут, по своим внутренним причинам.
roottim (2005-12-29 15:32:00) [7]
> Paha же сказал, что доступа к серверам у него нет
Это отговорки... все решается на нужном уровне. Раз нет доступа, проблему ставь начальнику. Его задача договорится с владельцами серверов для предоставления необходимых данных. А результ-сервер сам должен быть в этом заинтересован и админ об этом должен позаботиться.
>Ты думаешь админ такой тупой, что всем привилегий безграничных надавал?
я не сказал что она есть, я сказал должна быть для реализации задуманного.
evvcom (2005-12-29 15:18:00) [8]
> на результирующем сервере для создания dblink тебе необходима
> привелегия
> create database link
:) И еще необходим доступ к файлу сервера tnsnames.ora
Paha же сказал, что доступа к серверам у него нет. Ты думаешь админ такой тупой, что всем привилегий безграничных надавал?
2Paha: Кто отвечает за сбор данных на "результирующем" сервере? Если ты, то почему у тебя нет никаких полномочий? Если не ты, то какого тебе ставят такую задачу? Кто за сервер отвечает, у того пусть и болит голова.
roottim (2005-12-29 14:29:00) [9]
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 механизм
Paha (2005-12-29 13:48:00) [10]seg (29.12.05 12:09) [12]
ну да, постановка именно такая...
то есть, я тебя правильно понял, селекчу все с помощью Query2, допустим, в DBGrid, а оттуда уже подхватываю другой Query2 во вторую базу?
dioman (2005-12-29 12:27:00) [11]
> Sergey13 © (29.12.05 12:09) [13]
а фиг его знает может и так... админа нет чтоб спросить
Sergey13 (2005-12-29 12:09:00) [12]2[10] dioman © (29.12.05 12:04)
Это вроде синтаксис для как раз ДБлинков вроде.
seg (2005-12-29 12:09:00) [13]Если надо на клиенте, то добавляешь коннекшены, квери, перегружаешь результаты запросов на клиент, оттуда копируешь на результирующий сервак.
Получается Москва-Питер через Владивосток, но раз такая постановка задачи...
ANB (2005-12-29 12:05:00) [14]
> Paha © (29.12.05 11:58) [8]
Если программно - то придется все прокачивать через клиента. Это медленнее и писать дольше. Объясни начальству, что тебе нужны DB Link - и с результирующей базы в информационные. Через них все будет работать быстрее и писать намного проще.
dioman (2005-12-29 12:04:00) [15]> Paha © (29.12.05 11:58) [8]
это я не к той ветке написал... сорь...
допустим у тебя есть 2 tns имени.... для разных серваков
для них прошла аутентификация (если пользователи и пароли совпадают, то достаточно аутентифицироваться на одной базе... )
и обращаться к таблицам в виде tablespace_name.table_name@tns
dioman (2005-12-29 12:01:00) [16]
> Paha © (29.12.05 11:58) [8]
что именно?
в оracle пожно подключится к серверу с достаточными правами и посмотреть состояние сессии все подключения запросы и т.д.
Paha (2005-12-29 11:58:00) [17]Sergey13:
Задаче именно сделать все програмно. Свой оракл мне тут не дадут... :(
Dioman:
хм... а можно попопулярнее?... Чего-то я не совсем понял... :-\
Dioman (2005-12-29 11:40:00) [18]проще всего когда один пароль и пользователь к нескольким базам...
тогда проще всего обращаешься к таблицам так:
table@<tns>
например
select * from persons@main p, dep@fin f where p.id = f.id
Sergey13 (2005-12-29 11:36:00) [19]2[5] Paha © (29.12.05 11:28)
>оракл трогать не могу - не мой он...
Ни один?
Может можно попробовать сделать свой сервер только для этого. Т.е. без данных, с одними ДБЛинками.
>Все програмно нужно сделать...
Ну дык по стандартной схеме - читаешь из источника и пишешь в приемник. Можно по одной записи писать, можно скрипт сформировать и одним махом запузырить?
Paha (2005-12-29 11:28:00) [20]оракл трогать не могу - не мой он... Все програмно нужно сделать...