Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Возможно ли выгрузить данные быстрее?  [new]
ОлегН
Member

Откуда:
Сообщений: 20
Есть БД подключенная через dblink
из неё нужно переписать данные.

Если сделать select count(*) from table@dblink за один месяц,
то запрос подсчитывает за 25 минут. около 30млн. записей.

Если же сделать
insert into conn_t_apus (f1,f2..) select f1,f2.. from table@dblink за один месяц
то он висит уже более 10 часов и не заканчивается.


1. Нормально ли такое поведение?
если нет, на что можно посмотреть, но в консоли серверов доступа нет.

2. Возможно ли как-то оптимизирован запрос\выборку?

данные нужно запросить за несколько лет

3. Как будет быстрей получить все данные? По запросам по месяцу или одним запросом за несколько лет?
21 июн 12, 08:55    [12750188]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
лучше exp/imp
21 июн 12, 09:01    [12750220]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
ОлегН
Member

Откуда:
Сообщений: 20
у меня есть подключение к DB1,
DB1 через dblink подключено к DB2

напрямую к DB2 подключиться нельзя.

Разве можно сделать imp из DB2?
21 июн 12, 09:26    [12750340]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
ОлегН
напрямую к DB2 подключиться нельзя.

объясните слово "нельзя"... то есть задание такое что нужно именно dblink-ом взять данные? или просто не можете? почему нельзя просто в tnsnames.ora написать строку подкл. для 2 базы?
21 июн 12, 10:08    [12750628]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Nikolay Savvinov
Member

Откуда: Россия
Сообщений: 98
ОлегН,

select count(*) from table и select f1, f2.. from table это два разных запроса с двумя (потенциально) разными планами. В частности, если это "толстая" таблица с первичным ключом, то оптимизатор может подсчитать количество строк через сканирование одного только индекса ПК, что будет заметно дешевле.

В любом случае, надо смотреть что именно висит и на чем -- через трассировку, V$SESSION_WAIT, real-time SQL monitoring или что-то иное что есть под рукой. Если нет доступа вообще ни к чему, то надо либо выбить себе доступ, либо перевалить задачу на ту инстанцию, у которой он есть.
21 июн 12, 10:10    [12750640]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Camper
Member

Откуда:
Сообщений: 174
ОлегН,

1) "select count(*) from table" и "select f1,f2.. from table", не один и тот же запрос, планы могут отличаться.
2) Могут быть проблемы с передачей большого количества данных по сети. По умолчанию SDU (Session Data Unit) выставлен в 2к, можно поменять до 32к: выставляются соответствующие параметры на листенере и на клиенте.
21 июн 12, 10:17    [12750690]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
powertelecom
Member

Откуда:
Сообщений: 43
Camper,

SQL> help copy

COPY
----

Copies data from a query to a table in the same or another
database. COPY supports CHAR, DATE, LONG, NUMBER and VARCHAR2.

COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query

where database has the following syntax:
username[/password]@connect_identifier


http://docs.oracle.com/cd/B10500_01/server.920/a90842/apb.htm

SQL*Plus performs a commit at the end of each successful COPY.
If you set the SQL*Plus SET COPYCOMMIT variable to a positive value n,
SQL*Plus performs a commit after copying every n batches of records.
The SQL*Plus SET ARRAYSIZE variable determines the size of a batch.
21 июн 12, 10:45    [12750979]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
sauban
Member

Откуда: Kazan
Сообщений: 23
IMPDP используя NETWORK_LINK
21 июн 12, 12:36    [12751968]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ОлегН
у меня есть подключение к DB1,
DB1 через dblink подключено к DB2

напрямую к DB2 подключиться нельзя.

Разве можно сделать imp из DB2?

