Como importar o Oracle (c) lob em outro espaço de tabela
-
20-09-2019 - |
Pergunta
Estou importando um despejo de banco de dados de uma instalação do Oracle 10G para outra. A fonte possui um layout com vários espaços de tabela. O destino possui um espaço de tabela padrão para o usuário em que estou importando o despejo.
Tudo funciona bem, para tabelas comuns. As tabelas são realocadas do espaço de tabela original para o padrão do usuário. O problema que estou enfrentando, várias tabelas contêm clobs com diretivas de armazenamento explícitas. Ou seja, eles nomeiam seu espaço de tabela de armazenamento. O comando IMP parece não conseguir realocar esses clobs para o espaço de tabela padrão do usuário.
Existe alguma opção de linha de comando oculta para o comando IMP realocar o armazenamento CLOB para o espaço de tabela padrão do usuário ou até mesmo um tabela de tabela de nome?
A mensagem de erro Oracle 959 se parece com o seguinte:
IMP-00017: Nachfolgende Anweisung war wegen Oracle-Fehler 959 erfolglos: "CREATE TABLE "IF_MDE_DATA_OUT" ("OID" NUMBER(10, 0) NOT NULL ENABLE, "CLIEN" "T_OID" NUMBER(10, 0) NOT NULL ENABLE, "TS_CREATE" TIMESTAMP (6) NOT NULL EN" "ABLE, "TS_UPDATE" TIMESTAMP (6) NOT NULL ENABLE, "OP_CREATE" VARCHAR2(30) N" "OT NULL ENABLE, "OP_UPDATE" VARCHAR2(30) NOT NULL ENABLE, "IDENTIFIER" VARC" "HAR2(50), "TRANSFERTYPE" VARCHAR2(20) NOT NULL ENABLE, "STORE" NUMBER(10, 0" "), "DATUM" DATE, "STATE" NUMBER(3, 0) NOT NULL ENABLE, "DATA_OLD" LONG RAW," " "SUPPLIER" NUMBER(10, 0), "BUYER" NUMBER(10, 0), "GOODS_OUT_IDS" VARCHAR2(" "4000), "CUSTOM_FIELD" VARCHAR2(50), "DATA_ARCHIVE" BLOB, "DATA" BLOB) PCTF" "REE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1" " FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "DATA32M" LOGGING NOCOMP" "RESS LOB ("DATA_ARCHIVE") STORE AS (TABLESPACE "DATA32M" ENABLE STORAGE IN" " ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 65536 FREELI" "STS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("DATA") STORE AS (TABLE" "SPACE "DATA32M" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGG" "ING STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAUL" "T))" IMP-00003: ORACLE-Fehler 959 aufgetreten ORA-00959: Tablespace 'DATA32M' nicht vorhanden
Solução
Você pode pré-criar a tabela usando os parâmetros de armazenamento necessária e definir a importação para ignorar erros.
Outras dicas
Como Karl, eu recomendo Datadump, mas use REMAP_TABLESPACE
Se você estiver usando dumps da bomba de dados, poderá experimentar a opção REMAP_SCHEMA para corrigir o espaço de tabela.