Импортируйте все ссылки на базу данных с помощью dbms_datapump
-
29-09-2020 - |
Вопрос
Исходная версия базы данных:11.2.0.3
Целевая версия базы данных:12.1.0.2
Я пытаюсь импортировать все ссылки на базы данных из одной базы данных в другую, используя dbms_datapump.Код выполняется в указанной выше целевой базе данных и извлекает ссылки на базу данных из указанной выше исходной базы данных по ссылке на базу данных.
В прошлом я использовал dbms_datapump.metadata_filter только для импорта определенных объектов (например, функций или процедур).Однако следующее возвращает ORA-39001:недопустимое значение аргумента:
dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINK'')');
Поэтому я попробовал версию во множественном числе, которая также вернула ORA-39001:
dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINKS'')');
Я знаю, что, должно быть, я упускаю здесь что-то основное, но поиск по этой проблеме раздражал, поскольку результаты поиска с "dbms_datapump" и "ссылка на базу данных" в одном и том же поиске возвращали результаты только с указанием того, как импортировать по ссылке на базу данных, а не как импортировать ссылки на базу данных напрямую.
Раньше я мог импортировать ссылки на базу данных напрямую, используя:
select DBMS_LOB.SUBSTR@dblinkimp(DBMS_METADATA.GET_DDL@dblinkimp
('DB_LINK', '[DBlinkName]', '[SchemaName]')) from dual@dblinkimp;
Затем я бы запустил вывод из приведенного выше оператора, используя execute immediate, но это больше недопустимый параметр, начиная с версии 11.2.0.4 (см. Metalink Doc ID 1905221.1).
Решение
Это не DATABASE LINK
или DATABASE LINKS
, это DB_LINK
.Вы можете найти допустимые значения в DATABASE_EXPORT_OBJECTS
, SCHEMA_EXPORT_OBJECTS
и TABLE_EXPORT_OBJECTS
.