запросами извлекать данные из-за двух линков, конечно, можно, но есть проблемы. проблемы разные и неприятные.
я бы советовал переписать алгоритм так, чтобы он (дважды) работал только через один линк.
1) материализовали ваш транспортный набор данных на промежуточном сервере
2) перепёрли его на целевую базу
ну а если и это не удовлетворит (а, может такое быть по причинам, например сетевым), то, как вам уже говорили - в
файл (варианты см. выше), носитель каюру - он (на оленях) доставит
22 июн 12, 12:33    [12759149]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
pectopatop
Member

Откуда:
Сообщений: 765
orawish
носитель каюру - он (на оленях) доставит

Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!
22 июн 12, 13:27    [12759794]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
ОлегН
Есть БД подключенная через dblink
из неё нужно переписать данные.

Если сделать select count(*) from table@dblink за один месяц,
то запрос подсчитывает за 25 минут. около 30млн. записей.

Что получится, если выполнить
select /*+ DRIVING_SITE(TB) */ count(*) from table@dblink TB
?

insert /*+ APPEND */ into conn_t_apus (f1,f2..) select f1,f2.. from table@dblink
?

Выполните на обеих базах
SELECT * FROM v$version

и покажите результаты.
22 июн 12, 13:39    [12759904]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
pectopatop
orawish
носитель каюру - он (на оленях) доставит

Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!
22 июн 12, 13:51    [12760010]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Динозавр Фидошный обыкновенный
Guest
pectopatop
orawish
носитель каюру - он (на оленях) доставит

Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!

Вообще это очень-очень старая концепция, опубликованная в ФИДО в 90-е годы, когда DVD были еще далеким светлым будущим.
Текст, приближенный к первоисточнику, выглядит так:
http://www.anekdot.ru/id/-9931823/
22 июн 12, 14:14    [12760228]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Динозавр Фидошный обыкновенный
pectopatop
пропущено...

Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!

Вообще это очень-очень старая концепция, опубликованная в ФИДО в 90-е годы, когда DVD были еще далеким светлым будущим.
Текст, приближенный к первоисточнику, выглядит так:
http://www.anekdot.ru/id/-9931823/

ну а жизнь показывает, что реализация старых анекдотов (в ~металле) способна нехилые деньги приносить.
напр. голденгейт
22 июн 12, 15:25    [12760955]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Bfink
Member

Откуда: Москва
Сообщений: 2797
pectopatop
orawish
носитель каюру - он (на оленях) доставит

Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!


выгружать и загружать очень долго!
24 июн 12, 01:42    [12765591]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
pectopatop
Member

Откуда:
Сообщений: 765
Bfink
pectopatop
Говорят КамАЗ, до краев груженый DVD-дисками, даже по бездорожью имеет пропускную прособность выше (!) оптоволокна толстенного магистрального!


выгружать и загружать очень долго!

А если с /*+ parallel */ ?
24 июн 12, 16:51    [12766487]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
проходил мимо...
Member

Откуда: от верблюда
Сообщений: 1178
Раз уж пошёл трёп про пропускную способность, ещё один бородатый баян
http://stfw.ru/forums.php?m=posts&q=7063
24 июн 12, 17:00    [12766510]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
powertelecom
Camper,

http://docs.oracle.com/cd/B10500_01/server.920/a90842/apb.htm

SQL*Plus performs a commit at the end of each successful COPY.
If you set the SQL*Plus SET COPYCOMMIT variable to a positive value n,
SQL*Plus performs a commit after copying every n batches of records.
The SQL*Plus SET ARRAYSIZE variable determines the size of a batch.

В SQL*Plus ARRAYSIZE по умолчанию всего лишь 10 - для ускорения копирования нужно поставить значение побольше (можно поэкспериментировать на небольших объемах (rownum < .... ) и установить подходящее значение).
24 июн 12, 17:16    [12766550]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Деев И.,

15
24 июн 12, 20:36    [12766946]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли выгрузить данные быстрее?  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
да, пардон, запамятовал...
24 июн 12, 21:17    [12767081]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить