Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Oracle > репликация |
Автор: Petro123 27.6.2007, 15:07 |
Необходимо синхронизировать 2 базы Oracle. В принципе наверное это можно сделать вручную, однако зачем изобретать велосипед. Какие средства репликации предлагает Oracle? Есть ли у кого ссылки на литературу по этой теме? |
Автор: Sqlninja 27.6.2007, 15:14 |
Изобретать велосипед точно незачем. Oracle предлагает Oracle Advanced Replication и Oracle Streams (рекомендую первое). Тема достаточно обширная, поэтому рассказывать основы здесь будет нецелесообразно. Более подробной и полной информации чем в http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96567/toc.htm не встречал. По ней все и делал. Будут конкретные вопросы - welcome. |
Автор: Petro123 28.6.2007, 09:30 |
А на русском чего нибудь нет? |
Автор: LSD 28.6.2007, 09:45 |
Возможно описание репликации есть в переводных книгах по Oracle. Плюс есть переводная документация от RdTex. Но лучше забыть про русский, и читать английские доки: дешевле, проще, актуальней. |
Автор: Petro123 29.6.2007, 12:04 |
Немного почитал каких то обрывочных сведений. Поправьте если не прав: Существует возможность создавать так называемые материализованные представления, т.е. снимки определенных наборов данных, причем эти снимки будут автоматически обновляться при изменении исходных данных. Таким образом достигается синхронизация между мастер таблицей и снимком. Не могу понять если есть 2 базы, то получается, что мастер таблица должна быть в одной, а сам снимок в другой, так что ли. Не пойму алгоритм, с чего начать. Как делать снимок вроде ясно, но как его дальше использовать? |
Автор: LSD 29.6.2007, 14:59 |
Не обязательно, можеть быть синхронизация между несколькими мастер таблицами. Но эти таблицы должны юыть полностью одинаковыми. |
Автор: Petro123 7.7.2007, 10:00 |
Не могу понять если нужно синхронизировать 2 базы, то получается, что мастер таблица должна быть в одной, а сам снимок в другой, так что ли? |
Автор: DimW 9.7.2007, 08:32 |
из базы А в базу Б делается репликация. в базе А есть таблица АХ. в базе А есть материализованная втюха(снимок) АХМ который содержет данные из таблицы АХ (select * from AX). из базы Б нужно обратиться к мат. вьюхи AXM(select * from AXM) которая находится в базе А и перелить(долить) данные в таблицу БХ базы Б. |
Автор: Petro123 9.7.2007, 15:21 | ||||||
А что нельзя, так чтобы Снимок был в базе Б, тогда бы и доливать не надо
Вот вот, нельзя ли поподробнее. Как из одной базы обратиться к другой. Вроде как нужно создать связь между базами, затем обращаться через эту связь, если можно опишите подробнее или дайте ссылку, пожалуйста
То есть опять нужно реплицировать снимок в базе А (он ведь идентичен мастер таблице из А ) в таблицу в базе Б, опять тоже самое - не вижу смысла так делать, или я чего-то не догоняю... |
Автор: DimW 9.7.2007, 17:21 | ||
да это я туплю, только из отпуска вышел, мысли совсем не о том... ща приведу в порядок попытаюсь ответить более осмысленно ![]() |
Автор: Petro123 10.7.2007, 14:03 |
Ок, особенно меня интересует как делать запросы к таблицам,кот нах-ся в разных базах |
Автор: DimW 10.7.2007, 15:11 | ||||||
для начала нужно создать db link(более подробную инфу смотри в оракловой доке):
его создаешь в базе из которой будешь выполнять селекты. допустем в базе db_name есть таблица table_name. селект пишешь к ней так:
на основе этого селеста можешь построить материализованное представление которое будет синхранезировано с таблицей table_name. |
Автор: Petro123 11.7.2007, 13:45 |
Связь создал... Далее пытаюсь из базы 1 обратиться к базе 2, сообщение: TNS: Невозможно разрешить имя службы Вроде в TNS обе базы прописаны, в чем может быть проблема? Добавлено через 6 минут и 51 секунду Вопрос снимается, нашел ошибку, спасибо Добавлено через 7 минут и 5 секунд Вопрос снимается, нашел ошибку, спасибо Добавлено через 11 минут и 54 секунды Еще вопрос: Попытался создать снимок получил сообщение Таблица Table не имеет протокола снимка Что это значит? |
Автор: Petro123 11.7.2007, 14:04 |
Извиняюсь снова забыл в первой базе создать журнал ... |
Автор: Petro123 11.7.2007, 15:23 |
Возник еще вопрос: Обновление происходит с какой то периодичностью Как сделать чтобы обновление снимка происходило в определенное время или по желанию (при запуске какой-нибудь процедуры) |
Автор: Petro123 11.7.2007, 15:53 |
Еще вопросик: как сделать чтобы снимок обновлялся в определенное время или вообще по желанию пользователя из процедуры? Да и чем отличается снимок от мат представления и что лучше использовать? |
Автор: DimW 11.7.2007, 17:21 | ||||
в более ранних версиях оракла был снимок, кажется с 9-й или последних 8-х вырсии стал мат. представлением.
из процедуры что то вроди: sbms_snapshort.refrash('mv_name'); в определенное время: выше сказанное пихаешь в джобу. при изменениях в таблице: устанавливается при создании мат. вьюхи. если не разберешься топиши, завтра смогу сказать поточнее. |
Автор: Petro123 12.7.2007, 15:50 |
Попробовал Execute DBMS_Mview.Refresh(View); - ошибка ORA-01041: внутренняя ошибка. hostdef расширение не существует Что за ошибка? |
Автор: LSD 12.7.2007, 16:16 |
Судя по тому, что пишет народ - енто баг. Иногда помогает переустановка. |
Автор: Petro123 13.7.2007, 06:54 |
Еще на опцию On Commit ругается, типа отсутствует ключевое слово. Почему? |
Автор: DimW 13.7.2007, 09:56 |
наверное потому что опция пишется так: REFRESH ON COMMIT. и водще выложи ddl мат. вьюхи. |
Автор: Petro123 17.7.2007, 13:56 |
CREATE SNAPSHOT smcard Build Deferred Refresh On Commit as SELECT * FROM supermag.smcard@essen01 ругается типа нельзя установить атрибут регенерации On Commit для мат представления. И еще как сделать чтобы снимок обновлялся скажем каждый день, например, в 8:00 |
Автор: Petro123 17.7.2007, 14:12 |
Когда пытаюсь сделать снимки на таблицы, содержащие большое количество строк Oracle ругается, что ...невозможно увеличить временный сегмент до в разделе... Что за ошибка |
Автор: LSD 17.7.2007, 14:52 |
Нехватает места в табличном пространстве, которое используется для временного сегмента. Увелич его, или сделай авторасширяемым. |
Автор: DimW 17.7.2007, 15:40 | ||||
Petro123, саветую тебе найти эту книгу http://forum.ru-board.com/topic.cgi?forum=106&topic=0002&glp там подробно написано какие настройки нужно сделать для того что бы работали мат. представления. у меня есть в электронном виде на русском языке, если примешь 10 метров то могу кинуть.
тебе нужно юзать пакет dbms_job, в этом форуме не однократно эта тема поднималась, инфы навалом. Добавлено через 2 минуты и 2 секунды вот: http://forum.vingrad.ru/forum/topic-142949/kw-matview-refresh/hl/dbms_job/index.html Добавлено через 3 минуты и 10 секунд http://forum.vingrad.ru/forum/topic-120867/hl/dbms_job/index.html Добавлено через 4 минуты и 13 секунд http://forum.vingrad.ru/forum/topic-116234/hl/dbms_job/index.html |
Автор: Petro123 18.7.2007, 06:59 | ||
Спасибо за ссылки Двухтомник Тома Кайта у меня есть, спасибо Добавлено через 1 минуту и 32 секунды
Как? Табл пространство делал так create tablespace my_tablespace datafile 'D:\...\Sasha.DAT' size 10000M REUSE AUTOEXTEND ON NEXT 2M MAXSIZE UNLIMITED Что нужно добавить? |
Автор: Petro123 18.7.2007, 12:31 |
MAXSIZE UNLIMITED разве не то |
Автор: DimW 18.7.2007, 13:19 | ||
ты уверен что именно это пространство является временным? |
Автор: LSD 18.7.2007, 14:22 |
http://download.oracle.com/docs/cd/B10501_01/server.920/a96533/undo_temp.htm#18628 |
Автор: Petro123 18.7.2007, 15:19 | ||
Простите, не совсем понял, поясните пожалуйста поподробнее |
Автор: Petro123 18.7.2007, 16:08 |
Как увеличить максимальное число экстентов во временном сегменте раздела????? |
Автор: DimW 18.7.2007, 17:38 | ||||
у оракла есть ряд тайбелспайсов которые он использует по умолчанию: system, users, index, temp и т.д. так вот он и просит увеличить пространство во временном TS - temp, если конечно ты или кто то не переопределил его на другой. Добавлено через 7 минут и 41 секунду список своих TS можешь посмотреть так:
|
Автор: DimW 19.7.2007, 08:07 |
и почитай это: http://www.firststeps.ru/sql/oracle/r.php?119 и следуйщие шаги. |
Автор: Petro123 19.7.2007, 08:56 |
Короче я сделал следующее, Создал табл пространство create tablespace my_tablespace datafile 'D:\...\Sasha.DAT' size 10000M REUSE AUTOEXTEND ON NEXT 2M MAXSIZE UNLIMITED Затем создал польз и выделил ему квоту в созданном табл пространстве ALTER USER DUMMY IDENTIFIED BY DUMB DEFAULT TABLESPACE my_tablespace QUOTA 10000M ON my_tablespace Затем попытался под DUMMY создать мат представление в my_tablespace CREATE materialized view smcash2 PctFree 0 Tablespace My_tablespace Storage (initial 64k next 64k pctincrease 0) Build Immediate Refresh Force as SELECT * FROM table@baze В результате ошибка: -... максимальное число экстентов во временном сегменте раздела ...- Не могу понять при чем тут TEMP, разве мат представление создается не в my_tablespace. Да и шаг 121(как создавать табл пространство) перечитывал несколько раз, но если честно конструкции не совсем понял. На каком шаге я допустил ошибку и что нужно исправить? |
Автор: DimW 19.7.2007, 09:52 | ||
номер ошибки? |
Автор: Petro123 19.7.2007, 12:09 |
ошибка в строке 6: ORA-01630: max # экстентов исчерпано во временном сегменте раздела ORA-02063: предшествующий line из baze |
Автор: Petro123 20.7.2007, 15:15 |
Нет вариантов? |
Автор: DimW 23.7.2007, 07:24 |
вот: http://www.sql.ru/forum/actualthread.aspx?tid=36472&hl=ora+01630 http://www.sql.ru/forum/actualthread.aspx?tid=126869&hl=ora+01630 http://www.sql.ru/forum/actualthread.aspx?tid=175060&hl=ora+01630 пока все что нашел по этой ошибке. мнение DBA нужно, есть такие? |