2017-02-05 3 views
1

Я ищу клиентский инструмент базы данных, который позволяет мне запускать тот же запрос на нескольких идентичных базах данных на многих серверах.Инструмент для выполнения одного и того же запроса sql на нескольких серверах Oracle и агрегированном результате

У нас есть еще 100 серверов, каждый из которых имеет некоторые пользовательские данные, которые необходимо вытащить и агрегировать из одних и тех же таблиц (наложения) на нескольких серверах.

Я хочу, чтобы иметь возможность выполнить запрос, как этот

select COL1,COL2 from MY_TABLE 

Этот запрос вернет мне одну или несколько строк. Все это необходимо объединить в одну таблицу.

Любые инструменты, которые являются автономными или основанными на веб-сайтах или с открытым исходным кодом или лицензированными Пожалуйста, предложите.

ответ

1

Вы можете использовать базу данных Oracle и создавать ссылки на базы данных на своих серверах. Для каждой базы данных вам нужна одна ссылка на базу данных. Затем вы можете запустить следующий запрос.

 
select COL1,COL2 
    from [email protected] 
union all 
select COL1,COL2 
    from [email protected] 
union all 
select COL1,COL2 
    from [email protected] 
union all 
select COL1,COL2 
    from [email protected] 

Эта база данных должна быть создана на сервере, с которым другие databaes может быть достигнуто, оно может быть произвольной базы данных, например, Oracle Database Express Edition. Express Edition ничего не стоит.

Другая возможность заключается в использовании базы данных MS Access. Для таблицы в удаленной базе данных вы можете создать таблицу в базе данных Access, которая подключена к удаленной таблице. Я использовал этот подход несколько раз, но на данный момент я не помню подробностей.

Я бы предпочел решение Oracle. Вы можете создать представление, содержащее выбранное выше. Вы можете использовать Oracle SQL для запроса представления.

.

+0

Спасибо - это хороший вариант - однако установка на фактическую базу данных и добавление связей БД потребует прав администратора (которые у меня нет в качестве разработчика приложений/DevOps). Кроме того, это может быть слишком много dblinks. Я ищу что-то, что может работать удаленно и подключаться к каждой БД отдельно. –

1

Моя программа с открытым исходным кодом Method5 была создана для таких задач.

Программа работает на сервере Oracle и может быть вызван любым клиентом SQL, как это:

select * from table(m5('select COL1,COL2 from MY_TABLE')); 

возвращает столбцы с просьбой, а также дополнительную колонку под названием DATABASE_NAME. Он собирает данные параллельно, обрабатывает исключения и сохраняет данные в таблице.

Существует необязательный второй параметр, который позволяет указать список целей. По умолчанию Method5 запрашивает все настроенные базы данных, но вы можете ограничить результаты, как это:

select * from table(m5('select COL1,COL2 from MY_TABLE', 'dev,test,acme%,db1234')); 

Там же процедура, M5_PROC, что дает вам больше контроля над вещами, как, какие таблицы для хранения результатов в и будет ли работать асинхронно , На практике вам может показаться довольно сложным, чтобы надежно запросить сотни баз данных. Это не редкость для небольшого количества баз данных, которые недоступны по причинам, не зависящим от вашего контроля. Это может быть сложно, но Method5 дает вам возможность справляться с этими ситуациями.

В некотором роде Method5 представляет собой упакованную версию ответа @ miracle173. Если вам просто нужен разовый запрос, лучше всего пойти с его решением. Но если вам нужно что-то более надежное, которое будет вызываться часто и должно обрабатывать любой код, который вы на него набрасываете, тогда стоит потратить время на установку и настройку метода5.И если вам нужна помощь в установке или настройке, вы можете напрямую связаться со мной.

+0

Спасибо - это требует от вас быть администратором и быть установленным в базе данных? Можно ли это сделать удаленно? –

+0

@ software.wikipedia Программа должна быть установлена ​​и настроена администратором базы данных в одной основной базе данных. И есть небольшой одноразовый скрипт, который должен быть запущен на 100 удаленных базах данных для создания пользователя. Этот удаленный сценарий должен запускаться как SYSDBA, вы можете запускать его удаленно в зависимости от того, как REMOTE_LOGIN_PASSWORDFILE установлен в каждой базе данных. Программа была разработана для администраторов баз данных, но есть способы разрешить другим пользователям доступ к ней, см. [Подробное руководство пользователя] (https://method5.github.io/user_guide/#services_for_non_dbas). (Мне нужно исправить ссылку на этой странице, я скоро это сделаю.) –

+0

Спасибо за подробности. Помогает. –

Смежные вопросы