Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

Связка нескольких баз 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.045 c
2-1139213846
типа прогер
2006-02-06 11:17
2006.02.26
Как закрыть БД?


2-1139571644
Shuma
2006-02-10 14:40
2006.02.26
Обмен по TCP


9-1124963548
red_readers
2005-08-25 13:52
2006.02.26
Помогите с сюжетом


6-1132258793
Иван12345
2005-11-17 23:19
2006.02.26
Передача информации о постоянной активности приложения


8-1127057492
maVladimir
2005-09-18 19:31
2006.02.26
Коррекция цвета в Windows