Заменить все объекты USER в базе данных - PullRequest
0 голосов
/ 25 сентября 2019

Мой вопрос связан со значением USER в Oracle.У нас есть база данных со многими пользователями, но R1S содержит почти все таблицы, последовательности и т. Д. Мы хотим загрузить новые данные таблиц, но нам также необходимо обновить значения последовательности, чтобы они были в фазе с таблицейданные.

ORA-31684: Object type USER:"R1S" already exists
ORA-31684: Object type SEQUENCE:"R1S"."RS2QNUNI" already exists
. . imported "R1S"."RSCIN"                            13.16 MB  150346 rows

в impdp Я заметил, что последовательности не были обновлены, потому что они уже существуют.Мы хотим форсировать загрузку таких данных.Я думал, что делать DROP USER R1S CASCADE;

Этот пользователь, используемый в команде сброса, является SCHEMA .С помощью команды DROP USER мы удаляем схему с именем R1S.

Я сказал это, потому что в документации по impdp я вижу, что могу принудительно импортировать schme:

SCHEMAS=R1S 

Или основная команда будет выполнять ту же работу?

impdp xxxxxx/******** FULL=Y CONTENT=ALL directory=EXPLOIT_DUMP_DIR dumpfile=expdp_X.exp LOGFILE=impdp_X.log 

1 Ответ

1 голос
/ 25 сентября 2019

Проще говоря, schema = user + its objects (таблицы, представления, процедуры, последовательности, ...), поэтому - когда вы drop user, все его объекты также отбрасываются.

Если вас устраивают остальныерезультатов импорта (т.е. таблицы импортируются правильно), и если там не так много последовательностей, возможно, было бы проще

  • воссоздать последовательности (drop + create) или
  • alter

эти последовательности.Первый вариант прост, а второй требует нескольких команд.Увеличьте его так, чтобы оно достигло желаемого значения, извлеките его, сбросьте приращение к своему предыдущему значению (1, по умолчанию).Вот пример:

SQL> select s.nextval from dual;

   NEXTVAL
----------
     15028

SQL> alter sequence s increment by 100000;

Sequence altered.

SQL> select s.nextval from dual;

   NEXTVAL
----------
    115028

SQL> alter sequence s increment by 1;

Sequence altered.

SQL> select s.nextval from dual;

   NEXTVAL
----------
    115029

SQL> select s.nextval from dual;

   NEXTVAL
----------
    115030

SQL>
...