Сейчас я изучаю эту тему на уроке баз данных, и меня попросили экспортировать табличное пространство с помощью команды expdp
.
Это происходит только с табличными пространствами. Я попробовал выполнить перекачку данных таблицы, и все сработало нормально.
Я попробовал сделать это так:
expdp system/password@xe dumpfile = exportfile.dmp tablespaces = biblioteca
Но я получаю сообщение об ошибке:
ORA-31655: Для задания не выбраны объекты данных или метаданных
Табличное пространство существует, когда я выполняю запрос
SELECT tablespace_name FROM dba_tablespaces;
это показывает, что табличное пространство существует:
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
TSCARNET
tienda_tablespace
TBS_TIENDA
biblioteca
Но я действительно не понимаю, что я здесь делаю не так. Я думаю, также важно отметить, что табличное пространство не было создано в PDB. На моем занятии мы еще не затрагивали эту тему, поэтому просто используем параметры по умолчанию для установления соединения в Oracle SQL Developer.
Согласно выходным данным вашего запроса, имя вашего табличного пространства в словаре данных написано строчными буквами, что означает, что оно было создано с идентификатором в кавычках. Что обычно усложняет жизнь.
В документации есть раздел о параметрах экспорта data pump, который включает в себя:
Учет регистра при указании значений параметров
Для имен табличных пространств, имен схем, имен таблиц и т. д., которые вы вводите в качестве значений параметров, Oracle Data Pump по умолчанию изменяет значения, введенные в нижнем или смешанном регистре, на прописные. Например, если вы введете TABLE=hr.employees, оно изменится на TABLE=HR.EMPLOYEES. Чтобы сохранить регистр, необходимо заключить значение в кавычки. Например, TABLE="hr.employees" сохранит имя таблицы в нижнем регистре. Вводимое вами имя должно точно совпадать с именем, хранящимся в базе данных.
а в следующем разделе рассказывается о проблемах с кавычками в командной строке.
Итак, в зависимости от вашей операционной системы вам может потребоваться:
tablespaces=\"biblioteca\"
или
tablespaces='"biblioteca"'
или
tablespaces='\"biblioteca\"'
или какой-то другой вариант.
У вас возникнет та же проблема с экспортом tienda_tablespace
, поскольку он также написан строчными буквами, но с остальными это не потребуется. (Если вы создаете свои собственные табличные пространства и другие объекты, я бы рекомендовал полностью избегать использования идентификаторов в кавычках.)
Как также упоминалось в документации, немного проще использовать файл параметров, особенно когда приходится обрабатывать кавычки.
Огромное спасибо! Экспорт работал с использованием tablespaces='\"library\"'. Я обязательно учту ваш совет по поводу идентификаторов в кавычках. Еще раз большое спасибо!