Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.038 c
11-1120230168
Dodfr
2005-07-01 19:02
2006.02.26
KOL TListView select item problem


2-1138874187
Juice
2006-02-02 12:56
2006.02.26
Rave Reports, проблемы с кириллицей


1-1137077035
DelphiLexx
2006-01-12 17:43
2006.02.26
TChart со стилем TPoint


6-1132249033
zjuka
2005-11-17 20:37
2006.02.26
Менять прокси через дельфи


2-1137971881
clampo
2006-01-23 02:18
2006.02.26
Начём нарисовать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский