Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Связка нескольких баз Oracle. [D7]


Страницы:   1 2

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]

оракл трогать не могу - не мой он... Все програмно нужно сделать...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо