Как скопировать таблицу размером 110 ГБ с BLOB-объектами из одной схемы в другую в ORACLE - PullRequest
3 голосов
/ 12 мая 2010

У меня есть таблица, содержащая 110 ГБ в BLOB в одной схеме, и я хочу скопировать ее в другую схему в другую таблицу.

Я только хочу скопировать столбец исходной таблицы, поэтому я использую инструкцию UPDATE, но для копирования 3 ГБ данных требуется 2,5 часа.

Есть ли более быстрый способ сделать это?

Обновление:

Код, который я использую, очень прост:

update schema1.A a set blobA = (select blobB from schema2.B b where b.IDB = a.IDA);

ida и idb являются индексами.

Ответы [ 3 ]

1 голос
/ 12 мая 2010

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

0 голосов
/ 13 мая 2010

Я не знаю, автоматически ли Oracle увеличивает размер базы данных или нет. Если это так, увеличьте объем пространства, выделенного для базы данных, до объема, который вы собираетесь увеличить до запуска запроса.

Я знаю, что в SQL-сервере при настройке по умолчанию он автоматически выделяет дополнительные 10% размера базы данных при ее заполнении. Когда он заполняется, он останавливает все и перераспределяет еще 10%. При выполнении запросов, которые выполняют массовую загрузку данных, это может серьезно замедлить запрос.

Также, как указал Зендар, проверьте дисковый ввод-вывод. Если он имеет большую длину очереди, вы можете быть ограничены быстродействием дисков.

0 голосов
/ 12 мая 2010

Если вы используете Oracle 10 или 11, проверьте ADDM, чтобы увидеть, что вызывает проблемы. Вероятно, это проблема ввода-вывода или журнала транзакций.

Какой это тип дискового хранилища? Вы пытались скопировать 110 ГБ файл из одного места в другое на этой системе дисков? Сколько времени это займет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...