Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как скопировать таблицу без использования exp, imp? / 19 сообщений из 19, страница 1 из 1
03.06.2003, 13:52:57
    #32175134
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Приветствую!
Проблема в следующем - в БД существуют 2 юзера, имеющих практически идентичный набор таблиц (с той разницей, что у одного из них могут отсутствовать некоторые таблицы, присутствующие у второго). Вопрос следующий - можно ли организовать копирование недостающих таблиц от одного юзера ко второму без использования exp, imp? Использование указанных утилит нежелательно, потому что данный алгоритм будет вызываться из программы (возможно, существенное количество раз) и отрицательно скажется на ее быстродействии.
...
Рейтинг: 0 / 0
03.06.2003, 13:55:18
    #32175137
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
"CREATE AS SELECT" тут не подходит, потому что в этом случае новая таблица создастся без индексов, которые также нужно скопировать.
...
Рейтинг: 0 / 0
03.06.2003, 14:18:02
    #32175168
MaxU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
м-да!

с дизайном у вас явные проблемы, ну да ладно...

> и отрицательно скажется на ее быстродействии
быстрее exp/imp в вашем случае вы врядли что-нибудь выдумаете

а можно спросить для чего такое надо?
...
Рейтинг: 0 / 0
03.06.2003, 14:25:34
    #32175181
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
> м-да!
> с дизайном у вас явные проблемы, ну да ладно...
Почему? :)

> > и отрицательно скажется на ее быстродействии
> быстрее exp/imp в вашем случае вы врядли что-нибудь выдумаете
Жаль :( Хотя на всякий случай уточню, что тут имеется в виду не быстродействие самих утилит, а именно потеря времени на самом вызове exe-шников в программе. Интерфейс к БД реализован через OCI, и хочется найти возможность реализовать аналогичный функционал без необходимости вызова "внешних программ".

> а можно спросить для чего такое надо?
Долго объяснять :) Вкратце - программа представляет из себя инструментальное средство по запуску скриптов обновления БД (это не мной придумано :), такие требования). Проблема появилась из-за того, что скрипты обновления используют двух юзеров для получения и обработки данных и "рассчитывают" на то, что состав необходимых для их работы таблиц идентичен у обоих. Моя задача в данном случае - обеспечить эту "идентичность".
...
Рейтинг: 0 / 0
03.06.2003, 14:44:00
    #32175218
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Создать структуру таблиц у обоих пользователей с индексами.
Данные перебрасывать через:
INSERT /*+APPEND */ INTO <user2.table1> SELECT * FROM <user1.table1>;
...
Рейтинг: 0 / 0
03.06.2003, 14:51:09
    #32175231
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
2softbuilder:
Меня как раз наиболее волнует первый пункт - универсальный алгоритм (на момент запуска неизвестно, какие именно таблицы придется обрабатывать) создания копии (не обязательно заполненной данными) таблицы с сохранением индексов. Данные-то перебросить уже не проблема...
...
Рейтинг: 0 / 0
03.06.2003, 15:01:22
    #32175259
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
У тебя нет скриптов создания таблиц?
...
Рейтинг: 0 / 0
03.06.2003, 15:06:07
    #32175269
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Нет :(
...
Рейтинг: 0 / 0
03.06.2003, 16:11:23
    #32175361
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Значит сам скрипт составь из определения в словаре данных
...
Рейтинг: 0 / 0
03.06.2003, 16:34:51
    #32175410
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
А можно поподробнее? Я в этом вопросе не очень шарю: что конкретно нужно сделать, чтобы получить скрипт создания существующей таблицы? Или может ссылку какие есть, почитать на эту тему?
...
Рейтинг: 0 / 0
03.06.2003, 16:38:42
    #32175423
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Тебе нужно проанализировать вью описания таблиц, индексов, ограничений:
dba_tables,
dba_tab_columns,
dba_indexes,
dba_ind_columns,
dba_constraints,
dba_cons_columns
...
Рейтинг: 0 / 0
03.06.2003, 16:39:55
    #32175425
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Проанализировать не с точки зрения Oracle, а с точки зрения исследования структуры через вью.
...
Рейтинг: 0 / 0
03.06.2003, 16:41:46
    #32175427
RedPank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
2 Le
У тебя DBA Studio есть ?

Кликаешь правой клавишей мышы на объекте и выбираешь Show Object DDL
...
Рейтинг: 0 / 0
03.06.2003, 17:00:37
    #32175457
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
2 Softbuilder:
М-да... понятно. Нехилое выходит мероприятие... 8(( Была надежда на то, что на эту тему существуют какие-то вспомогательные средства, чтобы как раз "не опускаться" до разбора структуры по всем составляющим и составления скрипта на этой основе...
2 RedPank:
Проблема не в том, чтобы самому узнать скрипт создания таблицы, а в том, чтобы по наличию таблицы в БД сгенерировать его программным образом... Разве что научить прогу заходить в DBA Studio и щелкать правой клавишей мыши...
...
Рейтинг: 0 / 0
03.06.2003, 17:03:26
    #32175461
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Как это лучше сделать. Я бы сделал так:
включил бы трассировку, потом действительно зашёл бы в прогу типа DBA Studio и сделал бы просмотр структуры. А потом в трейсе посмотрел бы последовательность запросов.
...
Рейтинг: 0 / 0
03.06.2003, 17:36:17
    #32175519
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
Сэнкс, буду разбираться...
...
Рейтинг: 0 / 0
03.06.2003, 23:07:55
    #32175713
MaxU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
какая версия сервера?

если девятка, то почитай о "dbms_metadata"
...
Рейтинг: 0 / 0
04.06.2003, 15:37:20
    #32176440
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
> какая версия сервера?
> если девятка,
Она самая, 9.2

> то почитай о "dbms_metadata"
Впервые слышу - а где это можно почитать (в смысле, какой раздел документации)?..
...
Рейтинг: 0 / 0
04.06.2003, 18:44:06
    #32176750
Le
Le
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать таблицу без использования exp, imp?
О, шикарная штука! 8) Спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как скопировать таблицу без использования exp, imp? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]