Mi pregunta está relacionada con el significado de USUARIO en Oracle. Tenemos una base de datos con muchos usuarios, pero R1S contiene casi todas las tablas, secuencia, etc. Queremos cargar nuevos datos de tablas, pero también necesitamos actualizar los valores de secuencia para estar en fase con el datos de la tabla.

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

En el impdp he notado que las secuencias no se han actualizado porque ya existen. Queremos forzar la carga de este tipo de datos. Pensé en hacer un DROP USER R1S CASCADE;

Este USUARIO utilizado en el comando de colocación es un ESQUEMA . Con el comando DROP USER estamos eliminando el esquema llamado R1S.

Lo he dicho porque en la documentación de impdp veo que puedo forzar la importación del esquema:

SCHEMAS=R1S 

¿O el comando básico hará el mismo trabajo?

impdp xxxxxx/******** FULL=Y CONTENT=ALL directory=EXPLOIT_DUMP_DIR dumpfile=expdp_X.exp LOGFILE=impdp_X.log 
0
Jorge Vega Sánchez 25 sep. 2019 a las 18:13

1 respuesta

La mejor respuesta

En pocas palabras, schema = user + its objects (tablas, vistas, procedimientos, secuencias, ...) entonces, cuando drop user, todos sus objetos también se eliminan.

Si está satisfecho con el resto de los resultados de importación (es decir, las tablas se importaron correctamente), y si no hay tantas secuencias allí, tal vez sea más sencillo

  • recrear secuencias (drop + create), o
  • alter

Esas secuencias. La primera opción es fácil, mientras que la segunda requiere algunos comandos. Incrementarlo para que alcance el valor deseado, recuperarlo, restablecer el incremento a su valor anterior (1, por defecto). He aquí un ejemplo:

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>
1
Littlefoot 25 sep. 2019 a las 15:27