Поставщик верен - утилита, использованная для генерации экспорта, EXPDP
(комплимент IMPDP
) может создать полный дамп всех объектов базы данных конкретного пользователя. Однако параметры, используемые для генерации экспорта, могут сильно различаться, и экспорт может абсолютно не включать данные таблицы IF команда / параметры EXPDP
, используемые для создания экспорта, указываются таким образом. Например, давайте представим, что кто-то хочет экспортировать конкретную схему, используя следующую команду:
expdp [USER]@[DATABASE] schemas=test directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log query=TEST.TABLE:'"WHERE row_date>sysdate"'
Пока генерируется экспорт, все строки в этой конкретной таблице будут оцениваться на основе условия where. Если в строках не указана дата в будущем, ни одна из строк, датированных до и до sysdate, не экспортируется Если подобное условие применяется ко всему экспорту, в файле дампа будут таблицы с 0 строками.
Это всего лишь пример - это также может быть случай, когда таблицы действительно имеют 0 строк. Это возможно по многим причинам - возможно, это более старая схема с таблицами, которые ранее были усечены. Возможно, эта конкретная база данных используется не часто, и таблицы в схеме пусты, потому что строки никогда не добавлялись в таблицы. Может быть, разработчик или другой администратор баз данных создал кучу ненужных таблиц, и они просто никогда не удалялись. Это может быть множество потенциальных причин / проблем для схемы иметь пустые таблицы, и это не значит, что что-то не так с базой данных или сгенерированным файлом экспорта. Приложения и их технические требования постоянно меняются, и, возможно, схема просто не обновлялась, когда эти таблицы больше не нужны.
Первое, что я бы порекомендовал, это:
- Попросите поставщика предоставить количество записей каждой таблицы в этой схеме с их конца для целей проверки. Это скажет вам, если таблицы являются пустыми в базе данных. Если они пусты в базе данных, они будут пустыми в вашем экспорте. Это очень просто и может быть достигнуто с помощью запроса типа
select owner, table_name, num_rows, sample_size, last_analyzed from all_tables where owner=[SCHEMA];
, при условии, что статистика их таблиц обновлена.
Если это вас беспокоит, вы всегда можете попросить их исключить эти таблицы при экспорте с помощью команды вроде:
expdp [USER]@[DATABASE] schemas=test exclude=TABLE:"IN ('Table1', 'Table2')" directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log
Или просто исключите их во время импорта с помощью команды вроде:
impdp [USER]@[DATABASE] schemas=test exclude=TABLE:"IN ('Table1', 'Table2')" directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log
В любом случае должен работать, но будьте осторожны и убедитесь, что не будет проблем с точки зрения ограничений / дочерних записей. Вы также можете исключить ограничения. Есть много способов обойти это.
Если существуют несоответствия между счетами и импортированными строками , я бы порекомендовал обратиться к поставщику с просьбой указать конкретный файл команды или параметра EXPDP
, который использовался для генерации экспорта. Это позволит вам узнать, вызваны ли пустые строки предложением в команде экспорта.
- Невозможно узнать, верно ли ваше предположение, не зная больше о базе данных, из которой идет экспорт, или не увидев команды, используемые для генерации экспорта. Я бы попросил продавца проверить количество записей, прежде чем предположить, что это проблема с разрешениями. Пустые таблицы создаются постоянно.